tkalkirill commented on code in PR #1938:
URL: https://github.com/apache/ignite-3/pull/1938#discussion_r1169946685


##########
modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java:
##########
@@ -162,27 +206,62 @@ public CompletableFuture<Void> cleanup(
         return allOf(cleanupFutures);
     }
 
-    /** {@inheritDoc} */
     @Override
     public int finished() {
         return (int) states.entrySet().stream().filter(e -> e.getValue() == 
TxState.COMMITED || e.getValue() == TxState.ABORTED).count();
     }
 
-    /** {@inheritDoc} */
     @Override
     public void start() {
         // No-op.
     }
 
-    /** {@inheritDoc} */
     @Override
-    public void stop() throws Exception {
+    public void stop() {
         // No-op.
     }
 
-    /** {@inheritDoc} */
     @Override
     public LockManager lockManager() {
         return lockManager;
     }
+
+    CompletableFuture<Void> completeReadOnlyTransactionFuture(ReadOnlyTxId 
readOnlyTxId) {
+        CompletableFuture<Void> readOnlyTxFuture = 
readOnlyTxFutureById.remove(readOnlyTxId);
+
+        assert readOnlyTxFuture != null : readOnlyTxId;
+
+        readOnlyTxFuture.complete(null);
+
+        return readOnlyTxFuture;
+    }
+
+    @Override
+    public void updateLowWatermark(HybridTimestamp newLowWatermark) {
+        lowWatermarkReadWriteLock.writeLock().lock();
+
+        try {
+            lowWatermark.updateAndGet(previousLowWatermark -> {
+                if (previousLowWatermark == null) {
+                    return newLowWatermark;
+                }
+
+                assert newLowWatermark.compareTo(previousLowWatermark) > 0 :
+                        "lower watermark should be growing: [previous=" + 
previousLowWatermark + ", new=" + newLowWatermark + ']';
+
+                return newLowWatermark;
+            });
+        } finally {
+            lowWatermarkReadWriteLock.writeLock().unlock();
+        }
+    }
+
+    @Override
+    public CompletableFuture<Void> 
getFutureAllReadOnlyTransactionsWhichLessOrEqualTo(HybridTimestamp timestamp) {
+        ReadOnlyTxId upperBound = new ReadOnlyTxId(timestamp, new 
UUID(Long.MAX_VALUE, Long.MAX_VALUE));
+
+        List<CompletableFuture<Void>> readOnlyTxFutures = 
List.copyOf(readOnlyTxFutureById.headMap(upperBound, true).values());

Review Comment:
   Discussed in person, decided to change the signature of method 
`org.apache.ignite.internal.tx.TxManager#updateLowWatermark`.



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