korlov42 commented on code in PR #4690:
URL: https://github.com/apache/ignite-3/pull/4690#discussion_r1836455962


##########
modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java:
##########
@@ -192,6 +196,11 @@ public class TxManagerImpl implements TxManager, 
NetworkMessageHandler {
 
     private final ReplicaService replicaService;
 
+    /** Registry of locally started active transactions. */
+    private final Map<UUID, InternalTransaction> transactions = new 
ConcurrentHashMap<>();
+
+    private final TransactionsViewProvider txSystemViewProvider = new 
TransactionsViewProvider(transactions);

Review Comment:
   do we really need `viewProvide` as a member of `TxManager`? The former is 
stateless object with no particular lifecycle. Besides, system views are 
supposed to be registered only once. Therefore, it would be better I think to 
not pollute manager with unnecessary members (e.g. create provider and 
immediately call invoke `get()` method inside `systemViews()` method).



##########
modules/transactions/src/main/java/org/apache/ignite/internal/tx/impl/TxManagerImpl.java:
##########
@@ -961,11 +978,35 @@ private HybridTimestamp 
createBeginTimestampWithIncrementRwTxCounter() {
         });
     }
 
+    /** Called when a read-write transaction is finished. */
+    private void onFinishRwTx(UUID txId) {
+        decrementRwTxCount(txId);
+
+        unregister(txId);
+    }
+
     private void decrementRwTxCount(UUID txId) {
         localRwTxCounter.inUpdateRwTxCountLock(() -> {
             localRwTxCounter.decrementRwTxCount(beginTimestamp(txId));
 
             return null;
         });
     }
+
+    /**
+     * Puts a transaction into the registry.
+     *
+     * @param tx Transaction.
+     * @return Registered transaction.
+     */
+    private InternalTransaction register(InternalTransaction tx) {
+        transactions.put(tx.id(), tx);

Review Comment:
   let's add an assertion to make sure we are not overriding another 
transaction here (e.g. tx is registered only once; there is no duplicate ids at 
least locally)



-- 
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: notifications-unsubscr...@ignite.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to