[
https://issues.apache.org/jira/browse/GOBBLIN-1859?focusedWorklogId=872264&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-872264
]
ASF GitHub Bot logged work on GOBBLIN-1859:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 21/Jul/23 22:53
Start Date: 21/Jul/23 22:53
Worklog Time Spent: 10m
Work Description: umustafi commented on code in PR #3721:
URL: https://github.com/apache/gobblin/pull/3721#discussion_r1271157024
##########
gobblin-runtime/src/main/java/org/apache/gobblin/runtime/api/MysqlMultiActiveLeaseArbiter.java:
##########
@@ -122,7 +122,8 @@ protected interface CheckedFunction<T, R> {
// Need to define three separate statements to handle cases where row does
not exist or has null values to check
protected static final String
CONDITIONALLY_ACQUIRE_LEASE_IF_NEW_ROW_STATEMENT = "INSERT INTO %s (flow_group,
"
+ "flow_name, flow_execution_id, flow_action, event_timestamp,
lease_acquisition_timestamp) "
- + "VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)";
+ + "SELECT ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP WHERE NOT
EXISTS (SELECT * FROM %s "
+ + WHERE_CLAUSE_TO_MATCH_KEY + ")";
Review Comment:
`If you use the IGNORE modifier, ignorable errors that occur while executing
the [INSERT](https://dev.mysql.com/doc/refman/8.0/en/insert.html) statement are
ignored. For example, without IGNORE, a row that duplicates an existing UNIQUE
index or PRIMARY KEY value in the table causes a duplicate-key error and the
statement is aborted. With IGNORE, the row is discarded and no error occurs.
Ignored errors generate warnings instead.`
https://dev.mysql.com/doc/refman/8.0/en/insert.html suggests that an error will
be thrown if PK already exists so need to use IGNORE or WHERE NOT EXISTS
Issue Time Tracking
-------------------
Worklog Id: (was: 872264)
Time Spent: 40m (was: 0.5h)
> Multi-active Unit Test for Multiple Participant
> -----------------------------------------------
>
> Key: GOBBLIN-1859
> URL: https://issues.apache.org/jira/browse/GOBBLIN-1859
> Project: Apache Gobblin
> Issue Type: Bug
> Components: gobblin-service
> Reporter: Urmi Mustafi
> Assignee: Abhishek Tiwari
> Priority: Major
> Time Spent: 40m
> Remaining Estimate: 0h
>
> In multi-active mode, multiple participants will be reading/writing to MySQL
> table. We want to make sure each participant acts on the table in a manner
> that takes into account that the state may have changed while the
> MultiActiveLeaseArbiter is processing the result of a READ. This PR adds unit
> tests that validate SQL Insertion statements are conditional upon the state
> of the particular row corresponding to the flow action event being unchanged
> from the read made by this participant.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)