You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by tk...@apache.org on 2025/06/26 11:09:11 UTC

(ignite-3) branch main updated: IGNITE-24428 Make disruptor queue configurable (#6131)

This is an automated email from the ASF dual-hosted git repository.

tkalkirill 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 c2fb6df02f5 IGNITE-24428 Make disruptor queue configurable (#6131)
c2fb6df02f5 is described below

commit c2fb6df02f51a5b9adf146bfc11e28f907b996b8
Author: Kirill Tkalenko <tk...@yandex.ru>
AuthorDate: Thu Jun 26 14:09:06 2025 +0300

    IGNITE-24428 Make disruptor queue configurable (#6131)
---
 .../DisruptorConfigurationSchema.java              | 31 ++++++++++++++++++++++
 .../configuration/RaftConfigurationSchema.java     |  6 +++++
 .../java/org/apache/ignite/internal/raft/Loza.java |  1 +
 3 files changed, 38 insertions(+)

diff --git a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/DisruptorConfigurationSchema.java b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/DisruptorConfigurationSchema.java
new file mode 100644
index 00000000000..2db8d3b6a45
--- /dev/null
+++ b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/DisruptorConfigurationSchema.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.raft.configuration;
+
+import org.apache.ignite.configuration.annotation.Config;
+import org.apache.ignite.configuration.annotation.Value;
+import org.apache.ignite.configuration.validation.PowerOfTwo;
+
+/** Configuration schema for RAFT disruptor's. */
+@Config
+public class DisruptorConfigurationSchema {
+    /** Size of queue in entries for disruptor's. */
+    @PowerOfTwo
+    @Value(hasDefault = true)
+    public int queueSize = 16_384;
+}
diff --git a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationSchema.java b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationSchema.java
index 263ed4f3833..7452c53d590 100644
--- a/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationSchema.java
+++ b/modules/raft-api/src/main/java/org/apache/ignite/internal/raft/configuration/RaftConfigurationSchema.java
@@ -74,12 +74,14 @@ public class RaftConfigurationSchema {
     /**
      * Amount of Disruptors that will handle the RAFT server.
      */
+    // TODO: IGNITE-25776 move to DisruptorConfigurationSchema
     @Value(hasDefault = true)
     public int stripes = Runtime.getRuntime().availableProcessors();
 
     /**
      * Amount of log manager Disruptors stripes.
      */
+    // TODO: IGNITE-25776 move to DisruptorConfigurationSchema
     @Value(hasDefault = true)
     public int logStripesCount = 4;
 
@@ -95,4 +97,8 @@ public class RaftConfigurationSchema {
      */
     @Value(hasDefault = true)
     public double maxInflightOverflowRate = 1.3;
+
+    /** Configuration for RAFT disruptor's. */
+    @ConfigValue
+    public DisruptorConfigurationSchema disruptor;
 }
diff --git a/modules/raft/src/main/java/org/apache/ignite/internal/raft/Loza.java b/modules/raft/src/main/java/org/apache/ignite/internal/raft/Loza.java
index e0d0bd3434d..8441d73b43e 100644
--- a/modules/raft/src/main/java/org/apache/ignite/internal/raft/Loza.java
+++ b/modules/raft/src/main/java/org/apache/ignite/internal/raft/Loza.java
@@ -224,6 +224,7 @@ public class Loza implements RaftManager {
         opts.setStripes(raftConfig.stripes());
         opts.setLogStripesCount(raftConfig.logStripesCount());
         opts.setLogYieldStrategy(raftConfig.logYieldStrategy());
+        opts.getRaftOptions().setDisruptorBufferSize(raftConfig.disruptor().queueSize());
 
         opts.getRaftOptions().setSync(raftConfig.fsync());