This is an automated email from the ASF dual-hosted git repository.
zihanli58 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/gobblin.git
The following commit(s) were added to refs/heads/master by this push:
new 2600fa606 [GOBBLIN-1908] Fix Date to Milliseconds Conversion to Use
UTC (#3772)
2600fa606 is described below
commit 2600fa60691156eec6881ecc6db140fa4c49bb92
Author: umustafi <[email protected]>
AuthorDate: Thu Sep 14 17:34:29 2023 -0700
[GOBBLIN-1908] Fix Date to Milliseconds Conversion to Use UTC (#3772)
* Correct conversion to milliseconds for UTC Date
* rename local TZ trigger times
---------
Co-authored-by: Urmi Mustafi <[email protected]>
---
.../modules/orchestration/FlowTriggerHandler.java | 2 +-
.../scheduler/GobblinServiceJobScheduler.java | 27 ++++++++++++++++------
2 files changed, 21 insertions(+), 8 deletions(-)
diff --git
a/gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/FlowTriggerHandler.java
b/gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/FlowTriggerHandler.java
index 032d43e3d..dc8689d56 100644
---
a/gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/FlowTriggerHandler.java
+++
b/gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/FlowTriggerHandler.java
@@ -311,6 +311,6 @@ public class FlowTriggerHandler {
protected static long getUTCTimeFromDelayPeriod(long delayPeriodMillis) {
LocalDateTime localDateTime =
getLocalDateTimeFromDelayPeriod(delayPeriodMillis);
Date date = Date.from(localDateTime.atZone(ZoneId.of("UTC")).toInstant());
- return GobblinServiceJobScheduler.asUTCEpochMillis(date);
+ return GobblinServiceJobScheduler.utcDateAsUTCEpochMillis(date);
}
}
diff --git
a/gobblin-service/src/main/java/org/apache/gobblin/service/modules/scheduler/GobblinServiceJobScheduler.java
b/gobblin-service/src/main/java/org/apache/gobblin/service/modules/scheduler/GobblinServiceJobScheduler.java
index b773e8c20..d92170697 100644
---
a/gobblin-service/src/main/java/org/apache/gobblin/service/modules/scheduler/GobblinServiceJobScheduler.java
+++
b/gobblin-service/src/main/java/org/apache/gobblin/service/modules/scheduler/GobblinServiceJobScheduler.java
@@ -466,8 +466,9 @@ public class GobblinServiceJobScheduler extends
JobScheduler implements SpecCata
@Override
protected void logNewlyScheduledJob(JobDetail job, Trigger trigger) {
Properties jobProps = (Properties) job.getJobDataMap().get(PROPERTIES_KEY);
- log.info(jobSchedulerTracePrefixBuilder(jobProps) + "nextTriggerTime: {} -
Job newly scheduled",
- asUTCEpochMillis(trigger.getNextFireTime()));
+ log.info(jobSchedulerTracePrefixBuilder(jobProps) + "nextTriggerTime: {}
localTZNextTriggerTime:{} - Job newly "
+ + "scheduled", utcDateAsUTCEpochMillis(trigger.getNextFireTime()),
+ systemDefaultZoneDateAsUTCEpochMillis(trigger.getNextFireTime()));
}
protected static String jobSchedulerTracePrefixBuilder(Properties jobProps) {
@@ -477,15 +478,24 @@ public class GobblinServiceJobScheduler extends
JobScheduler implements SpecCata
}
/**
- * Takes a given Date object and converts the timezone to UTC before
returning the number of millseconds since epoch
+ * Takes a Date object in system default time zone, converts it to UTC
before returning the number of milliseconds
+ * since epoch
* @param date
*/
- public static long asUTCEpochMillis(Date date) {
+ public static long systemDefaultZoneDateAsUTCEpochMillis(Date date) {
return ZonedDateTime.of(
LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()),
ZoneOffset.UTC).toInstant().toEpochMilli();
}
+ /**
+ * Takes a Date object in UTC and returns the number of milliseconds since
epoch
+ * @param date
+ */
+ public static long utcDateAsUTCEpochMillis(Date date) {
+ return date.toInstant().toEpochMilli();
+ }
+
@Override
public void runJob(Properties jobProps, JobListener jobListener) throws
JobException {
try {
@@ -743,7 +753,8 @@ public class GobblinServiceJobScheduler extends
JobScheduler implements SpecCata
// Obtain trigger timestamp from trigger to pass to jobProps
Trigger trigger = context.getTrigger();
// THIS current event has already fired if this method is called, so
it now exists in <previousFireTime>
- long triggerTimeMillis =
asUTCEpochMillis(trigger.getPreviousFireTime());
+ long triggerTimeMillis =
utcDateAsUTCEpochMillis(trigger.getPreviousFireTime());
+ long localTZTriggerTimeMillis =
systemDefaultZoneDateAsUTCEpochMillis(trigger.getPreviousFireTime());
// If the trigger is a reminder type event then utilize the trigger
time saved in job properties rather than the
// actual firing time
if (jobDetail.getKey().getName().contains("reminder")) {
@@ -758,8 +769,10 @@ public class GobblinServiceJobScheduler extends
JobScheduler implements SpecCata
} else {
jobProps.setProperty(ConfigurationKeys.ORCHESTRATOR_TRIGGER_EVENT_TIME_MILLIS_KEY,
String.valueOf(triggerTimeMillis));
- _log.info(jobSchedulerTracePrefixBuilder(jobProps) + "triggerTime:
{} nextTriggerTime: {} - Job triggered by "
- + "scheduler", triggerTimeMillis,
asUTCEpochMillis(trigger.getNextFireTime()));
+ _log.info(jobSchedulerTracePrefixBuilder(jobProps) + "triggerTime:
{} nextTriggerTime: {} "
+ + "localTZTriggerTime: {} localTZNextTriggerTime: {}- Job
triggered by scheduler", triggerTimeMillis,
+ utcDateAsUTCEpochMillis(trigger.getNextFireTime()),
localTZTriggerTimeMillis,
+
systemDefaultZoneDateAsUTCEpochMillis(trigger.getNextFireTime()));
}
jobScheduler.runJob(jobProps, jobListener);
} catch (Throwable t) {