@Override public void onMetadataChange(JobExecutionState state, String key, Object oldValue, Object newValue) { super.onMetadataChange(state, key, oldValue, newValue); _callbacksDispatcher.onMetadataChange(state, key, oldValue, newValue); }
@Override public void registerJobLifecycleListener(JobLifecycleListener listener) { _callbacksDispatcher.registerJobLifecycleListener(listener); }
@Override public void registerWeakJobLifecycleListener(JobLifecycleListener listener) { _callbacksDispatcher.registerWeakJobLifecycleListener(listener); }
@Test public void testHappyPath() { Logger log = LoggerFactory.getLogger("testHappyPath"); JobCatalogListenersContainer jobCatalog = mock(JobCatalogListenersContainer.class); JobSpecSchedulerListenersContainer jobScheduler = mock(JobSpecSchedulerListenersContainer.class); JobExecutionDriver mockDriver = mock(JobExecutionDriver.class); JobExecutionState mockState = mock(JobExecutionState.class); JobLifecycleListener listener1 = mock(JobLifecycleListener.class); JobLifecycleListener listener2 = mock(JobLifecycleListener.class); JobLifecycleListenersList disp = new JobLifecycleListenersList(jobCatalog, jobScheduler, log); disp.registerJobLifecycleListener(listener1); disp.onJobLaunch(mockDriver); disp.registerWeakJobLifecycleListener(listener2); disp.onMetadataChange(mockState, "key", "oldValue", "newValue"); verify(jobCatalog).addListener(eq(listener1)); verify(jobScheduler).registerJobSpecSchedulerListener(eq(listener1)); verify(listener1).onJobLaunch(eq(mockDriver)); verify(listener2, never()).onJobLaunch(eq(mockDriver)); verify(jobCatalog).registerWeakJobCatalogListener(eq(listener2)); verify(jobScheduler).registerWeakJobSpecSchedulerListener(eq(listener2)); verify(listener1).onMetadataChange(eq(mockState), eq("key"), eq("oldValue"), eq("newValue")); verify(listener2).onMetadataChange(eq(mockState), eq("key"), eq("oldValue"), eq("newValue")); }
@Override public void run() { try { JobExecutionMonitor monitor = _jobLauncher.launchJob(new ResolvedJobSpec(_jobSpec, _instanceDriver)); if (!(monitor instanceof JobLauncherExecutionDriver.JobExecutionMonitorAndDriver)) { throw new UnsupportedOperationException(JobLauncherExecutionDriver.JobExecutionMonitorAndDriver.class.getName() + " is expected."); } JobExecutionDriver driver = ((JobLauncherExecutionDriver.JobExecutionMonitorAndDriver) monitor).getDriver(); _callbacksDispatcher.onJobLaunch(driver); driver.registerStateListener(new JobStateTracker()); ExecutorsUtils.newThreadFactory(Optional.of(_log), Optional.of("gobblin-instance-driver")).newThread(driver).start(); } catch (Throwable t) { _log.error("Job launch failed: " + t, t); } } }
public DefaultGobblinInstanceDriverImpl(String instanceName, Configurable sysConfig, JobCatalog jobCatalog, JobSpecScheduler jobScheduler, JobExecutionLauncher jobLauncher, Optional<MetricContext> baseMetricContext, Optional<Logger> log, SharedResourcesBroker<GobblinScopeTypes> instanceBroker) { Preconditions.checkNotNull(jobCatalog); Preconditions.checkNotNull(jobScheduler); Preconditions.checkNotNull(jobLauncher); Preconditions.checkNotNull(sysConfig); _instanceName = instanceName; _log = log.or(LoggerFactory.getLogger(getClass())); _metricCtx = baseMetricContext.or(constructMetricContext(sysConfig, _log)); _instrumentationEnabled = null != _metricCtx && GobblinMetrics.isEnabled(sysConfig.getConfig()); _jobCatalog = jobCatalog; _jobScheduler = jobScheduler; _jobLauncher = jobLauncher; _sysConfig = sysConfig; _instanceCfg = ConfigAccessor.createFromGlobalConfig(_sysConfig.getConfig()); _callbacksDispatcher = new JobLifecycleListenersList(_jobCatalog, _jobScheduler, _log); _instanceBroker = instanceBroker; _metrics = new StandardMetrics(this); }
@Override protected void shutDown() throws Exception { getLog().info("Default driver: shuttind down ..."); if (null != _jobSpecListener) { _jobCatalog.removeListener(_jobSpecListener); } _callbacksDispatcher.close(); getLog().info("Default driver: shut down."); }
@Override public void onStageTransition(JobExecutionState state, String previousStage, String newStage) { super.onStageTransition(state, previousStage, newStage); _callbacksDispatcher.onStageTransition(state, previousStage, newStage); }
@Override public List<JobLifecycleListener> getJobLifecycleListeners() { return _callbacksDispatcher.getJobLifecycleListeners(); }
@Override public void unregisterJobLifecycleListener(JobLifecycleListener listener) { _callbacksDispatcher.unregisterJobLifecycleListener(listener); }
@Override public void onStatusChange(JobExecutionState state, RunningState previousStatus, RunningState newStatus) { super.onStatusChange(state, previousStatus, newStatus); _callbacksDispatcher.onStatusChange(state, previousStatus, newStatus); }
@Override public void run() { try { JobExecutionMonitor monitor = _jobLauncher.launchJob(new ResolvedJobSpec(_jobSpec, _instanceDriver)); if (!(monitor instanceof JobLauncherExecutionDriver.JobExecutionMonitorAndDriver)) { throw new UnsupportedOperationException(JobLauncherExecutionDriver.JobExecutionMonitorAndDriver.class.getName() + " is expected."); } JobExecutionDriver driver = ((JobLauncherExecutionDriver.JobExecutionMonitorAndDriver) monitor).getDriver(); _callbacksDispatcher.onJobLaunch(driver); driver.registerStateListener(new JobStateTracker()); ExecutorsUtils.newThreadFactory(Optional.of(_log), Optional.of("gobblin-instance-driver")).newThread(driver).start(); } catch (Throwable t) { _log.error("Job launch failed: " + t, t); } } }
public DefaultGobblinInstanceDriverImpl(String instanceName, Configurable sysConfig, JobCatalog jobCatalog, JobSpecScheduler jobScheduler, JobExecutionLauncher jobLauncher, Optional<MetricContext> baseMetricContext, Optional<Logger> log, SharedResourcesBroker<GobblinScopeTypes> instanceBroker) { Preconditions.checkNotNull(jobCatalog); Preconditions.checkNotNull(jobScheduler); Preconditions.checkNotNull(jobLauncher); Preconditions.checkNotNull(sysConfig); _instanceName = instanceName; _log = log.or(LoggerFactory.getLogger(getClass())); _metricCtx = baseMetricContext.or(constructMetricContext(sysConfig, _log)); _instrumentationEnabled = null != _metricCtx && GobblinMetrics.isEnabled(sysConfig.getConfig()); _jobCatalog = jobCatalog; _jobScheduler = jobScheduler; _jobLauncher = jobLauncher; _sysConfig = sysConfig; _instanceCfg = ConfigAccessor.createFromGlobalConfig(_sysConfig.getConfig()); _callbacksDispatcher = new JobLifecycleListenersList(_jobCatalog, _jobScheduler, _log); _instanceBroker = instanceBroker; _metrics = new StandardMetrics(this); }
@Override protected void shutDown() throws Exception { getLog().info("Default driver: shuttind down ..."); if (null != _jobSpecListener) { _jobCatalog.removeListener(_jobSpecListener); } _callbacksDispatcher.close(); getLog().info("Default driver: shut down."); }
@Override public void onStageTransition(JobExecutionState state, String previousStage, String newStage) { super.onStageTransition(state, previousStage, newStage); _callbacksDispatcher.onStageTransition(state, previousStage, newStage); }
@Override public List<JobLifecycleListener> getJobLifecycleListeners() { return _callbacksDispatcher.getJobLifecycleListeners(); }
@Override public void unregisterJobLifecycleListener(JobLifecycleListener listener) { _callbacksDispatcher.unregisterJobLifecycleListener(listener); }
@Override public void onStatusChange(JobExecutionState state, RunningState previousStatus, RunningState newStatus) { super.onStatusChange(state, previousStatus, newStatus); _callbacksDispatcher.onStatusChange(state, previousStatus, newStatus); }
@Override public void onMetadataChange(JobExecutionState state, String key, Object oldValue, Object newValue) { super.onMetadataChange(state, key, oldValue, newValue); _callbacksDispatcher.onMetadataChange(state, key, oldValue, newValue); }
@Override public void registerJobLifecycleListener(JobLifecycleListener listener) { _callbacksDispatcher.registerJobLifecycleListener(listener); }