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

jt2594838 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 8735702a775 Reduce repeated failure logs (#18175)
8735702a775 is described below

commit 8735702a77584760f7c370aa591767e0bc7f3be2
Author: Caideyipi <[email protected]>
AuthorDate: Mon Jul 13 12:10:54 2026 +0800

    Reduce repeated failure logs (#18175)
    
    * Reduce repeated failure logs
    
    * Fix Chinese log message encoding
---
 .../handlers/rpc/DataNodeTSStatusRPCHandler.java   |  4 ++
 .../confignode/conf/ConfigNodeDescriptor.java      |  4 +-
 .../manager/partition/PartitionManager.java        |  8 ++-
 .../agent/runtime/PipeConfigNodeRuntimeAgent.java  | 10 ++--
 .../apache/iotdb/db/i18n/DataNodePipeMessages.java |  2 -
 .../apache/iotdb/db/i18n/DataNodePipeMessages.java |  2 -
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  |  4 +-
 .../agent/runtime/PipeDataNodeRuntimeAgent.java    | 10 ++--
 .../protocol/thrift/IoTDBDataNodeReceiver.java     |  4 +-
 .../thrift/impl/DataNodeRegionManager.java         |  8 ++-
 .../schemaregion/SchemaRegionLoader.java           |  8 ++-
 .../apache/iotdb/commons/i18n/CommonMessages.java  |  4 ++
 .../apache/iotdb/commons/i18n/PipeMessages.java    |  5 +-
 .../apache/iotdb/commons/i18n/CommonMessages.java  |  4 ++
 .../apache/iotdb/commons/i18n/PipeMessages.java    |  5 +-
 .../apache/iotdb/commons/conf/CommonConfig.java    | 47 ++++++++++------
 .../apache/iotdb/commons/disk/FolderManager.java   |  5 +-
 .../LoggerPeriodicalLogReducer.java}               | 65 ++++++++++++++--------
 .../iotdb/commons/pipe/config/PipeDescriptor.java  | 16 ++++--
 .../commons/pipe/receiver/IoTDBFileReceiver.java   | 16 ++++--
 .../commons/pipe/resource/log/PipeLogger.java      | 22 +++-----
 .../LoggerPeriodicalLogReducerTest.java}           | 21 +++----
 22 files changed, 171 insertions(+), 103 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/handlers/rpc/DataNodeTSStatusRPCHandler.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/handlers/rpc/DataNodeTSStatusRPCHandler.java
index 629e7fc393f..3597293b4b1 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/handlers/rpc/DataNodeTSStatusRPCHandler.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/client/async/handlers/rpc/DataNodeTSStatusRPCHandler.java
@@ -21,6 +21,7 @@ package org.apache.iotdb.confignode.client.async.handlers.rpc;
 
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.confignode.client.async.CnToDnAsyncRequestType;
 import org.apache.iotdb.confignode.i18n.ConfigNodeMessages;
 import org.apache.iotdb.rpc.RpcUtils;
