[
https://issues.apache.org/jira/browse/GOBBLIN-2096?focusedWorklogId=923977&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-923977
]
ASF GitHub Bot logged work on GOBBLIN-2096:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 21/Jun/24 14:22
Start Date: 21/Jun/24 14:22
Worklog Time Spent: 10m
Work Description: arjun4084346 commented on code in PR #3982:
URL: https://github.com/apache/gobblin/pull/3982#discussion_r1645203843
##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/MysqlMultiActiveLeaseArbiter.java:
##########
@@ -171,6 +173,8 @@ public class MysqlMultiActiveLeaseArbiter implements
MultiActiveLeaseArbiter {
// Complete lease acquisition if values have not changed since lease was
acquired
protected static final String CONDITIONALLY_COMPLETE_LEASE_STATEMENT =
"UPDATE %s SET "
+ "event_timestamp=event_timestamp, lease_acquisition_timestamp = NULL "
+ WHERE_CLAUSE_TO_MATCH_ROW;
+ protected static final int MAX_RETRIES = 3;
+ protected static final long INITIAL_DELAY_FOR_RETRY_MILLIS = 30L;
private static final ThreadLocal<Calendar> UTC_CAL =
Review Comment:
```
private static ExponentialBackoff exponentialBackOff =
ExponentialBackoff.builder().maxRetries(MAX_RETRIES)
.initialDelay(INITIAL_DELAY_FOR_RETRY_MILLIS + (long)
Math.random() * INITIAL_DELAY_FOR_RETRY_MILLIS)
.build();
```
##########
gobblin-service/src/main/java/org/apache/gobblin/service/modules/orchestration/MysqlMultiActiveLeaseArbiter.java:
##########
@@ -171,6 +173,8 @@ public class MysqlMultiActiveLeaseArbiter implements
MultiActiveLeaseArbiter {
// Complete lease acquisition if values have not changed since lease was
acquired
protected static final String CONDITIONALLY_COMPLETE_LEASE_STATEMENT =
"UPDATE %s SET "
+ "event_timestamp=event_timestamp, lease_acquisition_timestamp = NULL "
+ WHERE_CLAUSE_TO_MATCH_ROW;
+ protected static final int MAX_RETRIES = 3;
+ protected static final long INITIAL_DELAY_FOR_RETRY_MILLIS = 30L;
private static final ThreadLocal<Calendar> UTC_CAL =
Review Comment:
```
private static ExponentialBackoff exponentialBackOff =
ExponentialBackoff.builder().maxRetries(MAX_RETRIES)
.initialDelay(INITIAL_DELAY_FOR_RETRY_MILLIS + (long)
Math.random() * INITIAL_DELAY_FOR_RETRY_MILLIS)
.build();
```
Issue Time Tracking
-------------------
Worklog Id: (was: 923977)
Time Spent: 40m (was: 0.5h)
> retry Transient SQL Exception for MALA
> ---------------------------------------
>
> Key: GOBBLIN-2096
> URL: https://issues.apache.org/jira/browse/GOBBLIN-2096
> Project: Apache Gobblin
> Issue Type: Bug
> Components: gobblin-service
> Reporter: Urmi Mustafi
> Assignee: Abhishek Tiwari
> Priority: Major
> Time Spent: 40m
> Remaining Estimate: 0h
>
> We're seeing a MySQLTransactionRollbackException: Deadlock found when trying
> to get lock when calling MysqlMultiActiveLeaseArbiter. attemptLeaseIfNewRow()
> in the rare case when two hosts check the lease arbiter table at the same
> time, see there's no entry matching the current primary key and try to insert
> it at the exact same time (both wait for lock on the same row). Normally,
> there's slight discrepancy that results in an
> IntegrityConstraintViolationException if one insert succeeds before the other
> OR one finishes the write early and the other sees the entry when reading the
> getResult of the arbiter table. This PR adds retries with exponential backoff
> for transient SQL exceptions to the insert statement. Note, it's not needed
> for other cases when the INSERT/UPDATE statements are conditional on a read
> value.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)