You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Kirill Gusakov (Jira)" <ji...@apache.org> on 2023/11/15 14:06:00 UTC

[jira] [Created] (IGNITE-20868) ReplicaService whenCompleteAsync waste significant amount of time

Kirill Gusakov created IGNITE-20868:
---------------------------------------

             Summary: ReplicaService whenCompleteAsync waste significant amount of time
                 Key: IGNITE-20868
                 URL: https://issues.apache.org/jira/browse/IGNITE-20868
             Project: Ignite
          Issue Type: Improvement
            Reporter: Kirill Gusakov


During the YCSB 1-node embedded run we found out the following behaviour: [this code |https://github.com/apache/ignite-3/blob/82c74598b5006ea3e4e86da744a68022dd799c89/modules/replicator/src/main/java/org/apache/ignite/internal/replicator/ReplicaService.java#L92] takes significant time to execute, because of whenCompleteAsync:

{code:java}
 private <R> CompletableFuture<R> sendToReplica(String targetNodeConsistentId, ReplicaRequest req) {
        CompletableFuture<R> res = new CompletableFuture<>();

        // TODO: IGNITE-17824 Use named executor instead of default one in order to process replica Response.
        messagingService.invoke(targetNodeConsistentId, req, RPC_TIMEOUT).whenCompleteAsync(
{code}
The simple switch to simple whenComplete give us a boost from 26us/s to 13us/s in the 1-node fsync=false run of SelectBenchmark.kvGet




--
This message was sent by Atlassian Jira
(v8.20.10#820010)