tkalkirill commented on code in PR #1938:
URL: https://github.com/apache/ignite-3/pull/1938#discussion_r1169895566
##########
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:
I don't think it's necessary, this method is more like a general case.
--
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]