diff --git a/delfin/common/config.py b/delfin/common/config.py index 9d88c5501..df875273f 100644 --- a/delfin/common/config.py +++ b/delfin/common/config.py @@ -119,6 +119,11 @@ .DEF_PERFORMANCE_HISTORY_ON_RESCHEDULE, help='default history(in sec) to be collected on a job ' 'reschedule'), + cfg.IntOpt('performance_timestamp_overlap', + default=constants.TelemetryCollection + .DEF_PERFORMANCE_TIMESTAMP_OVERLAP, + help='default overlap to be added on start_time in sec ' + ), cfg.IntOpt('max_failed_task_retry_window', default=constants.TelemetryCollection .MAX_FAILED_TASK_RETRY_WINDOW, diff --git a/delfin/common/constants.py b/delfin/common/constants.py index aff6e6e81..329ac2228 100644 --- a/delfin/common/constants.py +++ b/delfin/common/constants.py @@ -404,6 +404,7 @@ class TelemetryCollection(object): """Default performance collection interval""" DEF_PERFORMANCE_COLLECTION_INTERVAL = 900 DEF_PERFORMANCE_HISTORY_ON_RESCHEDULE = 1800 + DEF_PERFORMANCE_TIMESTAMP_OVERLAP = 60 """Maximum failed task retry window in seconds""" MAX_FAILED_TASK_RETRY_WINDOW = 7200 diff --git a/delfin/task_manager/scheduler/schedulers/telemetry/performance_collection_handler.py b/delfin/task_manager/scheduler/schedulers/telemetry/performance_collection_handler.py index 39b7fc40a..039ea896d 100644 --- a/delfin/task_manager/scheduler/schedulers/telemetry/performance_collection_handler.py +++ b/delfin/task_manager/scheduler/schedulers/telemetry/performance_collection_handler.py @@ -16,6 +16,8 @@ import six from oslo_config import cfg + + from oslo_log import log from delfin import db @@ -30,6 +32,7 @@ FailedPerformanceCollectionHandler from delfin.task_manager.tasks.telemetry import PerformanceCollectionTask +CONF = cfg.CONF LOG = log.getLogger(__name__) CONF = cfg.CONF @@ -78,8 +81,10 @@ def __call__(self): current_time = int(datetime.now().timestamp()) # Times are epoch time in milliseconds + overlap = CONF.telemetry. \ + performance_timestamp_overlap end_time = current_time * 1000 - start_time = end_time - (self.interval * 1000) + start_time = end_time - (self.interval * 1000) - (overlap * 1000) telemetry = PerformanceCollectionTask() status = telemetry.collect(self.ctx, self.storage_id, self.args, start_time, end_time)