sanpwc commented on code in PR #2679:
URL: https://github.com/apache/ignite-3/pull/2679#discussion_r1362501079
##########
modules/table/src/main/java/org/apache/ignite/internal/table/distributed/replicator/PartitionReplicaListener.java:
##########
@@ -3023,13 +3098,22 @@ private void scheduleTransactionRowAsyncCleanup(UUID
txId, RowId rowId, Transact
// Both normal cleanup and single row cleanup are using
txsPendingRowIds map to store write intents.
// So we don't need a separate method to handle single row case.
- txManager.executeCleanupAsync(() ->
- inBusyLock(busyLock, () ->
storageUpdateHandler.handleTransactionCleanup(txId, txState == COMMITED,
commitTimestamp))
- ).exceptionally(e -> {
- LOG.warn("Failed to complete transaction cleanup command [txId=" +
txId + ']', e);
+ CompletableFuture<?> future = rowCleanupMap.compute(rowId, (k, v) -> {
Review Comment:
This part and generally exception handling flow is confusing.
First of all, how are we going to handle exceptions in
```
return validateOperationAgainstSchema(txId)
.thenCompose(catalogVersion ->
checkCleanup(rowIdLock.get1(), catalogVersion))
```
if checkCleanup will return the future completed exceptionally.
--
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]