@@ -91,6 +92,9 @@ public class DataNodeTSStatusRPCHandler extends 
DataNodeAsyncRequestRPCHandler<T
   }
 
   private void logFailure(final String format, final Object... args) {
+    if (!LoggerPeriodicalLogReducer.shouldLog(format, args)) {
+      return;
+    }
     if (requestType == CnToDnAsyncRequestType.SUBSCRIPTION_PUSH_RUNTIME) {
       LOGGER.warn(format, args);
     } else {
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
index 290e7c7f455..ef56f9c6125 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java
@@ -25,8 +25,8 @@ import org.apache.iotdb.commons.conf.ConfigurationFileUtils;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.conf.TrimProperties;
 import org.apache.iotdb.commons.exception.BadNodeUrlException;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.pipe.config.PipeDescriptor;
-import org.apache.iotdb.commons.pipe.resource.log.PipePeriodicalLogReducer;
 import org.apache.iotdb.commons.schema.SchemaConstant;
 import org.apache.iotdb.commons.utils.NodeUrlUtils;
 import org.apache.iotdb.confignode.i18n.ConfigNodeMessages;
@@ -959,7 +959,7 @@ public class ConfigNodeDescriptor {
 
   private void loadPipeHotModifiedProp(TrimProperties properties) throws 
IOException {
     PipeDescriptor.loadPipeProps(commonDescriptor.getConfig(), properties, 
true);
-    PipePeriodicalLogReducer.update();
+    LoggerPeriodicalLogReducer.update();
   }
 
   public static ConfigNodeDescriptor getInstance() {
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
index 156493f80e3..7efdae278db 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/partition/PartitionManager.java
@@ -33,6 +33,7 @@ import 
org.apache.iotdb.commons.concurrent.threadpool.ScheduledExecutorUtil;
 import org.apache.iotdb.commons.conf.CommonConfig;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.enums.RepairDataPartitionTableProgressState;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.partition.DataPartitionTable;
 import org.apache.iotdb.commons.partition.SchemaPartitionTable;
 import org.apache.iotdb.commons.partition.executor.SeriesPartitionExecutor;
@@ -308,7 +309,12 @@ public class PartitionManager {
           return resp;
         }
 
-        LOGGER.error(ManagerMessages.CREATE_SCHEMAPARTITION_FAILED_BECAUSE, e);
+        if (LoggerPeriodicalLogReducer.shouldLog(
+            ManagerMessages.CREATE_SCHEMAPARTITION_FAILED_BECAUSE
+                + e.getClass().getName()
+                + String.valueOf(e.getMessage()))) {
+          LOGGER.error(ManagerMessages.CREATE_SCHEMAPARTITION_FAILED_BECAUSE, 
e);
+        }
         resp.setStatus(
             new 
TSStatus(TSStatusCode.NO_AVAILABLE_REGION_GROUP.getStatusCode())
                 .setMessage(e.getMessage()));
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/runtime/PipeConfigNodeRuntimeAgent.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/runtime/PipeConfigNodeRuntimeAgent.java
index fb0a89e71ca..0599a215994 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/runtime/PipeConfigNodeRuntimeAgent.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/runtime/PipeConfigNodeRuntimeAgent.java
@@ -21,13 +21,13 @@ package 
org.apache.iotdb.confignode.manager.pipe.agent.runtime;
 
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeException;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.pipe.agent.runtime.PipePeriodicalJobExecutor;
 import 
org.apache.iotdb.commons.pipe.agent.runtime.PipePeriodicalPhantomReferenceCleaner;
 import org.apache.iotdb.commons.pipe.agent.task.meta.PipeTaskMeta;
 import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.commons.pipe.event.EnrichedEvent;
 import org.apache.iotdb.commons.pipe.resource.log.PipeLogger;
-import org.apache.iotdb.commons.pipe.resource.log.PipePeriodicalLogReducer;
 import org.apache.iotdb.commons.service.IService;
 import org.apache.iotdb.commons.service.ServiceType;
 import org.apache.iotdb.confignode.i18n.ManagerMessages;
@@ -59,7 +59,7 @@ public class PipeConfigNodeRuntimeAgent implements IService {
   @Override
   public synchronized void start() {
     PipeConfig.getInstance().printAllConfigs();
-    initPipePeriodicalLogReducer();
+    initLoggerPeriodicalLogReducer();
 
     // PipeTasks will not be started here and will be started by 
"HandleLeaderChange"
     // procedure when the consensus layer notify leader ready
@@ -96,10 +96,10 @@ public class PipeConfigNodeRuntimeAgent implements IService 
{
     LOGGER.info(ManagerMessages.PIPERUNTIMECONFIGNODEAGENT_STOPPED);
   }
 
-  private void initPipePeriodicalLogReducer() {
-    PipePeriodicalLogReducer.setMemoryResizeFunction(
+  private void initLoggerPeriodicalLogReducer() {
+    LoggerPeriodicalLogReducer.setMemoryResizeFunction(
         PipeConfigNodeResourceManager.memory()::resizeLogReducerMemory);
-    PipeLogger.setLogger(PipePeriodicalLogReducer::log);
+    PipeLogger.setLogger(LoggerPeriodicalLogReducer::log);
   }
 
   public boolean isShutdown() {
diff --git 
a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
 
b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
index 6f419e1cf93..4dbdbd8803f 100644
--- 
a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
+++ 
b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
@@ -1380,8 +1380,6 @@ public final class DataNodePipeMessages {
       "Interrupted while waiting for the lock.";
   public static final String IS_RELEASED_AFTER_THREAD_INTERRUPTION =
       "{} is released after thread interruption.";
-  public static final String PIPEPERIODICALLOGREDUCER_IS_ALLOCATED_TO_BYTES =
-      "PipePeriodicalLogReducer is allocated to {} bytes.";
   public static final String 
PIPETSFILERESOURCE_CACHED_DEVICEISALIGNEDMAP_FOR_TSFILE =
       "PipeTsFileResource: Cached deviceIsAlignedMap for tsfile {}.";
   public static final String PIPETSFILERESOURCE_CACHED_OBJECTS_FOR_TSFILE =
diff --git 
a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
 
b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
index b7c77289044..f97169709a7 100644
--- 
a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
+++ 
b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodePipeMessages.java
@@ -1298,8 +1298,6 @@ public final class DataNodePipeMessages {
   public static final String INTERRUPTED_WHILE_WAITING_FOR_THE_LOCK = 
"等待锁时被中断。";
   public static final String IS_RELEASED_AFTER_THREAD_INTERRUPTION =
       "{} 在线程中断后已被释放。";
-  public static final String PIPEPERIODICALLOGREDUCER_IS_ALLOCATED_TO_BYTES =
-      "PipePeriodicalLogReducer 已分配 {} 字节。";
   public static final String 
PIPETSFILERESOURCE_CACHED_DEVICEISALIGNEDMAP_FOR_TSFILE =
       "PipeTsFileResource:已为 tsfile {} 缓存 deviceIsAlignedMap。";
   public static final String PIPETSFILERESOURCE_CACHED_OBJECTS_FOR_TSFILE =
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 0830b746539..e3862bc0e9b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -26,9 +26,9 @@ import org.apache.iotdb.commons.conf.ConfigurationFileUtils;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.conf.TrimProperties;
 import org.apache.iotdb.commons.exception.BadNodeUrlException;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.memory.MemoryManager;
 import org.apache.iotdb.commons.pipe.config.PipeDescriptor;
-import org.apache.iotdb.commons.pipe.resource.log.PipePeriodicalLogReducer;
 import org.apache.iotdb.commons.schema.SchemaConstant;
 import org.apache.iotdb.commons.service.metric.MetricService;
 import org.apache.iotdb.commons.utils.JVMCommonUtils;
@@ -2749,7 +2749,7 @@ public class IoTDBDescriptor {
 
   private void loadPipeHotModifiedProp(TrimProperties properties) throws 
IOException {
     PipeDescriptor.loadPipeProps(commonDescriptor.getConfig(), properties, 
true);
-    PipePeriodicalLogReducer.update();
+    LoggerPeriodicalLogReducer.update();
   }
 
   @SuppressWarnings("squid:S3518") // "proportionSum" can't be zero
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipeDataNodeRuntimeAgent.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipeDataNodeRuntimeAgent.java
index ed7f07d6ade..1a589d5970d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipeDataNodeRuntimeAgent.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/runtime/PipeDataNodeRuntimeAgent.java
@@ -26,6 +26,7 @@ import 
org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.StartupException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeCriticalException;
 import org.apache.iotdb.commons.exception.pipe.PipeRuntimeException;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.pipe.agent.runtime.PipePeriodicalJobExecutor;
@@ -35,7 +36,6 @@ import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.commons.pipe.datastructure.pattern.IoTDBTreePattern;
 import org.apache.iotdb.commons.pipe.event.EnrichedEvent;
 import org.apache.iotdb.commons.pipe.resource.log.PipeLogger;
-import org.apache.iotdb.commons.pipe.resource.log.PipePeriodicalLogReducer;
 import org.apache.iotdb.commons.service.IService;
 import org.apache.iotdb.commons.service.ServiceType;
 import org.apache.iotdb.commons.utils.TestOnly;
@@ -95,23 +95,23 @@ public class PipeDataNodeRuntimeAgent implements IService {
 
     IoTDBTreePattern.setDevicePathGetter(PipeDataNodeRuntimeAgent::getPath);
     
IoTDBTreePattern.setMeasurementPathGetter(PipeDataNodeRuntimeAgent::getPath);
-    initPipePeriodicalLogReducer();
+    initLoggerPeriodicalLogReducer();
   }
 
-  private void initPipePeriodicalLogReducer() {
+  private void initLoggerPeriodicalLogReducer() {
     if (pipeLogReducerMemoryBlock == null) {
       pipeLogReducerMemoryBlock =
           PipeDataNodeResourceManager.memory()
               
.tryAllocate(PipeConfig.getInstance().getPipeLoggerCacheMaxSizeInBytes());
     }
 
-    PipePeriodicalLogReducer.setMemoryResizeFunction(
+    LoggerPeriodicalLogReducer.setMemoryResizeFunction(
         targetSizeInBytes -> {
           PipeDataNodeResourceManager.memory()
               .resize(pipeLogReducerMemoryBlock, Math.max(0, 
targetSizeInBytes), false);
           return pipeLogReducerMemoryBlock.getMemoryUsageInBytes();
         });
-    PipeLogger.setLogger(PipePeriodicalLogReducer::log);
+    PipeLogger.setLogger(LoggerPeriodicalLogReducer::log);
   }
 
   private static MeasurementPath getPath(final IDeviceID device, final String 
measurement)
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
index 81879355b62..4cca55d705f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/thrift/IoTDBDataNodeReceiver.java
@@ -29,6 +29,7 @@ import 
org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.IoTDBException;
 import org.apache.iotdb.commons.exception.IoTDBRuntimeException;
 import 
org.apache.iotdb.commons.exception.pipe.PipeRuntimeOutOfMemoryCriticalException;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.commons.pipe.datastructure.pattern.IoTDBTreePattern;
@@ -38,7 +39,6 @@ import 
org.apache.iotdb.commons.pipe.datastructure.pattern.TreePattern;
 import org.apache.iotdb.commons.pipe.receiver.IoTDBFileReceiver;
 import org.apache.iotdb.commons.pipe.receiver.PipeReceiverStatusHandler;
 import org.apache.iotdb.commons.pipe.resource.log.PipeLogger;
-import org.apache.iotdb.commons.pipe.resource.log.PipePeriodicalLogReducer;
 import 
org.apache.iotdb.commons.pipe.sink.payload.airgap.AirGapPseudoTPipeTransferRequest;
 import 
org.apache.iotdb.commons.pipe.sink.payload.thrift.common.PipeTransferSliceReqHandler;
 import 
org.apache.iotdb.commons.pipe.sink.payload.thrift.request.PipeRequestType;
@@ -1093,7 +1093,7 @@ public class IoTDBDataNodeReceiver extends 
IoTDBFileReceiver {
   static boolean shouldLogStatementException(
       final long receiverId, final Statement statement, final Exception e) {
     // Use the reducer cache as a gate. The actual stack trace is logged only 
when it passes.
-    return PipePeriodicalLogReducer.log(
+    return LoggerPeriodicalLogReducer.log(
         message -> {},
         DataNodePipeMessages.RECEIVER_ID_STATEMENT_EXCEPTION_MESSAGE,
         receiverId,
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java
index 4d427fde9c1..9704ebc7c05 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/DataNodeRegionManager.java
@@ -29,6 +29,7 @@ import org.apache.iotdb.commons.consensus.DataRegionId;
 import org.apache.iotdb.commons.consensus.SchemaRegionId;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.MetadataException;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.consensus.common.Peer;
 import org.apache.iotdb.consensus.exception.ConsensusException;
 import 
org.apache.iotdb.consensus.exception.ConsensusGroupAlreadyExistException;
@@ -127,7 +128,12 @@ public class DataNodeRegionManager {
       tsStatus = new TSStatus(TSStatusCode.ILLEGAL_PATH.getStatusCode());
       
tsStatus.setMessage(DataNodeMiscMessages.CREATE_SCHEMA_REGION_FAILED_ILLEGAL_PATH_MSG);
     } catch (final MetadataException e2) {
-      LOGGER.error(DataNodeMiscMessages.CREATE_SCHEMA_REGION_FAILED, 
storageGroup, e2.getMessage());
+      if (LoggerPeriodicalLogReducer.shouldLog(
+          DataNodeMiscMessages.CREATE_SCHEMA_REGION_FAILED_FMT,
+          e2.getClass().getName() + String.valueOf(e2.getMessage()))) {
+        LOGGER.error(
+            DataNodeMiscMessages.CREATE_SCHEMA_REGION_FAILED, storageGroup, 
e2.getMessage());
+      }
       tsStatus = new 
TSStatus(TSStatusCode.CREATE_REGION_ERROR.getStatusCode());
       tsStatus.setMessage(
           String.format(DataNodeMiscMessages.CREATE_SCHEMA_REGION_FAILED_FMT, 
e2.getMessage()));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/SchemaRegionLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/SchemaRegionLoader.java
index b4f06e2e211..365f380830a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/SchemaRegionLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/SchemaRegionLoader.java
@@ -115,7 +115,13 @@ public class SchemaRegionLoader {
       throws MetadataException {
     try {
       return currentConstructor.newInstance(schemaRegionParams);
-    } catch (InstantiationException | IllegalAccessException | 
InvocationTargetException e) {
+    } catch (InvocationTargetException e) {
+      if (e.getTargetException() instanceof MetadataException) {
+        throw (MetadataException) e.getTargetException();
+      }
+      logger.warn(e.getMessage(), e);
+      throw new MetadataException(e);
+    } catch (InstantiationException | IllegalAccessException e) {
       logger.warn(e.getMessage(), e);
       throw new MetadataException(e);
     }
diff --git 
a/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/CommonMessages.java
 
b/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/CommonMessages.java
index ed63849b132..ae97d09ddc2 100644
--- 
a/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/CommonMessages.java
+++ 
b/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/CommonMessages.java
@@ -69,6 +69,10 @@ public final class CommonMessages {
   // --- subscription ---
   public static final String CONFIG_PRINT = "{}: {}";
 
+  // --- log ---
+  public static final String 
LOG_LOGGERPERIODICALLOGREDUCER_IS_ALLOCATED_TO_ARG_BYTES_C8373CF5 =
+      "LoggerPeriodicalLogReducer is allocated to {} bytes.";
+
   // --- partition ---
   public static final String DATABASE_NOT_EXISTS_AND_AUTO_CREATE_DISABLED =
       "Database %s not exists and failed to create automatically because 
enable_auto_create_schema is FALSE.";
diff --git 
a/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/PipeMessages.java
 
b/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/PipeMessages.java
index afb977f85a2..eb38e3524a2 100644
--- 
a/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/PipeMessages.java
+++ 
b/iotdb-core/node-commons/src/main/i18n/en/org/apache/iotdb/commons/i18n/PipeMessages.java
@@ -187,7 +187,7 @@ public final class PipeMessages {
   public static final String CONFIG_PIPE_RECEIVER_LOAD_CONVERSION_ENABLED =
       "PipeReceiverLoadConversionEnabled: {}";
   public static final String CONFIG_PIPE_PERIODICAL_LOG_MIN_INTERVAL_SECONDS =
-      "PipePeriodicalLogMinIntervalSeconds: {}";
+      "LoggerPeriodicalLogMinIntervalSeconds: {}";
   public static final String 
CONFIG_PIPE_RETRY_LOCALLY_FOR_PARALLEL_OR_USER_CONFLICT =
       "PipeRetryLocallyForParallelOrUserConflict: {}";
   public static final String CONFIG_PIPE_META_REPORT_MAX_LOG_NUM_PER_ROUND =
@@ -199,7 +199,7 @@ public final class PipeMessages {
   public static final String CONFIG_PIPE_TSFILE_PIN_MAX_LOG_INTERVAL_ROUNDS =
       "PipeTsFilePinMaxLogIntervalRounds: {}";
   public static final String CONFIG_PIPE_LOGGER_CACHE_MAX_SIZE_IN_BYTES =
-      "PipeLoggerCacheMaxSizeInBytes: {}";
+      "LoggerCacheMaxSizeInBytes: {}";
   public static final String CONFIG_PIPE_MEMORY_MANAGEMENT_ENABLED =
       "PipeMemoryManagementEnabled: {}";
   public static final String CONFIG_PIPE_MEMORY_ALLOCATE_MAX_RETRIES =
@@ -947,6 +947,5 @@ public final class PipeMessages {
   public static final String 
MESSAGE_DATAPARTITIONTABLE_GENERATION_COMPLETED_SUCCESSFULLY_E076E3B2 = 
"DataPartitionTable generation completed successfully";
   public static final String 
MESSAGE_DATAPARTITIONTABLE_GENERATION_FAILED_D85CD23A = "DataPartitionTable 
generation failed: ";
   public static final String MESSAGE_UNKNOWN_TASK_STATUS_E05D98F0 = "Unknown 
task status: ";
-  public static final String 
MESSAGE_PIPEPERIODICALLOGREDUCER_IS_ALLOCATED_TO_ARG_BYTES_54E0E369 = 
"PipePeriodicalLogReducer is allocated to {} bytes.";
 
 }
diff --git 
a/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/CommonMessages.java
 
b/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/CommonMessages.java
index ce41f1f3bfc..71c45ccaf3f 100644
--- 
a/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/CommonMessages.java
+++ 
b/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/CommonMessages.java
@@ -68,6 +68,10 @@ public final class CommonMessages {
   // --- subscription ---
   public static final String CONFIG_PRINT = "{}:{}";
 
+  // --- log ---
+  public static final String 
LOG_LOGGERPERIODICALLOGREDUCER_IS_ALLOCATED_TO_ARG_BYTES_C8373CF5 =
+      "LoggerPeriodicalLogReducer 已分配 {} 字节。";
+
   // --- partition ---
   public static final String DATABASE_NOT_EXISTS_AND_AUTO_CREATE_DISABLED =
       "Database %s 不存在,且由于 enable_auto_create_schema 为 FALSE,无法自动创建。";
diff --git 
a/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/PipeMessages.java
 
b/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/PipeMessages.java
index 87f1601a754..6914f4b1379 100644
--- 
a/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/PipeMessages.java
+++ 
b/iotdb-core/node-commons/src/main/i18n/zh/org/apache/iotdb/commons/i18n/PipeMessages.java
@@ -186,7 +186,7 @@ public final class PipeMessages {
   public static final String CONFIG_PIPE_RECEIVER_LOAD_CONVERSION_ENABLED =
       "PipeReceiverLoadConversionEnabled: {}";
   public static final String CONFIG_PIPE_PERIODICAL_LOG_MIN_INTERVAL_SECONDS =
-      "PipePeriodicalLogMinIntervalSeconds: {}";
+      "LoggerPeriodicalLogMinIntervalSeconds: {}";
   public static final String 
CONFIG_PIPE_RETRY_LOCALLY_FOR_PARALLEL_OR_USER_CONFLICT =
       "PipeRetryLocallyForParallelOrUserConflict: {}";
   public static final String CONFIG_PIPE_META_REPORT_MAX_LOG_NUM_PER_ROUND =
@@ -198,7 +198,7 @@ public final class PipeMessages {
   public static final String CONFIG_PIPE_TSFILE_PIN_MAX_LOG_INTERVAL_ROUNDS =
       "PipeTsFilePinMaxLogIntervalRounds: {}";
   public static final String CONFIG_PIPE_LOGGER_CACHE_MAX_SIZE_IN_BYTES =
-      "PipeLoggerCacheMaxSizeInBytes: {}";
+      "LoggerCacheMaxSizeInBytes: {}";
   public static final String CONFIG_PIPE_MEMORY_MANAGEMENT_ENABLED =
       "PipeMemoryManagementEnabled: {}";
   public static final String CONFIG_PIPE_MEMORY_ALLOCATE_MAX_RETRIES =
@@ -915,6 +915,5 @@ public final class PipeMessages {
   public static final String 
MESSAGE_DATAPARTITIONTABLE_GENERATION_COMPLETED_SUCCESSFULLY_E076E3B2 = 
"DataPartitionTable 生成已成功完成";
   public static final String 
MESSAGE_DATAPARTITIONTABLE_GENERATION_FAILED_D85CD23A = "DataPartitionTable 
生成失败:";
   public static final String MESSAGE_UNKNOWN_TASK_STATUS_E05D98F0 = "未知任务状态:";
-  public static final String 
MESSAGE_PIPEPERIODICALLOGREDUCER_IS_ALLOCATED_TO_ARG_BYTES_54E0E369 = 
"PipePeriodicalLogReducer 已分配 {} 字节。";
 
 }
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index 8b98da6bc31..c811ae9f5f9 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -329,8 +329,8 @@ public class CommonConfig {
           64 * 1024 * 1024,
           (int) Math.min(Runtime.getRuntime().maxMemory() / 64, 
Integer.MAX_VALUE));
   private boolean pipeReceiverLoadConversionEnabled = false;
-  private volatile long pipePeriodicalLogMinIntervalSeconds = 60;
-  private volatile long pipeLoggerCacheMaxSizeInBytes = 16 * MB;
+  private volatile long loggerPeriodicalLogMinIntervalSeconds = 60;
+  private volatile long loggerCacheMaxSizeInBytes = 64 * MB;
 
   private volatile double pipeMetaReportMaxLogNumPerRound = 0.1;
   private volatile int pipeMetaReportMaxLogIntervalRounds = 360;
@@ -1875,33 +1875,48 @@ public class CommonConfig {
         pipeReceiverLoadConversionEnabled);
   }
 
+  public long getLoggerPeriodicalLogMinIntervalSeconds() {
+    return loggerPeriodicalLogMinIntervalSeconds;
+  }
+
+  public void setLoggerPeriodicalLogMinIntervalSeconds(long 
loggerPeriodicalLogMinIntervalSeconds) {
+    if (this.loggerPeriodicalLogMinIntervalSeconds == 
loggerPeriodicalLogMinIntervalSeconds) {
+      return;
+    }
+    this.loggerPeriodicalLogMinIntervalSeconds = 
loggerPeriodicalLogMinIntervalSeconds;
+    logger.info(
+        ConfigMessages.CONFIG_SET_TO,
+        "loggerPeriodicalLogMinIntervalSeconds",
+        loggerPeriodicalLogMinIntervalSeconds);
+  }
+
   public long getPipePeriodicalLogMinIntervalSeconds() {
-    return pipePeriodicalLogMinIntervalSeconds;
+    return getLoggerPeriodicalLogMinIntervalSeconds();
   }
 
   public void setPipePeriodicalLogMinIntervalSeconds(long 
pipePeriodicalLogMinIntervalSeconds) {
-    if (this.pipePeriodicalLogMinIntervalSeconds == 
pipePeriodicalLogMinIntervalSeconds) {
+    
setLoggerPeriodicalLogMinIntervalSeconds(pipePeriodicalLogMinIntervalSeconds);
+  }
+
+  public long getLoggerCacheMaxSizeInBytes() {
+    return loggerCacheMaxSizeInBytes;
+  }
+
+  public void setLoggerCacheMaxSizeInBytes(long loggerCacheMaxSizeInBytes) {
+    if (this.loggerCacheMaxSizeInBytes == loggerCacheMaxSizeInBytes) {
       return;
     }
-    this.pipePeriodicalLogMinIntervalSeconds = 
pipePeriodicalLogMinIntervalSeconds;
+    this.loggerCacheMaxSizeInBytes = loggerCacheMaxSizeInBytes;
     logger.info(
-        
ConfigMessages.LOG_PIPEPERIODICALLOGMININTERVALSECONDS_SET_ARG_5535C79E,
-        pipePeriodicalLogMinIntervalSeconds);
+        ConfigMessages.CONFIG_SET_TO, "loggerCacheMaxSizeInBytes", 
loggerCacheMaxSizeInBytes);
   }
 
   public long getPipeLoggerCacheMaxSizeInBytes() {
-    return pipeLoggerCacheMaxSizeInBytes;
+    return getLoggerCacheMaxSizeInBytes();
   }
 
   public void setPipeLoggerCacheMaxSizeInBytes(long 
pipeLoggerCacheMaxSizeInBytes) {
-    if (this.pipeLoggerCacheMaxSizeInBytes == pipeLoggerCacheMaxSizeInBytes) {
-      return;
-    }
-    this.pipeLoggerCacheMaxSizeInBytes = pipeLoggerCacheMaxSizeInBytes;
-    logger.info(
-        ConfigMessages.CONFIG_SET_TO,
-        "pipeLoggerCacheMaxSizeInBytes",
-        pipeLoggerCacheMaxSizeInBytes);
+    setLoggerCacheMaxSizeInBytes(pipeLoggerCacheMaxSizeInBytes);
   }
 
   public int getPipeReceiverReqDecompressedMaxLengthInBytes() {
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/FolderManager.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/FolderManager.java
index 08e2b7872ef..a7707077f84 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/FolderManager.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/disk/FolderManager.java
@@ -29,6 +29,7 @@ import 
org.apache.iotdb.commons.disk.strategy.RandomOnDiskUsableSpaceStrategy;
 import org.apache.iotdb.commons.disk.strategy.SequenceStrategy;
 import org.apache.iotdb.commons.exception.DiskSpaceInsufficientException;
 import org.apache.iotdb.commons.i18n.UtilMessages;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.utils.JVMCommonUtils;
 
 import org.slf4j.Logger;
@@ -124,7 +125,9 @@ public class FolderManager {
 
   private void changeToReadOnlyIfDiskFull(DiskSpaceInsufficientException e) {
     if (!hasFolderWithAvailableDiskSpace()) {
-      logger.error(UtilMessages.ALL_FOLDERS_FULL_CHANGE_TO_READ_ONLY, e);
+      if 
(LoggerPeriodicalLogReducer.shouldLog(UtilMessages.ALL_FOLDERS_FULL_CHANGE_TO_READ_ONLY))
 {
+        logger.error(UtilMessages.ALL_FOLDERS_FULL_CHANGE_TO_READ_ONLY, e);
+      }
       
CommonDescriptor.getInstance().getConfig().setNodeStatus(NodeStatus.ReadOnly);
       
CommonDescriptor.getInstance().getConfig().setStatusReason(NodeStatus.DISK_FULL);
     } else {
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipePeriodicalLogReducer.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/log/LoggerPeriodicalLogReducer.java
similarity index 55%
rename from 
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipePeriodicalLogReducer.java
rename to 
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/log/LoggerPeriodicalLogReducer.java
index 2f4242857aa..4f863e2cc40 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipePeriodicalLogReducer.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/log/LoggerPeriodicalLogReducer.java
@@ -17,23 +17,24 @@
  * under the License.
  */
 
-package org.apache.iotdb.commons.pipe.resource.log;
+package org.apache.iotdb.commons.log;
 
-import org.apache.iotdb.commons.i18n.PipeMessages;
-import org.apache.iotdb.commons.pipe.config.PipeConfig;
+import org.apache.iotdb.commons.conf.CommonDescriptor;
+import org.apache.iotdb.commons.i18n.CommonMessages;
 
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
 import org.apache.tsfile.utils.RamUsageEstimator;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.slf4j.helpers.MessageFormatter;
 
 import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 import java.util.function.LongUnaryOperator;
 
-public class PipePeriodicalLogReducer {
-  private static final Logger LOGGER = 
LoggerFactory.getLogger(PipePeriodicalLogReducer.class);
+public class LoggerPeriodicalLogReducer {
+  private static final Logger LOGGER = 
LoggerFactory.getLogger(LoggerPeriodicalLogReducer.class);
 
   private static final LongUnaryOperator DEFAULT_MEMORY_RESIZE_FUNCTION =
       sizeInBytes -> sizeInBytes;
@@ -42,10 +43,9 @@ public class PipePeriodicalLogReducer {
 
   protected static final Cache<String, String> LOGGER_CACHE =
       Caffeine.newBuilder()
-          .expireAfterWrite(
-              
PipeConfig.getInstance().getPipePeriodicalLogMinIntervalSeconds(), 
TimeUnit.SECONDS)
-          .weigher(PipePeriodicalLogReducer::estimateSize)
-          
.maximumWeight(PipeConfig.getInstance().getPipeLoggerCacheMaxSizeInBytes())
+          .expireAfterWrite(getLogMinIntervalSeconds(), TimeUnit.SECONDS)
+          .weigher(LoggerPeriodicalLogReducer::estimateSize)
+          .maximumWeight(getLoggerCacheMaxSizeInBytes())
           .build();
 
   private static int estimateSize(final String key, final String value) {
@@ -55,28 +55,33 @@ public class PipePeriodicalLogReducer {
 
   public static boolean log(
       final Consumer<String> loggerFunction, final String rawMessage, final 
Object... formatter) {
-    final String loggerMessage = PipeLogger.formatMessage(rawMessage, 
formatter);
-    if (!LOGGER_CACHE.asMap().containsKey(loggerMessage)) {
-      LOGGER_CACHE.put(loggerMessage, loggerMessage);
+    final String loggerMessage = formatMessage(rawMessage, formatter);
+    if (shouldLog(loggerMessage)) {
       loggerFunction.accept(loggerMessage);
       return true;
     }
     return false;
   }
 
+  public static boolean shouldLog(final String loggerMessage) {
+    return LOGGER_CACHE.asMap().putIfAbsent(loggerMessage, loggerMessage) == 
null;
+  }
+
+  public static boolean shouldLog(final String rawMessage, final Object... 
formatter) {
+    return shouldLog(formatMessage(rawMessage, formatter));
+  }
+
   public static synchronized void setMemoryResizeFunction(
       final LongUnaryOperator memoryResizeFunction) {
-    PipePeriodicalLogReducer.memoryResizeFunction =
+    LoggerPeriodicalLogReducer.memoryResizeFunction =
         memoryResizeFunction == null ? DEFAULT_MEMORY_RESIZE_FUNCTION : 
memoryResizeFunction;
     update();
   }
 
   public static synchronized void update() {
-    final long maxWeight =
-        memoryResizeFunction.applyAsLong(
-            PipeConfig.getInstance().getPipeLoggerCacheMaxSizeInBytes());
+    final long maxWeight = 
memoryResizeFunction.applyAsLong(getLoggerCacheMaxSizeInBytes());
     LOGGER.info(
-        
PipeMessages.MESSAGE_PIPEPERIODICALLOGREDUCER_IS_ALLOCATED_TO_ARG_BYTES_54E0E369,
+        
CommonMessages.LOG_LOGGERPERIODICALLOGREDUCER_IS_ALLOCATED_TO_ARG_BYTES_C8373CF5,
         maxWeight);
     update(maxWeight);
   }
@@ -85,15 +90,29 @@ public class PipePeriodicalLogReducer {
     LOGGER_CACHE
         .policy()
         .expireAfterWrite()
-        .ifPresent(
-            time ->
-                time.setExpiresAfter(
-                    
PipeConfig.getInstance().getPipePeriodicalLogMinIntervalSeconds(),
-                    TimeUnit.SECONDS));
+        .ifPresent(time -> time.setExpiresAfter(getLogMinIntervalSeconds(), 
TimeUnit.SECONDS));
     LOGGER_CACHE.policy().eviction().ifPresent(eviction -> 
eviction.setMaximum(maxWeight));
   }
 
-  private PipePeriodicalLogReducer() {
+  public static String formatMessage(final String rawMessage, final Object... 
formatter) {
+    if (formatter == null || formatter.length == 0) {
+      return rawMessage;
+    }
+    if (rawMessage.contains("{}")) {
+      return MessageFormatter.arrayFormat(rawMessage, formatter).getMessage();
+    }
+    return String.format(rawMessage, formatter);
+  }
+
+  private static long getLogMinIntervalSeconds() {
+    return 
CommonDescriptor.getInstance().getConfig().getLoggerPeriodicalLogMinIntervalSeconds();
+  }
+
+  private static long getLoggerCacheMaxSizeInBytes() {
+    return 
CommonDescriptor.getInstance().getConfig().getLoggerCacheMaxSizeInBytes();
+  }
+
+  private LoggerPeriodicalLogReducer() {
     // static
   }
 }
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/config/PipeDescriptor.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/config/PipeDescriptor.java
index 94181010520..780d6b3252a 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/config/PipeDescriptor.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/config/PipeDescriptor.java
@@ -468,16 +468,20 @@ public class PipeDescriptor {
             properties.getProperty(
                 "pipe_receiver_load_conversion_enabled",
                 
String.valueOf(config.isPipeReceiverLoadConversionEnabled()))));
-    config.setPipePeriodicalLogMinIntervalSeconds(
+    config.setLoggerPeriodicalLogMinIntervalSeconds(
         Long.parseLong(
             properties.getProperty(
-                "pipe_periodical_log_min_interval_seconds",
-                
String.valueOf(config.getPipePeriodicalLogMinIntervalSeconds()))));
-    config.setPipeLoggerCacheMaxSizeInBytes(
+                "logger_periodical_log_min_interval_seconds",
+                properties.getProperty(
+                    "pipe_periodical_log_min_interval_seconds",
+                    
String.valueOf(config.getLoggerPeriodicalLogMinIntervalSeconds())))));
+    config.setLoggerCacheMaxSizeInBytes(
         Long.parseLong(
             properties.getProperty(
-                "pipe_logger_cache_max_size_in_bytes",
-                String.valueOf(config.getPipeLoggerCacheMaxSizeInBytes()))));
+                "logger_cache_max_size_in_bytes",
+                properties.getProperty(
+                    "pipe_logger_cache_max_size_in_bytes",
+                    String.valueOf(config.getLoggerCacheMaxSizeInBytes())))));
 
     config.setPipeMemoryAllocateMaxRetries(
         Integer.parseInt(
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
index a539f1a2a73..af2e327ad42 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/receiver/IoTDBFileReceiver.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import 
org.apache.iotdb.commons.exception.pipe.PipeRuntimeOutOfMemoryCriticalException;
 import org.apache.iotdb.commons.i18n.PipeMessages;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 import org.apache.iotdb.commons.pipe.config.PipeConfig;
 import org.apache.iotdb.commons.pipe.config.constant.PipeSinkConstant;
 import org.apache.iotdb.commons.pipe.resource.log.PipeLogger;
@@ -181,13 +182,20 @@ public abstract class IoTDBFileReceiver implements 
IoTDBReceiver {
       try {
         receiverFileBaseDir = getReceiverFileBaseDir();
         if (Objects.isNull(receiverFileBaseDir)) {
-          PipeLogger.log(
-              LOGGER::warn, PipeMessages.RECEIVER_FAILED_INIT_FOLDER_FULL, 
receiverId.get());
+          if 
(LoggerPeriodicalLogReducer.shouldLog(PipeMessages.RECEIVER_FAILED_INIT_FOLDER_FULL))
 {
+            PipeLogger.log(
+                LOGGER::warn, PipeMessages.RECEIVER_FAILED_INIT_FOLDER_FULL, 
receiverId.get());
+          }
           return new 
TPipeTransferResp(StatusUtils.getStatus(TSStatusCode.DISK_SPACE_INSUFFICIENT));
         }
       } catch (Exception e) {
-        PipeLogger.log(
-            LOGGER::warn, e, PipeMessages.RECEIVER_FAILED_CREATE_FOLDER_FULL, 
receiverId.get());
+        if (LoggerPeriodicalLogReducer.shouldLog(
+            PipeMessages.RECEIVER_FAILED_CREATE_FOLDER_FULL
+                + e.getClass().getName()
+                + e.getMessage())) {
+          PipeLogger.log(
+              LOGGER::warn, e, 
PipeMessages.RECEIVER_FAILED_CREATE_FOLDER_FULL, receiverId.get());
+        }
         return new 
TPipeTransferResp(StatusUtils.getStatus(TSStatusCode.DISK_SPACE_INSUFFICIENT));
       }
 
diff --git 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipeLogger.java
 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipeLogger.java
index 97ff4afba63..720999aae97 100644
--- 
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipeLogger.java
+++ 
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/resource/log/PipeLogger.java
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.commons.pipe.resource.log;
 
-import org.slf4j.helpers.MessageFormatter;
+import org.apache.iotdb.commons.log.LoggerPeriodicalLogReducer;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
@@ -28,11 +28,12 @@ import java.util.function.Consumer;
 public class PipeLogger {
   private static PipePeriodicalLogger logger =
       (loggerFunction, rawMessage, formatter) ->
-          loggerFunction.accept(formatMessage(rawMessage, formatter));
+          
loggerFunction.accept(LoggerPeriodicalLogReducer.formatMessage(rawMessage, 
formatter));
 
   public static void log(
       final Consumer<String> loggerFunction, final String rawMessage, final 
Object... formatter) {
-    logger.log(loggerFunction, "%s", formatMessage(rawMessage, formatter));
+    logger.log(
+        loggerFunction, "%s", 
LoggerPeriodicalLogReducer.formatMessage(rawMessage, formatter));
   }
 
   public static void log(
@@ -42,7 +43,10 @@ public class PipeLogger {
       final Object... formatter) {
     final ByteArrayOutputStream out = new ByteArrayOutputStream();
     throwable.printStackTrace(new PrintStream(out));
-    logger.log(loggerFunction, "%s", formatMessage(rawMessage, formatter) + 
"\n" + out);
+    logger.log(
+        loggerFunction,
+        "%s",
+        LoggerPeriodicalLogReducer.formatMessage(rawMessage, formatter) + "\n" 
+ out);
   }
 
   public static void setLogger(final PipePeriodicalLogger logger) {
@@ -53,16 +57,6 @@ public class PipeLogger {
     // static
   }
 
-  static String formatMessage(final String rawMessage, final Object... 
formatter) {
-    if (formatter == null || formatter.length == 0) {
-      return rawMessage;
-    }
-    if (rawMessage.contains("{}")) {
-      return MessageFormatter.arrayFormat(rawMessage, formatter).getMessage();
-    }
-    return String.format(rawMessage, formatter);
-  }
-
   @FunctionalInterface
   public interface PipePeriodicalLogger {
     void log(final Consumer<String> loggerFunction, final String rawMessage, 
final Object... args);
diff --git 
a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/resource/log/PipePeriodicalLogReducerTest.java
 
b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/log/LoggerPeriodicalLogReducerTest.java
similarity index 67%
rename from 
iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/resource/log/PipePeriodicalLogReducerTest.java
rename to 
iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/log/LoggerPeriodicalLogReducerTest.java
index d390cbb9fdd..a0a6df14e9c 100644
--- 
a/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/pipe/resource/log/PipePeriodicalLogReducerTest.java
+++ 
b/iotdb-core/node-commons/src/test/java/org/apache/iotdb/commons/log/LoggerPeriodicalLogReducerTest.java
@@ -17,9 +17,9 @@
  * under the License.
  */
 
-package org.apache.iotdb.commons.pipe.resource.log;
+package org.apache.iotdb.commons.log;
 
-import org.apache.iotdb.commons.pipe.config.PipeConfig;
+import org.apache.iotdb.commons.conf.CommonDescriptor;
 
 import org.junit.After;
 import org.junit.Assert;
@@ -28,20 +28,20 @@ import org.junit.Test;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
-public class PipePeriodicalLogReducerTest {
+public class LoggerPeriodicalLogReducerTest {
 
   @After
   public void tearDown() {
-    PipePeriodicalLogReducer.setMemoryResizeFunction(null);
+    LoggerPeriodicalLogReducer.setMemoryResizeFunction(null);
   }
 
   @Test
   public void testLogReducesDuplicateMessages() {
     final AtomicInteger logCount = new AtomicInteger(0);
-    final String message = "PipePeriodicalLogReducerTest-" + System.nanoTime();
+    final String message = "LoggerPeriodicalLogReducerTest-" + 
System.nanoTime();
 
-    Assert.assertTrue(PipePeriodicalLogReducer.log(log -> 
logCount.incrementAndGet(), message));
-    Assert.assertFalse(PipePeriodicalLogReducer.log(log -> 
logCount.incrementAndGet(), message));
+    Assert.assertTrue(LoggerPeriodicalLogReducer.log(log -> 
logCount.incrementAndGet(), message));
+    Assert.assertFalse(LoggerPeriodicalLogReducer.log(log -> 
logCount.incrementAndGet(), message));
     Assert.assertEquals(1, logCount.get());
   }
 
@@ -50,16 +50,17 @@ public class PipePeriodicalLogReducerTest {
     final AtomicLong requestedSizeInBytes = new AtomicLong(-1);
     final long allocatedSizeInBytes = 1024;
 
-    PipePeriodicalLogReducer.setMemoryResizeFunction(
+    LoggerPeriodicalLogReducer.setMemoryResizeFunction(
         sizeInBytes -> {
           requestedSizeInBytes.set(sizeInBytes);
           return allocatedSizeInBytes;
         });
 
     Assert.assertEquals(
-        PipeConfig.getInstance().getPipeLoggerCacheMaxSizeInBytes(), 
requestedSizeInBytes.get());
+        
CommonDescriptor.getInstance().getConfig().getLoggerCacheMaxSizeInBytes(),
+        requestedSizeInBytes.get());
     Assert.assertEquals(
         allocatedSizeInBytes,
-        
PipePeriodicalLogReducer.LOGGER_CACHE.policy().eviction().get().getMaximum());
+        
LoggerPeriodicalLogReducer.LOGGER_CACHE.policy().eviction().get().getMaximum());
   }
 }


Reply via email to