
gobblin.metrics.event.TimingEvent Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gobblin-metrics Show documentation
Show all versions of gobblin-metrics Show documentation
Gobblin Ingestion Framework
The newest version!
/*
* Copyright (C) 2014-2016 LinkedIn Corp. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the
* License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied.
*/
package gobblin.metrics.event;
import java.util.Map;
import com.google.common.collect.Maps;
/**
* Event to time actions in the program. Automatically reports start time, end time, and duration from the time
* the {@link gobblin.metrics.event.TimingEvent} was created to the time {@link #stop} is called.
*/
public class TimingEvent {
public static class LauncherTimings {
public static final String FULL_JOB_EXECUTION = "FullJobExecutionTimer";
public static final String WORK_UNITS_CREATION = "WorkUnitsCreationTimer";
public static final String WORK_UNITS_PREPARATION = "WorkUnitsPreparationTimer";
public static final String JOB_PREPARE = "JobPrepareTimer";
public static final String JOB_START = "JobStartTimer";
public static final String JOB_RUN = "JobRunTimer";
public static final String JOB_COMMIT = "JobCommitTimer";
public static final String JOB_CLEANUP = "JobCleanupTimer";
public static final String JOB_CANCEL = "JobCancelTimer";
public static final String JOB_COMPLETE = "JobCompleteTimer";
public static final String JOB_FAILED = "JobFailedTimer";
}
public static class RunJobTimings {
public static final String JOB_LOCAL_SETUP = "JobLocalSetupTimer";
public static final String WORK_UNITS_RUN = "WorkUnitsRunTimer";
public static final String WORK_UNITS_PREPARATION = "WorkUnitsPreparationTimer";
public static final String MR_STAGING_DATA_CLEAN = "JobMrStagingDataCleanTimer";
public static final String MR_DISTRIBUTED_CACHE_SETUP = "JobMrDistributedCacheSetupTimer";
public static final String MR_JOB_SETUP = "JobMrSetupTimer";
public static final String MR_JOB_RUN = "JobMrRunTimer";
public static final String HELIX_JOB_SUBMISSION= "JobHelixSubmissionTimer";
public static final String HELIX_JOB_RUN = "JobHelixRunTimer";
}
public static final String METADATA_START_TIME = "startTime";
public static final String METADATA_END_TIME = "endTime";
public static final String METADATA_DURATION = "durationMillis";
public static final String METADATA_TIMING_EVENT = "timingEvent";
private final String name;
private final Long startTime;
private final EventSubmitter submitter;
private boolean stopped;
public TimingEvent(EventSubmitter submitter, String name) {
this.stopped = false;
this.name = name;
this.submitter = submitter;
this.startTime = System.currentTimeMillis();
}
/**
* Stop the timer and submit the event. If the timer was already stopped before, this is a no-op.
*/
public void stop() {
stop(Maps. newHashMap());
}
/**
* Stop the timer and submit the event, along with the additional metadata specified. If the timer was already stopped
* before, this is a no-op.
*
* @param additionalMetadata a {@link Map} of additional metadata that should be submitted along with this event
*/
public void stop(Map additionalMetadata) {
if (this.stopped) {
return;
}
this.stopped = true;
long endTime = System.currentTimeMillis();
long duration = endTime - this.startTime;
Map finalMetadata = Maps.newHashMap();
finalMetadata.putAll(additionalMetadata);
finalMetadata.put(EventSubmitter.EVENT_TYPE, METADATA_TIMING_EVENT);
finalMetadata.put(METADATA_START_TIME, Long.toString(this.startTime));
finalMetadata.put(METADATA_END_TIME, Long.toString(endTime));
finalMetadata.put(METADATA_DURATION, Long.toString(duration));
this.submitter.submit(this.name, finalMetadata);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy