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) {

Reply via email to