You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2021/08/20 08:21:45 UTC

[ignite-3] branch main updated: IGNITE-15335 Introduce thread utils for Ignite 3.0 (#292)

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

amashenkov 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 e64a30a  IGNITE-15335 Introduce thread utils for Ignite 3.0 (#292)
e64a30a is described below

commit e64a30ad5b4c7c909ca88dd633741f3a82cb18b5
Author: Taras Ledkov <tl...@gridgain.com>
AuthorDate: Fri Aug 20 11:21:39 2021 +0300

    IGNITE-15335 Introduce thread utils for Ignite 3.0 (#292)
---
 .../query/calcite/SqlQueryProcessor.java           |  8 +--
 .../query/calcite/exec/QueryTaskExecutorImpl.java  |  3 +-
 .../calcite/exec/rel/AbstractExecutionTest.java    |  2 +-
 .../internal/thread}/NamedThreadFactory.java       | 59 +++++++++++++++++++---
 .../thread}/StripedThreadPoolExecutor.java         | 15 +-----
 modules/raft/pom.xml                               |  5 ++
 .../internal/raft/server/impl/JRaftServerImpl.java |  9 ++--
 .../org/apache/ignite/raft/jraft/JRaftUtils.java   | 27 +++++++---
 .../ignite/raft/jraft/core/TimerManager.java       |  2 +-
 .../raft/jraft/disruptor/DisruptorBuilder.java     |  4 +-
 .../raft/jraft/disruptor/StripedDisruptor.java     |  8 +--
 .../ignite/raft/jraft/util/RepeatedTimer.java      |  1 +
 .../DefaultFixedThreadsExecutorGroupFactory.java   |  2 +-
 .../concurrent/DefaultSingleThreadExecutor.java    |  2 +-
 .../jraft/util/timer/DefaultRaftTimerFactory.java  |  2 +-
 .../ignite/raft/jraft/util/timer/DefaultTimer.java |  2 +-
 .../concurrent/MpscSingleThreadExecutorTest.java   |  2 +-
 .../concurrent/SingleThreadExecutorBenchmark.java  |  4 +-
 18 files changed, 105 insertions(+), 52 deletions(-)

diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java
index e9d5a97..e2a8d47 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/SqlQueryProcessor.java
@@ -17,7 +17,6 @@
 package org.apache.ignite.internal.processors.query.calcite;
 
 import java.util.List;
-
 import org.apache.ignite.internal.manager.EventListener;
 import org.apache.ignite.internal.manager.IgniteComponent;
 import org.apache.ignite.internal.processors.query.calcite.exec.ArrayRowHandler;
@@ -29,10 +28,11 @@ import org.apache.ignite.internal.processors.query.calcite.message.MessageServic
 import org.apache.ignite.internal.processors.query.calcite.message.MessageServiceImpl;
 import org.apache.ignite.internal.processors.query.calcite.prepare.DummyPlanCache;
 import org.apache.ignite.internal.processors.query.calcite.schema.SchemaHolderImpl;
-import org.apache.ignite.internal.processors.query.calcite.util.StripedThreadPoolExecutor;
 import org.apache.ignite.internal.table.distributed.TableManager;
 import org.apache.ignite.internal.table.event.TableEvent;
 import org.apache.ignite.internal.table.event.TableEventParameters;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
+import org.apache.ignite.internal.thread.StripedThreadPoolExecutor;
 import org.apache.ignite.internal.util.Cursor;
 import org.apache.ignite.lang.NodeStoppingException;
 import org.apache.ignite.network.ClusterService;
@@ -63,10 +63,12 @@ public class SqlQueryProcessor implements IgniteComponent {
 
     /** {@inheritDoc} */
     @Override public void start() {
+        String nodeName = clusterSrvc.localConfiguration().getName();
+
         taskExecutor = new QueryTaskExecutorImpl(
             new StripedThreadPoolExecutor(
                 4,
-                "calciteQry",
+                NamedThreadFactory.threadPrefix(nodeName, "calciteQry"),
                 null,
                 true,
                 DFLT_THREAD_KEEP_ALIVE_TIME
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
index 92f4546..81849d4 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/QueryTaskExecutorImpl.java
@@ -19,8 +19,7 @@ package org.apache.ignite.internal.processors.query.calcite.exec;
 
 import java.util.UUID;
 import java.util.concurrent.CompletableFuture;
-
-import org.apache.ignite.internal.processors.query.calcite.util.StripedThreadPoolExecutor;
+import org.apache.ignite.internal.thread.StripedThreadPoolExecutor;
 import org.apache.ignite.internal.util.IgniteUtils;
 import org.apache.ignite.lang.IgniteLogger;
 
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java
index 00c7848..1ab8beb 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractExecutionTest.java
@@ -30,9 +30,9 @@ import org.apache.ignite.internal.processors.query.calcite.exec.QueryTaskExecuto
 import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
 import org.apache.ignite.internal.processors.query.calcite.metadata.FragmentDescription;
 import org.apache.ignite.internal.processors.query.calcite.prepare.PlanningContext;
-import org.apache.ignite.internal.processors.query.calcite.util.StripedThreadPoolExecutor;
 import org.apache.ignite.internal.testframework.IgniteAbstractTest;
 import org.apache.ignite.internal.testframework.IgniteTestUtils;
+import org.apache.ignite.internal.thread.StripedThreadPoolExecutor;
 import org.jetbrains.annotations.NotNull;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/NamedThreadFactory.java b/modules/core/src/main/java/org/apache/ignite/internal/thread/NamedThreadFactory.java
similarity index 53%
rename from modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/NamedThreadFactory.java
rename to modules/core/src/main/java/org/apache/ignite/internal/thread/NamedThreadFactory.java
index a8dd078..9a0691b 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/NamedThreadFactory.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/thread/NamedThreadFactory.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.ignite.raft.jraft.util;
+package org.apache.ignite.internal.thread;
 
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -24,37 +24,82 @@ import org.apache.ignite.lang.IgniteLogger;
  * Named thread factory with prefix.
  */
 public class NamedThreadFactory implements ThreadFactory {
+    /** Logger. */
     private static final IgniteLogger LOG = IgniteLogger.forClass(NamedThreadFactory.class);
 
-    private static final LogUncaughtExceptionHandler UNCAUGHT_EX_HANDLER = new LogUncaughtExceptionHandler();
+    /** LogUncaughtExceptionHandler is used as default handler for uncaught exceptions. */
+    private static final LogUncaughtExceptionHandler DFLT_LOG_UNCAUGHT_EX_HANDLER = new LogUncaughtExceptionHandler();
 
+    /** Thread prefix. */
     private final String prefix;
 
+    /** Thread counter. */
     private final AtomicInteger counter = new AtomicInteger(0);
+
+    /** Thread daemon flag. */
     private final boolean daemon;
 
+    /** Exception handler. */
+    private final Thread.UncaughtExceptionHandler eHnd;
+
+    /**
+     * Constructor
+     *
+     * @param prefix Thread name prefix.
+     */
     public NamedThreadFactory(String prefix) {
         this(prefix, false);
     }
 
+    /**
+     * Constructor
+     *
+     * @param prefix Thread name prefix.
+     * @param daemon Daemon flag.
+     */
     public NamedThreadFactory(String prefix, boolean daemon) {
+        this(prefix, daemon, DFLT_LOG_UNCAUGHT_EX_HANDLER);
+    }
+
+    /**
+     * Constructor
+     *
+     * @param prefix Thread name prefix.
+     * @param daemon Daemon flag.
+     * @param eHnd Uncaught exception handler.
+     */
+    public NamedThreadFactory(String prefix, boolean daemon, Thread.UncaughtExceptionHandler eHnd) {
         super();
         this.prefix = prefix;
         this.daemon = daemon;
+        this.eHnd = eHnd != null ? eHnd : DFLT_LOG_UNCAUGHT_EX_HANDLER;
     }
 
-    @Override
-    public Thread newThread(Runnable r) {
+    /** {@inheritDoc} */
+    @Override public Thread newThread(Runnable r) {
         Thread t = new Thread(r);
+
         t.setDaemon(this.daemon);
-        t.setUncaughtExceptionHandler(UNCAUGHT_EX_HANDLER);
+        t.setUncaughtExceptionHandler(eHnd);
         t.setName(this.prefix + counter.getAndIncrement());
+
         return t;
     }
 
+    /**
+     * Create prefix for thread name.
+     */
+    public static String threadPrefix(String nodeName, String poolName) {
+        return "%" + nodeName + "%" + poolName + "-";
+    }
+
+    /**
+     * Print uncaught exceptions to log.
+     * Default handler of uncaught exceptions for thread pools.
+     */
     private static final class LogUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
-        @Override
-        public void uncaughtException(Thread t, Throwable e) {
+        /** {@inheritDoc} */
+        @Override public void uncaughtException(Thread t, Throwable e) {
             LOG.error("Uncaught exception in thread {}", e, t);
         }
     }
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/StripedThreadPoolExecutor.java b/modules/core/src/main/java/org/apache/ignite/internal/thread/StripedThreadPoolExecutor.java
similarity index 92%
rename from modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/StripedThreadPoolExecutor.java
rename to modules/core/src/main/java/org/apache/ignite/internal/thread/StripedThreadPoolExecutor.java
index d84c953..793e948 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/StripedThreadPoolExecutor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/thread/StripedThreadPoolExecutor.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.ignite.internal.processors.query.calcite.util;
+package org.apache.ignite.internal.thread;
 
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.ArrayList;
@@ -31,8 +31,6 @@ import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-
 import org.apache.ignite.internal.tostring.S;
 import org.jetbrains.annotations.NotNull;
 
@@ -61,16 +59,7 @@ public class StripedThreadPoolExecutor implements ExecutorService {
         long keepAliveTime) {
         execs = new ExecutorService[concurrentLvl];
 
-        ThreadFactory factory = new ThreadFactory() {
-            private final AtomicInteger counter = new AtomicInteger(0);
-
-            @Override public Thread newThread(@NotNull Runnable r) {
-                Thread t = new Thread(r);
-                t.setUncaughtExceptionHandler(eHnd);
-                t.setName(threadNamePrefix + counter.getAndIncrement());
-                return t;
-            }
-        };
+        ThreadFactory factory = new NamedThreadFactory(threadNamePrefix, true, eHnd);
 
         for (int i = 0; i < concurrentLvl; i++) {
             ThreadPoolExecutor executor = new ThreadPoolExecutor(
diff --git a/modules/raft/pom.xml b/modules/raft/pom.xml
index bc45020..8c2966c 100644
--- a/modules/raft/pom.xml
+++ b/modules/raft/pom.xml
@@ -35,6 +35,11 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.ignite</groupId>
+            <artifactId>ignite-core</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.ignite</groupId>
             <artifactId>ignite-raft-client</artifactId>
         </dependency>
 
diff --git a/modules/raft/src/main/java/org/apache/ignite/internal/raft/server/impl/JRaftServerImpl.java b/modules/raft/src/main/java/org/apache/ignite/internal/raft/server/impl/JRaftServerImpl.java
index b383b26..cf4283f 100644
--- a/modules/raft/src/main/java/org/apache/ignite/internal/raft/server/impl/JRaftServerImpl.java
+++ b/modules/raft/src/main/java/org/apache/ignite/internal/raft/server/impl/JRaftServerImpl.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.stream.Collectors;
 import org.apache.ignite.internal.raft.server.RaftServer;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.lang.IgniteInternalException;
 import org.apache.ignite.network.ClusterNode;
 import org.apache.ignite.network.ClusterService;
@@ -134,7 +135,7 @@ public class JRaftServerImpl implements RaftServer {
 
         if (opts.getfSMCallerExecutorDisruptor() == null) {
             opts.setfSMCallerExecutorDisruptor(new StripedDisruptor<FSMCallerImpl.ApplyTask>(
-                "JRaft-FSMCaller-Disruptor",
+                NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-FSMCaller-Disruptor"),
                 opts.getRaftOptions().getDisruptorBufferSize(),
                 () -> new FSMCallerImpl.ApplyTask(),
                 opts.getStripes()));
@@ -142,7 +143,7 @@ public class JRaftServerImpl implements RaftServer {
 
         if (opts.getNodeApplyDisruptor() == null) {
             opts.setNodeApplyDisruptor(new StripedDisruptor<NodeImpl.LogEntryAndClosure>(
-                "JRaft-NodeImpl-Disruptor",
+                NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-NodeImpl-Disruptor"),
                 opts.getRaftOptions().getDisruptorBufferSize(),
                 () -> new NodeImpl.LogEntryAndClosure(),
                 opts.getStripes()));
@@ -150,7 +151,7 @@ public class JRaftServerImpl implements RaftServer {
 
         if (opts.getReadOnlyServiceDisruptor() == null) {
             opts.setReadOnlyServiceDisruptor(new StripedDisruptor<ReadOnlyServiceImpl.ReadIndexEvent>(
-                "JRaft-ReadOnlyService-Disruptor",
+                NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-ReadOnlyService-Disruptor"),
                 opts.getRaftOptions().getDisruptorBufferSize(),
                 () -> new ReadOnlyServiceImpl.ReadIndexEvent(),
                 opts.getStripes()));
@@ -158,7 +159,7 @@ public class JRaftServerImpl implements RaftServer {
 
         if (opts.getLogManagerDisruptor() == null) {
             opts.setLogManagerDisruptor(new StripedDisruptor<LogManagerImpl.StableClosureEvent>(
-                "JRaft-LogManager-Disruptor",
+                NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-LogManager-Disruptor"),
                 opts.getRaftOptions().getDisruptorBufferSize(),
                 () -> new LogManagerImpl.StableClosureEvent(),
                 opts.getStripes()));
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/JRaftUtils.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/JRaftUtils.java
index 36705b2..6ad6349 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/JRaftUtils.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/JRaftUtils.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.ThreadPoolExecutor;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.network.NetworkAddress;
 import org.apache.ignite.raft.jraft.conf.Configuration;
 import org.apache.ignite.raft.jraft.core.FSMCallerImpl;
@@ -35,7 +36,6 @@ import org.apache.ignite.raft.jraft.option.NodeOptions;
 import org.apache.ignite.raft.jraft.option.RpcOptions;
 import org.apache.ignite.raft.jraft.storage.impl.LogManagerImpl;
 import org.apache.ignite.raft.jraft.util.Endpoint;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.StringUtils;
 import org.apache.ignite.raft.jraft.util.ThreadPoolUtil;
 import org.apache.ignite.raft.jraft.util.Utils;
@@ -128,7 +128,10 @@ public final class JRaftUtils {
      * @return The executor.
      */
     public static ExecutorService createCommonExecutor(NodeOptions opts) {
-        return createExecutor("JRaft-Common-Executor-" + opts.getServerName() + "-", opts.getCommonThreadPollSize());
+        return createExecutor(
+            NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-Common-Executor"),
+            opts.getCommonThreadPollSize()
+        );
     }
 
     /**
@@ -136,8 +139,10 @@ public final class JRaftUtils {
      * @return The executor.
      */
     public static FixedThreadsExecutorGroup createAppendEntriesExecutor(NodeOptions opts) {
-        return createStripedExecutor("JRaft-AppendEntries-Processor-" + opts.getServerName() + "-",
-            Utils.APPEND_ENTRIES_THREADS_POOL_SIZE, Utils.MAX_APPEND_ENTRIES_TASKS_PER_THREAD);
+        return createStripedExecutor(
+            NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-AppendEntries-Processor"),
+            Utils.APPEND_ENTRIES_THREADS_POOL_SIZE, Utils.MAX_APPEND_ENTRIES_TASKS_PER_THREAD
+        );
     }
 
     /**
@@ -145,8 +150,10 @@ public final class JRaftUtils {
      * @return The executor.
      */
     public static ExecutorService createRequestExecutor(NodeOptions opts) {
-        return createExecutor("JRaft-Request-Processor-" + opts.getServerName() + "-",
-            opts.getRaftRpcThreadPoolSize());
+        return createExecutor(
+            NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-Request-Processor"),
+            opts.getRaftRpcThreadPoolSize()
+        );
     }
 
     /**
@@ -155,7 +162,8 @@ public final class JRaftUtils {
      * @return The service.
      */
     public static ExecutorService createClientExecutor(RpcOptions opts, String name) {
-        String prefix = "JRaft-Response-Processor-" + name + "-";
+        String prefix = NamedThreadFactory.threadPrefix(name, "JRaft-Response-Processor");
+
         return ThreadPoolUtil.newBuilder()
             .poolName(prefix) //
             .enableMetric(true) //
@@ -172,7 +180,10 @@ public final class JRaftUtils {
      * @return The scheduler.
      */
     public static Scheduler createScheduler(NodeOptions opts) {
-        return new TimerManager(opts.getTimerPoolSize(), "JRaft-Node-Scheduler-" + opts.getServerName() + "-");
+        return new TimerManager(
+            opts.getTimerPoolSize(),
+            NamedThreadFactory.threadPrefix(opts.getServerName(), "JRaft-Node-Scheduler")
+        );
     }
 
     /**
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/TimerManager.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/TimerManager.java
index 2531c89..d3f5462 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/TimerManager.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/core/TimerManager.java
@@ -19,7 +19,7 @@ package org.apache.ignite.raft.jraft.core;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.ThreadPoolUtil;
 
 /**
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/DisruptorBuilder.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/DisruptorBuilder.java
index 79aaa35..6d25818 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/DisruptorBuilder.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/DisruptorBuilder.java
@@ -16,13 +16,13 @@
  */
 package org.apache.ignite.raft.jraft.disruptor;
 
+import java.util.concurrent.ThreadFactory;
 import com.lmax.disruptor.BlockingWaitStrategy;
 import com.lmax.disruptor.EventFactory;
 import com.lmax.disruptor.WaitStrategy;
 import com.lmax.disruptor.dsl.Disruptor;
 import com.lmax.disruptor.dsl.ProducerType;
-import java.util.concurrent.ThreadFactory;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.Requires;
 
 /**
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/StripedDisruptor.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/StripedDisruptor.java
index f23ec49..000f424 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/StripedDisruptor.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/disruptor/StripedDisruptor.java
@@ -16,6 +16,9 @@
  */
 package org.apache.ignite.raft.jraft.disruptor;
 
+import java.util.ArrayList;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.BiConsumer;
 import com.lmax.disruptor.BlockingWaitStrategy;
 import com.lmax.disruptor.EventFactory;
 import com.lmax.disruptor.EventHandler;
@@ -23,11 +26,8 @@ import com.lmax.disruptor.ExceptionHandler;
 import com.lmax.disruptor.RingBuffer;
 import com.lmax.disruptor.dsl.Disruptor;
 import com.lmax.disruptor.dsl.ProducerType;
-import java.util.ArrayList;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.BiConsumer;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.lang.IgniteLogger;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 
 import static org.apache.ignite.lang.LoggerMessageHelper.format;
 
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/RepeatedTimer.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/RepeatedTimer.java
index 3476aa9..92c66fe 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/RepeatedTimer.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/RepeatedTimer.java
@@ -19,6 +19,7 @@ package org.apache.ignite.raft.jraft.util;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.lang.IgniteLogger;
 import org.apache.ignite.raft.jraft.util.timer.HashedWheelTimer;
 import org.apache.ignite.raft.jraft.util.timer.Timeout;
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultFixedThreadsExecutorGroupFactory.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultFixedThreadsExecutorGroupFactory.java
index 3a98cc3..49bf3d7 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultFixedThreadsExecutorGroupFactory.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultFixedThreadsExecutorGroupFactory.java
@@ -18,7 +18,7 @@ package org.apache.ignite.raft.jraft.util.concurrent;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ThreadFactory;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.Requires;
 import org.apache.ignite.raft.jraft.util.Utils;
 
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultSingleThreadExecutor.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultSingleThreadExecutor.java
index 25730e7..6ef648c 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultSingleThreadExecutor.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/concurrent/DefaultSingleThreadExecutor.java
@@ -19,8 +19,8 @@ package org.apache.ignite.raft.jraft.util.concurrent;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.ExecutorServiceHelper;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.ThreadPoolUtil;
 
 /**
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultRaftTimerFactory.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultRaftTimerFactory.java
index 83a0956..5710172 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultRaftTimerFactory.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultRaftTimerFactory.java
@@ -17,9 +17,9 @@
 package org.apache.ignite.raft.jraft.util.timer;
 
 import java.util.concurrent.TimeUnit;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.core.Scheduler;
 import org.apache.ignite.raft.jraft.core.TimerManager;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 
 /**
  * RAFT timers and schedulers factory.
diff --git a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultTimer.java b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultTimer.java
index 8b9791a..07637fe 100644
--- a/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultTimer.java
+++ b/modules/raft/src/main/java/org/apache/ignite/raft/jraft/util/timer/DefaultTimer.java
@@ -21,8 +21,8 @@ import java.util.Set;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.ExecutorServiceHelper;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.Requires;
 import org.apache.ignite.raft.jraft.util.ThreadPoolUtil;
 
diff --git a/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/MpscSingleThreadExecutorTest.java b/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/MpscSingleThreadExecutorTest.java
index c0d6dd5..c59e3ba 100644
--- a/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/MpscSingleThreadExecutorTest.java
+++ b/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/MpscSingleThreadExecutorTest.java
@@ -22,8 +22,8 @@ import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicLong;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.lang.IgniteLogger;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 import org.junit.jupiter.api.Test;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
diff --git a/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/SingleThreadExecutorBenchmark.java b/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/SingleThreadExecutorBenchmark.java
index d0ab65e..cb536c1 100644
--- a/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/SingleThreadExecutorBenchmark.java
+++ b/modules/raft/src/test/java/org/apache/ignite/raft/jraft/util/concurrent/SingleThreadExecutorBenchmark.java
@@ -16,7 +16,6 @@
  */
 package org.apache.ignite.raft.jraft.util.concurrent;
 
-import io.netty.util.concurrent.DefaultEventExecutor;
 import java.util.Queue;
 import java.util.concurrent.ArrayBlockingQueue;
 import java.util.concurrent.ConcurrentLinkedQueue;
@@ -25,8 +24,9 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.LinkedTransferQueue;
 import java.util.concurrent.TimeUnit;
+import io.netty.util.concurrent.DefaultEventExecutor;
+import org.apache.ignite.internal.thread.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.ExecutorServiceHelper;
-import org.apache.ignite.raft.jraft.util.NamedThreadFactory;
 import org.apache.ignite.raft.jraft.util.ThreadPoolUtil;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;