umustafi commented on code in PR #3982:
URL: https://github.com/apache/gobblin/pull/3982#discussion_r1645227282


##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/MysqlMultiActiveLeaseArbiter.java:
##########
@@ -420,15 +428,25 @@ protected GetEventInfoResult 
createGetInfoResult(ResultSet resultSet) throws IOE
    * near past for it.
    * @return int corresponding to number of rows updated by INSERT statement 
to acquire lease
    */
-  protected int attemptLeaseIfNewRow(DagActionStore.DagAction dagAction) 
throws IOException {
+  protected int attemptLeaseIfNewRow(DagActionStore.DagAction dagAction, 
ExponentialBackoff exponentialBackoff) throws IOException {
     String formattedAcquireLeaseNewRowStatement =
         String.format(ACQUIRE_LEASE_IF_NEW_ROW_STATEMENT, 
this.leaseArbiterTableName);
     return 
dbStatementExecutor.withPreparedStatement(formattedAcquireLeaseNewRowStatement,
         insertStatement -> {
           completeInsertPreparedStatement(insertStatement, dagAction);
           try {
             return insertStatement.executeUpdate();
-          } catch (SQLIntegrityConstraintViolationException e) {
+          } catch (SQLTransientException e) {
+            try {
+              if (exponentialBackoff.awaitNextRetryIfAvailable()) {
+                return attemptLeaseIfNewRow(dagAction, exponentialBackoff);
+              }
+            } catch (InterruptedException | IOException e2) {
+              throw new IOException(e2);
+            }
+            return 0;

Review Comment:
   Oh good call, doing that



##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/MysqlMultiActiveLeaseArbiter.java:
##########
@@ -254,7 +256,8 @@ public LeaseAttemptStatus 
tryAcquireLease(DagActionStore.DagActionLeaseObject da
         log.debug("tryAcquireLease for [{}, is; {}, eventTimestamp: {}] - CASE 
1: no existing row for this dag action,"
             + " then go ahead and insert", dagActionLeaseObject.getDagAction(),
             dagActionLeaseObject.isReminder() ? "reminder" : "original", 
dagActionLeaseObject.getEventTimeMillis());
-        int numRowsUpdated = 
attemptLeaseIfNewRow(dagActionLeaseObject.getDagAction());
+        int numRowsUpdated = 
attemptLeaseIfNewRow(dagActionLeaseObject.getDagAction(),
+            
ExponentialBackoff.builder().maxRetries(3).initialDelay(10L).build());

Review Comment:
   increased to be in range 20,220



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