private boolean lockDag(@NotEmpty final String jobName, @NotEmpty final String dagName) { final String key = LockManager.getLockKey(DAG_LOCK_KEY, dagName); final TimerMetric timerMetric = new TimerMetric(JobMetricNames.JOB_DAG_LOCK_TIME_MS, ImmutableMap.of( JOB_FREQUENCY_TAG, jobFrequency, JOB_NAME_TAG, jobName, DATA_FEED_TAG, dagName)); final boolean success = lockManager.lock(key, String.format("JobDag %s AppId %s", dagName, appId)); timerMetric.stop(); dagTimerMetricMap.put(dagName, timerMetric); return success; }
private JobLockManager(@NonNull final Configuration conf, @NotEmpty final String frequency, final boolean shouldLockFrequency) { this.lockManager = new LockManager(conf); this.jobFrequency = frequency; final String key = LockManager.getLockKey(MANAGER_LOCK_KEY, jobFrequency); this.managerTimerMetric = new TimerMetric(JobMetricNames.JOB_MANAGER_LOCK_TIME_MS, ImmutableMap.of(JOB_FREQUENCY_TAG, jobFrequency, JOB_NAME_TAG, appName)); if (shouldLockFrequency) { final boolean success = lockManager.lock(key, String.format("JobManager %s AppId %s", jobFrequency, appId)); this.managerTimerMetric.stop(); if (!success) { lockManager.close(); throw new IllegalStateException("Failed to obtain lock for JobManager " + jobFrequency); } } else { managerTimerMetric.stop(); log.info("Frequency lock disabled"); } this.dagTimerMetricMap = new HashMap<>(); }
} finally { timerMetric.stop(); reportStatus(successful.get()); if (getJobManagerMetadata() != null && successful.get()) {
@Test public void testGetMetricValueSuccess() throws InterruptedException { Thread.sleep(SLEEP_TIME); this.timerMetric.stop(); long diff = this.timerMetric.getMetricValue() - SLEEP_TIME; assertTrue(diff < THRESHOLD); }