You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@gobblin.apache.org by "phet (via GitHub)" <gi...@apache.org> on 2023/08/25 05:56:32 UTC

[GitHub] [gobblin] phet commented on a diff in pull request #3749: [GOBBLIN-1887] Increase Encapsulation in FlowTriggerHandler helper functions and Add Unit Tests

phet commented on code in PR #3749:
URL: https://github.com/apache/gobblin/pull/3749#discussion_r1305155379


##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/FlowTriggerHandler.java:
##########
@@ -181,36 +179,43 @@ private void scheduleReminderForEvent(Properties jobProps, MultiActiveLeaseArbit
         this.jobDoesNotExistInSchedulerCount.inc();
         return;
       }
-      JobKey reminderJobKey = constructReminderJobKey(origJobKey, status.getEventTimeMillis());
-      JobDetailImpl jobDetail = createJobDetailForReminderEvent(origJobKey, reminderJobKey, cronExpression,
-          status.getEventTimeMillis(), originalEventTimeMillis);
-      // Create a new trigger that is set to fire at the minimum reminder wait time calculated
+      JobKey reminderJobKey = constructReminderJobKey(origJobKey, status);
+      JobDetailImpl jobDetail = createJobDetailForReminderEvent(origJobKey, reminderJobKey, status,
+          triggerEventTimeMillis, schedulerMaxBackoffMillis);

Review Comment:
   since `createJobDetailForReminderEvent` is not `static`, let's access `this.schedulerMaxBackoffMillis` behind-the-scenes (rather than passing as an arg)



##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/FlowTriggerHandler.java:
##########
@@ -181,36 +179,43 @@ private void scheduleReminderForEvent(Properties jobProps, MultiActiveLeaseArbit
         this.jobDoesNotExistInSchedulerCount.inc();
         return;
       }
-      JobKey reminderJobKey = constructReminderJobKey(origJobKey, status.getEventTimeMillis());
-      JobDetailImpl jobDetail = createJobDetailForReminderEvent(origJobKey, reminderJobKey, cronExpression,
-          status.getEventTimeMillis(), originalEventTimeMillis);
-      // Create a new trigger that is set to fire at the minimum reminder wait time calculated
+      JobKey reminderJobKey = constructReminderJobKey(origJobKey, status);
+      JobDetailImpl jobDetail = createJobDetailForReminderEvent(origJobKey, reminderJobKey, status,
+          triggerEventTimeMillis, schedulerMaxBackoffMillis);
+      // Create a new trigger with a `reminder` suffix that is set to fire at the minimum reminder wait time calculated
       Trigger reminderTrigger = JobScheduler.createTriggerForJob(reminderJobKey,
-          (Properties) jobDetail.getJobDataMap().get(GobblinServiceJobScheduler.PROPERTIES_KEY), Optional.absent());
+          getJobPropertiesFromJobDetail(jobDetail), Optional.of(createSuffixForJobTrigger(status)));
       // TODO: remove this comment once we've confirmed this function works
-      log.info("Flow Trigger Handler - [{}, eventTimestamp: {}] -  attempting to schedule reminder for event {}",
-          flowAction, originalEventTimeMillis, status.getEventTimeMillis());
+      log.info("Flow Trigger Handler - [{}, eventTimestamp: {}] -  attempting to schedule reminder for event {} with"
+              + "reminderJobKey {} and reminderTriggerKey {}", flowAction, triggerEventTimeMillis,
+          status.getEventTimeMillis(), reminderJobKey, reminderTrigger.getKey());
       this.schedulerService.getScheduler().scheduleJob(jobDetail, reminderTrigger);

Review Comment:
   any reason not to continue "all the way" and combine these four closely-related cascading invocations that are merely sub-steps toward accomplishing the overall goal?
   ```
   protected Trigger createAndScheduleReminder(
       JobKey origJobKey,
       MultiActiveLeaseArbiter.LeasedToAnotherStatus status,
       long triggerEventTimeMillis
     ) {
     String reminderSuffix = createSuffixForJobTrigger(status);
     JobKey reminderJobKey = new JobKey(origJobKey.getName() + reminderSuffix + origJobKey.getGroup());
     JobDetailImpl jobDetail = createJobDetailForReminderEvent(origJobKey, reminderJobKey, status, triggerEventTimeMillis, this.schedulerMaxBackoffMillis);
     Trigger reminderTrigger = JobScheduler.createTriggerForJob(reminderJobKey,
         getJobPropertiesFromJobDetail(jobDetail),
         Optional.of(reminderSuffix));
     // TODO: remove this comment once we've confirmed this function works
     log.info("Flow Trigger Handler - [{}, eventTimestamp: {}] -  attempting to schedule reminder for event {} with"
             + "reminderJobKey {} and reminderTriggerKey {}", flowAction, triggerEventTimeMillis,
         status.getEventTimeMillis(), reminderJobKey, reminderTrigger.getKey());
     this.schedulerService.getScheduler().scheduleJob(jobDetail, reminderTrigger);
     return reminderTrigger;
   }
   ```
   (return `Trigger` for logging)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@gobblin.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org