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


##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/DagActionReminderScheduler.java:
##########
@@ -192,4 +171,44 @@ public static Trigger 
createReminderJobTrigger(DagActionStore.LeaseParams leaseP
         .startAt(new Date(getCurrentTimeMillis.get() + reminderDurationMillis))
         .build();
   }
+
+  public class ReminderJobFactory implements JobFactory {
+    @Override
+    public Job newJob(TriggerFiredBundle bundle, Scheduler scheduler) {
+      return new ReminderJob();
+    }
+  }
+
+  /**
+   * Class used to store information regarding a pending dagAction that needs 
to be revisited at a later time
+   * by {@link DagManagement} interface to re-attempt a lease on if it has not 
been completed by the previous owner.
+   * These jobs are scheduled and used by the {@link 
DagActionReminderScheduler}.
+   */
+  public class ReminderJob implements Job {

Review Comment:
   non-static inner classes are good for tightly-coupled abstractions.  as you 
just found, they have some pitfalls.  in this case, it's not so closely coupled 
and hence seems better off as a `static` inner class.  just give it a `private 
final DagManagement` member and `@RequiredArgsCtor`
   
   the `ReminderJobFactory` however would still need to be non-`static`.  it's 
the one that will take its (parent instance's) 
`DagActionReminderScheduler.this.dagManagement` member and pass that along to 
the job's ctor.



-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to