This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 1a36a03c405 IGNITE-28306 Fix negative TransactionsActive metric for
direct transactions (#7939)
1a36a03c405 is described below
commit 1a36a03c4056d81b013fe19d2ab865abc9fe5d67
Author: Tiago Marques Godinho <[email protected]>
AuthorDate: Tue Apr 7 13:40:59 2026 +0100
IGNITE-28306 Fix negative TransactionsActive metric for direct transactions
(#7939)
---
.../handler/ClientInboundMessageHandler.java | 38 +++++++++++-----------
.../requests/sql/ClientSqlExecuteBatchRequest.java | 3 ++
.../requests/sql/ClientSqlExecuteRequest.java | 1 +
.../sql/ClientSqlQueryMetadataRequest.java | 4 ++-
.../handler/requests/table/ClientTableCommon.java | 9 ++++-
.../table/ClientTupleContainsAllKeysRequest.java | 4 ++-
.../table/ClientTupleContainsKeyRequest.java | 4 ++-
.../table/ClientTupleDeleteAllExactRequest.java | 4 ++-
.../table/ClientTupleDeleteAllRequest.java | 4 ++-
.../table/ClientTupleDeleteExactRequest.java | 4 ++-
.../requests/table/ClientTupleDeleteRequest.java | 4 ++-
.../requests/table/ClientTupleGetAllRequest.java | 4 ++-
.../table/ClientTupleGetAndDeleteRequest.java | 4 ++-
.../table/ClientTupleGetAndReplaceRequest.java | 4 ++-
.../table/ClientTupleGetAndUpsertRequest.java | 4 ++-
.../requests/table/ClientTupleGetRequest.java | 4 ++-
.../table/ClientTupleInsertAllRequest.java | 4 ++-
.../requests/table/ClientTupleInsertRequest.java | 4 ++-
.../table/ClientTupleReplaceExactRequest.java | 13 +++++++-
.../requests/table/ClientTupleReplaceRequest.java | 4 ++-
.../requests/table/ClientTupleRequestBase.java | 3 ++
.../table/ClientTupleUpsertAllRequest.java | 4 ++-
.../requests/table/ClientTupleUpsertRequest.java | 4 ++-
.../requests/table/ClientTuplesRequestBase.java | 4 ++-
.../ignite/client/handler/FakePlacementDriver.java | 9 ++++-
.../client/ClientPartitionDistributionTest.java | 4 +--
.../apache/ignite/client/ServerMetricsTest.java | 23 ++++++++++---
27 files changed, 128 insertions(+), 47 deletions(-)
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
index 689695259e1..7cea0def276 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/ClientInboundMessageHandler.java
@@ -946,68 +946,68 @@ public class ClientInboundMessageHandler
case ClientOp.TUPLE_UPSERT:
return ClientTupleUpsertRequest.process(
- in, igniteTables, resources, txManager, clockService,
notificationSender(requestId), tsTracker);
+ in, igniteTables, resources, metrics, txManager,
clockService, notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_GET:
- return ClientTupleGetRequest.process(in, igniteTables,
resources, txManager, clockService, tsTracker);
+ return ClientTupleGetRequest.process(in, igniteTables,
resources, metrics, txManager, clockService, tsTracker);
case ClientOp.TUPLE_UPSERT_ALL:
- return ClientTupleUpsertAllRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleUpsertAllRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_GET_ALL:
- return ClientTupleGetAllRequest.process(in, igniteTables,
resources, txManager, clockService, tsTracker,
+ return ClientTupleGetAllRequest.process(in, igniteTables,
resources, metrics, txManager, clockService, tsTracker,
clientContext.hasFeature(TX_CLIENT_GETALL_SUPPORTS_TX_OPTIONS));
case ClientOp.TUPLE_GET_AND_UPSERT:
- return ClientTupleGetAndUpsertRequest.process(in,
igniteTables, resources, txManager, clockService,
+ return ClientTupleGetAndUpsertRequest.process(in,
igniteTables, resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_INSERT:
- return ClientTupleInsertRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleInsertRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_INSERT_ALL:
- return ClientTupleInsertAllRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleInsertAllRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_REPLACE:
- return ClientTupleReplaceRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleReplaceRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_REPLACE_EXACT:
- return ClientTupleReplaceExactRequest.process(in,
igniteTables, resources, txManager, clockService,
+ return ClientTupleReplaceExactRequest.process(in,
igniteTables, resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_GET_AND_REPLACE:
- return ClientTupleGetAndReplaceRequest.process(in,
igniteTables, resources, txManager, clockService,
+ return ClientTupleGetAndReplaceRequest.process(in,
igniteTables, resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_DELETE:
- return ClientTupleDeleteRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleDeleteRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_DELETE_ALL:
- return ClientTupleDeleteAllRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleDeleteAllRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_DELETE_EXACT:
- return ClientTupleDeleteExactRequest.process(in, igniteTables,
resources, txManager, clockService,
+ return ClientTupleDeleteExactRequest.process(in, igniteTables,
resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_DELETE_ALL_EXACT:
- return ClientTupleDeleteAllExactRequest.process(in,
igniteTables, resources, txManager, clockService,
+ return ClientTupleDeleteAllExactRequest.process(in,
igniteTables, resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_GET_AND_DELETE:
- return ClientTupleGetAndDeleteRequest.process(in,
igniteTables, resources, txManager, clockService,
+ return ClientTupleGetAndDeleteRequest.process(in,
igniteTables, resources, metrics, txManager, clockService,
notificationSender(requestId), tsTracker);
case ClientOp.TUPLE_CONTAINS_KEY:
- return ClientTupleContainsKeyRequest.process(in, igniteTables,
resources, txManager, clockService, tsTracker);
+ return ClientTupleContainsKeyRequest.process(in, igniteTables,
resources, metrics, txManager, clockService, tsTracker);
case ClientOp.TUPLE_CONTAINS_ALL_KEYS:
- return ClientTupleContainsAllKeysRequest.process(in,
igniteTables, resources, txManager, clockService, tsTracker,
+ return ClientTupleContainsAllKeysRequest.process(in,
igniteTables, resources, metrics, txManager, clockService, tsTracker,
clientContext.hasFeature(TX_CLIENT_GETALL_SUPPORTS_TX_OPTIONS));
case ClientOp.JDBC_CONNECT:
@@ -1143,12 +1143,12 @@ public class ClientInboundMessageHandler
case ClientOp.SQL_QUERY_META:
return ClientSqlQueryMetadataRequest.process(
- partitionOperationsExecutor, in, queryProcessor,
resources, tsTracker
+ partitionOperationsExecutor, in, queryProcessor,
resources, metrics, tsTracker
);
case ClientOp.SQL_EXEC_BATCH:
return ClientSqlExecuteBatchRequest.process(
- in, queryProcessor, resources, requestId,
cancelHandles, tsTracker,
+ in, queryProcessor, resources, metrics, requestId,
cancelHandles, tsTracker,
resolveCurrentUsername()
);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteBatchRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteBatchRequest.java
index 413fa317c4f..4f0c9270235 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteBatchRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteBatchRequest.java
@@ -21,6 +21,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import java.util.Map;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.ResponseWriter;
import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
@@ -53,6 +54,7 @@ public class ClientSqlExecuteBatchRequest {
ClientMessageUnpacker in,
QueryProcessor sql,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
long requestId,
Map<Long, CancelHandle> cancelHandleMap,
HybridTimestampTracker tsTracker,
@@ -65,6 +67,7 @@ public class ClientSqlExecuteBatchRequest {
in,
tsTracker,
resources,
+ metrics,
null,
null,
null,
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
index cbcd37de96b..03478d8bfb0 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlExecuteRequest.java
@@ -115,6 +115,7 @@ public class ClientSqlExecuteRequest {
in,
timestampTracker,
resources,
+ metrics,
txManager,
tables,
notificationSender,
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlQueryMetadataRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlQueryMetadataRequest.java
index 49db22c22bb..06c63951060 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlQueryMetadataRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/sql/ClientSqlQueryMetadataRequest.java
@@ -21,6 +21,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.ResponseWriter;
import org.apache.ignite.internal.client.proto.ClientMessagePacker;
@@ -49,9 +50,10 @@ public class ClientSqlQueryMetadataRequest {
ClientMessageUnpacker in,
QueryProcessor processor,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
HybridTimestampTracker tsTracker
) {
- CompletableFuture<InternalTransaction> txFut = readTx(in, tsTracker,
resources, null, null, null, null);
+ CompletableFuture<InternalTransaction> txFut = readTx(in, tsTracker,
resources, metrics, null, null, null, null);
String schema = in.unpackString();
String query = in.unpackString();
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
index 3a26a7afc55..2fbf674f21a 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTableCommon.java
@@ -32,6 +32,7 @@ import java.util.Collection;
import java.util.EnumSet;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
@@ -427,6 +428,7 @@ public class ClientTableCommon {
ClientMessageUnpacker in,
HybridTimestampTracker tsUpdater,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
@Nullable TxManager txManager,
@Nullable IgniteTables tables,
@Nullable NotificationSender notificationSender,
@@ -436,6 +438,7 @@ public class ClientTableCommon {
in,
tsUpdater,
resources,
+ metrics,
txManager,
tables,
notificationSender,
@@ -460,6 +463,7 @@ public class ClientTableCommon {
ClientMessageUnpacker in,
HybridTimestampTracker tsUpdater,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
@Nullable TxManager txManager,
@Nullable IgniteTables tables,
@Nullable NotificationSender notificationSender,
@@ -510,6 +514,8 @@ public class ClientTableCommon {
// Attach resource id only on first direct request.
resourceIdHolder[0] = resources.put(new ClientResource(tx,
tx::rollbackAsync));
+ metrics.transactionsActiveIncrement();
+
return completedFuture(tx);
} else if (id == TX_ID_DIRECT) {
assert txManager != null : "Transaction manager must be
specified to process directly mapped requests.";
@@ -585,13 +591,14 @@ public class ClientTableCommon {
ClientMessageUnpacker in,
HybridTimestampTracker readTs,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
IgniteTables tables,
EnumSet<RequestOptions> options,
@Nullable NotificationSender notificationSender,
long[] resourceIdHolder
) {
- return readTx(in, readTs, resources, txManager, tables,
notificationSender, resourceIdHolder, options)
+ return readTx(in, readTs, resources, metrics, txManager, tables,
notificationSender, resourceIdHolder, options)
.thenApply(tx -> {
if (tx == null) {
// Implicit transactions do not use an observation
timestamp because RW never depends on it,
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsAllKeysRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsAllKeysRequest.java
index ba79df0406d..eb006e5682c 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsAllKeysRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsAllKeysRequest.java
@@ -24,6 +24,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequest
import java.util.EnumSet;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.ResponseWriter;
import
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions;
@@ -53,6 +54,7 @@ public class ClientTupleContainsAllKeysRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
HybridTimestampTracker tsTracker,
@@ -60,7 +62,7 @@ public class ClientTupleContainsAllKeysRequest {
) {
EnumSet<RequestOptions> options = supportsOptions ? of(KEY_ONLY,
HAS_OPTIONS) : of(KEY_ONLY);
- return ClientTuplesRequestBase.readAsync(in, tables, resources,
txManager, null, tsTracker, options)
+ return ClientTuplesRequestBase.readAsync(in, tables, resources,
metrics, txManager, null, tsTracker, options)
.thenCompose(req ->
req.table().recordView().containsAllAsync(req.tx(), req.tuples())
.thenApply(containsAll -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsKeyRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsKeyRequest.java
index 721f3d02cfa..8a5ffd08f65 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsKeyRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleContainsKeyRequest.java
@@ -23,6 +23,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequest
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions.READ_ONLY;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.ResponseWriter;
import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
@@ -48,11 +49,12 @@ public class ClientTupleContainsKeyRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
HybridTimestampTracker tsTracker
) {
- return ClientTupleRequestBase.readAsync(in, tables, resources,
txManager, null, tsTracker, of(READ_ONLY, KEY_ONLY))
+ return ClientTupleRequestBase.readAsync(in, tables, resources,
metrics, txManager, null, tsTracker, of(READ_ONLY, KEY_ONLY))
.thenCompose(req ->
req.table().recordView().containsAsync(req.tx(), req.tuple())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllExactRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllExactRequest.java
index e89d35f410c..e53caedd770 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllExactRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllExactRequest.java
@@ -23,6 +23,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTuplesRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -50,12 +51,13 @@ public class ClientTupleDeleteAllExactRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().deleteAllExactAsync(req.tx(), req.tuples())
.thenApply(skippedTuples -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllRequest.java
index 48afbf9a32d..68c5b8ecfbe 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteAllRequest.java
@@ -23,6 +23,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions.KEY_ONLY;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -50,12 +51,13 @@ public class ClientTupleDeleteAllRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return ClientTuplesRequestBase.readAsync(in, tables, resources,
txManager, notificationSender, tsTracker, of(KEY_ONLY))
+ return ClientTuplesRequestBase.readAsync(in, tables, resources,
metrics, txManager, notificationSender, tsTracker, of(KEY_ONLY))
.thenCompose(req ->
req.table().recordView().deleteAllAsync(req.tx(), req.tuples())
.thenApply(skippedTuples -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteExactRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteExactRequest.java
index ad0c0640d99..82233f81bf9 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteExactRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteExactRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -49,12 +50,13 @@ public class ClientTupleDeleteExactRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().deleteExactAsync(req.tx(), req.tuple())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteRequest.java
index adce4d98d98..339227e18e4 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleDeleteRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions.KEY_ONLY;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -48,12 +49,13 @@ public class ClientTupleDeleteRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return ClientTupleRequestBase.readAsync(in, tables, resources,
txManager, notificationSender, tsTracker, of(KEY_ONLY))
+ return ClientTupleRequestBase.readAsync(in, tables, resources,
metrics, txManager, notificationSender, tsTracker, of(KEY_ONLY))
.thenCompose(req ->
req.table().recordView().deleteAsync(req.tx(), req.tuple())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAllRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAllRequest.java
index b777792b503..199464b3385 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAllRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAllRequest.java
@@ -25,6 +25,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequest
import java.util.EnumSet;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.ResponseWriter;
import
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions;
@@ -55,6 +56,7 @@ public class ClientTupleGetAllRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
HybridTimestampTracker tsTracker,
@@ -62,7 +64,7 @@ public class ClientTupleGetAllRequest {
) {
EnumSet<RequestOptions> options = supportsOptions ? of(KEY_ONLY,
HAS_OPTIONS) : of(KEY_ONLY);
- return ClientTuplesRequestBase.readAsync(in, tables, resources,
txManager, null, tsTracker, options)
+ return ClientTuplesRequestBase.readAsync(in, tables, resources,
metrics, txManager, null, tsTracker, options)
.thenCompose(req -> {
return req.table().recordView().getAllAsync(req.tx(),
req.tuples())
.thenApply(resTuples -> out -> {
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndDeleteRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndDeleteRequest.java
index d53c30e79b1..5133a14bcf5 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndDeleteRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndDeleteRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions.KEY_ONLY;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -49,12 +50,13 @@ public class ClientTupleGetAndDeleteRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return ClientTupleRequestBase.readAsync(in, tables, resources,
txManager, notificationSender, tsTracker, of(KEY_ONLY))
+ return ClientTupleRequestBase.readAsync(in, tables, resources,
metrics, txManager, notificationSender, tsTracker, of(KEY_ONLY))
.thenCompose(req ->
req.table().recordView().getAndDeleteAsync(req.tx(), req.tuple())
.thenApply(resTuple -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndReplaceRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndReplaceRequest.java
index d1b99440d76..6fb485021d4 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndReplaceRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndReplaceRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -50,12 +51,13 @@ public class ClientTupleGetAndReplaceRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().getAndReplaceAsync(req.tx(), req.tuple())
.thenApply(resTuple -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndUpsertRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndUpsertRequest.java
index cef414d7917..d8f3420df2a 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndUpsertRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetAndUpsertRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -50,12 +51,13 @@ public class ClientTupleGetAndUpsertRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().getAndUpsertAsync(req.tx(), req.tuple())
.thenApply(resTuple -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetRequest.java
index f53333c25f2..48fd2ca0062 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleGetRequest.java
@@ -23,6 +23,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequest
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions.READ_ONLY;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.ResponseWriter;
import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
@@ -49,11 +50,12 @@ public class ClientTupleGetRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
HybridTimestampTracker tsTracker
) {
- return ClientTupleRequestBase.readAsync(in, tables, resources,
txManager, null, tsTracker, of(READ_ONLY, KEY_ONLY))
+ return ClientTupleRequestBase.readAsync(in, tables, resources,
metrics, txManager, null, tsTracker, of(READ_ONLY, KEY_ONLY))
.thenCompose(req ->
req.table().recordView().getAsync(req.tx(), req.tuple())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertAllRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertAllRequest.java
index e750152ecd7..ecc68421db5 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertAllRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertAllRequest.java
@@ -23,6 +23,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTuplesRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -52,12 +53,13 @@ public class ClientTupleInsertAllRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().insertAllAsync(req.tx(), req.tuples())
.thenApply(skippedTuples -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertRequest.java
index 566f735b594..c8bfe6b60e2 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleInsertRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -51,12 +52,13 @@ public class ClientTupleInsertRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().insertAsync(req.tx(), req.tuple())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceExactRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceExactRequest.java
index 1d381333526..ecf2c300eac 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceExactRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceExactRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions.READ_SECOND_TUPLE;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -48,12 +49,22 @@ public class ClientTupleReplaceExactRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return ClientTupleRequestBase.readAsync(in, tables, resources,
txManager, notificationSender, tsTracker, of(READ_SECOND_TUPLE))
+ return ClientTupleRequestBase.readAsync(
+ in,
+ tables,
+ resources,
+ metrics,
+ txManager,
+ notificationSender,
+ tsTracker,
+ of(READ_SECOND_TUPLE)
+ )
.thenCompose(req ->
req.table().recordView().replaceExactAsync(req.tx(), req.tuple(), req.tuple2())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceRequest.java
index 361793d7c1e..86d6d58078d 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleReplaceRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -49,12 +50,13 @@ public class ClientTupleReplaceRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().replaceAsync(req.tx(), req.tuple())
.thenApply(res -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleRequestBase.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleRequestBase.java
index eefed432cd8..b2cdc608a87 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleRequestBase.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleRequestBase.java
@@ -26,6 +26,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequest
import java.util.BitSet;
import java.util.EnumSet;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.internal.client.proto.ClientMessageUnpacker;
@@ -88,6 +89,7 @@ class ClientTupleRequestBase {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
@Nullable NotificationSender notificationSender,
HybridTimestampTracker tsTracker,
@@ -101,6 +103,7 @@ class ClientTupleRequestBase {
in,
tsTracker,
resources,
+ metrics,
txManager,
tables,
options,
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertAllRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertAllRequest.java
index f9cc36b449f..1d6604e0290 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertAllRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertAllRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTuplesRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -49,12 +50,13 @@ public class ClientTupleUpsertAllRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().upsertAllAsync(req.tx(), req.tuples())
.thenApply(v -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertRequest.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertRequest.java
index b80cbc2d405..58efb8accc8 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertRequest.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTupleUpsertRequest.java
@@ -22,6 +22,7 @@ import static
org.apache.ignite.client.handler.requests.table.ClientTableCommon.
import static
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.readAsync;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import org.apache.ignite.client.handler.ResponseWriter;
@@ -51,12 +52,13 @@ public class ClientTupleUpsertRequest {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
ClockService clockService,
NotificationSender notificationSender,
HybridTimestampTracker tsTracker
) {
- return readAsync(in, tables, resources, txManager, notificationSender,
tsTracker, noneOf(RequestOptions.class))
+ return readAsync(in, tables, resources, metrics, txManager,
notificationSender, tsTracker, noneOf(RequestOptions.class))
.thenCompose(req ->
req.table().recordView().upsertAsync(req.tx(), req.tuple())
.thenApply(v -> out -> {
writeTxMeta(out, tsTracker, clockService, req);
diff --git
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuplesRequestBase.java
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuplesRequestBase.java
index c0dbcb6d0d6..43961bcd6d3 100644
---
a/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuplesRequestBase.java
+++
b/modules/client-handler/src/main/java/org/apache/ignite/client/handler/requests/table/ClientTuplesRequestBase.java
@@ -27,6 +27,7 @@ import java.util.BitSet;
import java.util.EnumSet;
import java.util.List;
import java.util.concurrent.CompletableFuture;
+import org.apache.ignite.client.handler.ClientHandlerMetricSource;
import org.apache.ignite.client.handler.ClientResourceRegistry;
import org.apache.ignite.client.handler.NotificationSender;
import
org.apache.ignite.client.handler.requests.table.ClientTupleRequestBase.RequestOptions;
@@ -72,6 +73,7 @@ class ClientTuplesRequestBase {
ClientMessageUnpacker in,
IgniteTables tables,
ClientResourceRegistry resources,
+ ClientHandlerMetricSource metrics,
TxManager txManager,
@Nullable NotificationSender notificationSender,
HybridTimestampTracker tsTracker,
@@ -82,7 +84,7 @@ class ClientTuplesRequestBase {
long[] resIdHolder = {0};
CompletableFuture<InternalTransaction> txFut =
- readOrStartImplicitTx(in, tsTracker, resources, txManager,
tables, options, notificationSender, resIdHolder);
+ readOrStartImplicitTx(in, tsTracker, resources, metrics,
txManager, tables, options, notificationSender, resIdHolder);
int schemaId = in.unpackInt();
diff --git
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
index 7714422d85f..dab71766356 100644
---
a/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
+++
b/modules/client-handler/src/testFixtures/java/org/apache/ignite/client/handler/FakePlacementDriver.java
@@ -50,9 +50,16 @@ public class FakePlacementDriver extends
AbstractEventProducer<PrimaryReplicaEve
private boolean returnError;
+ /**
+ * Constructor.
+ *
+ * @param partitions number of partitions.
+ */
public FakePlacementDriver(int partitions) {
this.partitions = partitions;
- primaryReplicas = new ArrayList<>(nCopies(partitions,
getReplicaMeta("s", new UUID(3, 4), HybridTimestamp.MIN_VALUE.longValue())));
+ primaryReplicas = new ArrayList<>(
+ nCopies(partitions, getReplicaMeta("server-1", new UUID(3, 4),
HybridTimestamp.MIN_VALUE.longValue()))
+ );
}
public void returnError(boolean returnError) {
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ClientPartitionDistributionTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ClientPartitionDistributionTest.java
index 1bc9917e557..358322ddc77 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ClientPartitionDistributionTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ClientPartitionDistributionTest.java
@@ -62,8 +62,8 @@ public class ClientPartitionDistributionTest extends
AbstractClientTest {
// Before update.
Map<Partition, ClusterNode> map =
partDistribution.primaryReplicasAsync().join();
assertEquals(4, map.size());
- assertEquals("s", map.get(part0).name());
- assertEquals("s",
partDistribution.primaryReplicaAsync(part2).join().name());
+ assertEquals("server-1", map.get(part0).name());
+ assertEquals("server-1",
partDistribution.primaryReplicaAsync(part2).join().name());
// Update.
updateServerReplicas(List.of("foo", "bar", "baz", "qux"));
diff --git
a/modules/client/src/test/java/org/apache/ignite/client/ServerMetricsTest.java
b/modules/client/src/test/java/org/apache/ignite/client/ServerMetricsTest.java
index 3fcc6e6d613..d765aab714b 100644
---
a/modules/client/src/test/java/org/apache/ignite/client/ServerMetricsTest.java
+++
b/modules/client/src/test/java/org/apache/ignite/client/ServerMetricsTest.java
@@ -23,6 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertSame;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.util.concurrent.CountDownLatch;
+import java.util.function.Consumer;
import org.apache.ignite.client.fakes.FakeCompute;
import org.apache.ignite.compute.JobDescriptor;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
@@ -38,7 +39,7 @@ import org.junit.jupiter.api.Test;
* Tests client handler metrics. See also {@code
org.apache.ignite.client.handler.ItClientHandlerMetricsTest}.
*/
@SuppressWarnings("AssignmentToStaticFieldFromInstanceMethod")
-public class ServerMetricsTest extends AbstractClientTest {
+public class ServerMetricsTest extends AbstractClientTableTest {
@AfterEach
public void resetCompute() {
FakeCompute.future = null;
@@ -51,18 +52,17 @@ public class ServerMetricsTest extends AbstractClientTest {
testServer.metrics().enable();
}
- @Test
- public void testTxMetrics() {
+ private void testTxMetricsRoutine(Consumer<Transaction> doOpInTx) {
assertEquals(0, testServer.metrics().transactionsActive());
Transaction tx1 = client.transactions().begin(); // Lazy tx does not
begin until first operation.
assertEquals(0, testServer.metrics().transactionsActive());
- client.sql().execute(tx1, "select 1").close(); // Force lazy tx init.
+ doOpInTx.accept(tx1);
assertEquals(1, testServer.metrics().transactionsActive());
Transaction tx2 = client.transactions().begin();
- client.sql().execute(tx2, "select 1").close(); // Force lazy tx init.
+ doOpInTx.accept(tx2);
assertEquals(2, testServer.metrics().transactionsActive());
tx1.rollback();
@@ -72,6 +72,19 @@ public class ServerMetricsTest extends AbstractClientTest {
assertEquals(0, testServer.metrics().transactionsActive());
}
+ @Test
+ public void testTxMetrics() {
+ testTxMetricsRoutine(tx -> client.sql().execute(tx, "select
1").close());
+ }
+
+ @Test
+ public void testTxMetricsWithDirectTx() {
+ var table = defaultTable();
+ testTxMetricsRoutine(tx -> {
+ table.keyValueView().put(tx, tupleKey(1), tupleVal("v:" +
tx.hashCode()));
+ });
+ }
+
@Test
public void testSqlMetrics() {
Statement statement = client.sql().statementBuilder()