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());
}
}