Before the collaboration task starts, the method {@link
* PipeSource#customize(PipeParameters, PipeSourceRuntimeConfiguration)} will be called to
* configure the runtime behavior of the {@link PipeSource}.
diff --git a/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/customizer/parameter/PipeParameters.java b/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/customizer/parameter/PipeParameters.java
index c13f87ae5794f..31a5eea3af262 100644
--- a/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/customizer/parameter/PipeParameters.java
+++ b/iotdb-api/pipe-api/src/main/java/org/apache/iotdb/pipe/api/customizer/parameter/PipeParameters.java
@@ -19,12 +19,12 @@
package org.apache.iotdb.pipe.api.customizer.parameter;
-import org.apache.iotdb.pipe.api.PipeConnector;
-import org.apache.iotdb.pipe.api.PipeExtractor;
import org.apache.iotdb.pipe.api.PipeProcessor;
-import org.apache.iotdb.pipe.api.customizer.configuration.PipeConnectorRuntimeConfiguration;
-import org.apache.iotdb.pipe.api.customizer.configuration.PipeExtractorRuntimeConfiguration;
+import org.apache.iotdb.pipe.api.PipeSink;
+import org.apache.iotdb.pipe.api.PipeSource;
import org.apache.iotdb.pipe.api.customizer.configuration.PipeProcessorRuntimeConfiguration;
+import org.apache.iotdb.pipe.api.customizer.configuration.PipeSinkRuntimeConfiguration;
+import org.apache.iotdb.pipe.api.customizer.configuration.PipeSourceRuntimeConfiguration;
import java.util.HashMap;
import java.util.HashSet;
@@ -38,9 +38,9 @@
import java.util.stream.Collectors;
/**
- * Used in {@link PipeExtractor#customize(PipeParameters, PipeExtractorRuntimeConfiguration)} ,
- * {@link PipeProcessor#customize(PipeParameters, PipeProcessorRuntimeConfiguration)} and {@link
- * PipeConnector#customize(PipeParameters, PipeConnectorRuntimeConfiguration)}.
+ * Used in {@link PipeSource#customize(PipeParameters, PipeSourceRuntimeConfiguration)}, {@link
+ * PipeProcessor#customize(PipeParameters, PipeProcessorRuntimeConfiguration)} and {@link
+ * PipeSink#customize(PipeParameters, PipeSinkRuntimeConfiguration)}.
*
* This class is used to parse the parameters in WITH SOURCE, WITH PROCESSOR and WITH SINK when
* creating a pipe.
diff --git a/iotdb-client/subscription/src/main/i18n/en/org/apache/iotdb/rpc/subscription/i18n/SubscriptionMessages.java b/iotdb-client/subscription/src/main/i18n/en/org/apache/iotdb/rpc/subscription/i18n/SubscriptionMessages.java
index 3b03471138da9..a4edeae801b33 100644
--- a/iotdb-client/subscription/src/main/i18n/en/org/apache/iotdb/rpc/subscription/i18n/SubscriptionMessages.java
+++ b/iotdb-client/subscription/src/main/i18n/en/org/apache/iotdb/rpc/subscription/i18n/SubscriptionMessages.java
@@ -26,11 +26,11 @@ public final class SubscriptionMessages {
// --- SubscriptionPollRequest ---
public static final String UNEXPECTED_REQUEST_TYPE =
- "unexpected request type: {}, payload will be null";
+ "Unexpected request type: {}, payload will be null";
// --- SubscriptionPollResponse ---
public static final String UNEXPECTED_RESPONSE_TYPE =
- "unexpected response type: {}, payload will be null";
+ "Unexpected response type: {}, payload will be null";
// --- IdentifierUtils ---
public static final String NULL_IDENTIFIER_NOT_SUPPORTED = "null identifier is not supported";
@@ -41,55 +41,56 @@ public final class SubscriptionMessages {
// --- AbstractSubscriptionPushConsumer ---
public static final String PUSH_CONSUMER_CANCEL_AUTO_POLL =
- "SubscriptionPushConsumer {} cancel auto poll worker";
+ "SubscriptionPushConsumer {} is canceling the auto-poll worker";
public static final String PUSH_CONSUMER_SUBMIT_AUTO_POLL =
- "SubscriptionPushConsumer {} submit auto poll worker";
+ "SubscriptionPushConsumer {} is submitting the auto-poll worker";
public static final String CONSUMER_LISTENER_FAILURE =
- "Consumer listener result failure when consuming message: {}";
- public static final String AUTO_POLL_UNEXPECTED = "something unexpected happened when auto poll messages...";
+ "Consumer listener returned failure when consuming message: {}";
+ public static final String AUTO_POLL_UNEXPECTED =
+ "Unexpected exception while auto-polling messages.";
// --- SubscriptionExecutorServiceManager ---
public static final String EXECUTOR_LAUNCHING = "Launching {} with core pool size {}...";
public static final String EXECUTOR_SHUTTING_DOWN = "Shutting down {}...";
public static final String EXECUTOR_NOT_LAUNCHED_SUBMIT =
- "{} has not been launched, ignore submit task";
+ "{} has not been launched, ignoring submitted task";
public static final String EXECUTOR_NOT_LAUNCHED_INVOKE =
- "{} has not been launched, ignore invoke all tasks";
+ "{} has not been launched, ignoring invokeAll tasks";
public static final String EXECUTOR_NOT_LAUNCHED_ZERO =
- "{} has not been launched, return zero";
+ "{} has not been launched, returning zero";
public static final String EXECUTOR_NOT_LAUNCHED_SCHEDULE =
- "{} has not been launched, ignore scheduleWithFixedDelay for task";
+ "{} has not been launched, ignoring scheduleWithFixedDelay task";
// --- AbstractSubscriptionProviders ---
public static final String PROVIDER_CLOSE_FAILED =
- "Failed to close subscription provider {} because of {}";
- public static final String ADD_NEW_PROVIDER = "add new subscription provider {}";
- public static final String CLOSE_STALE_PROVIDER = "close and remove stale subscription provider {}";
+ "Failed to close subscription provider {} because {}";
+ public static final String ADD_NEW_PROVIDER = "Adding new subscription provider {}";
+ public static final String CLOSE_STALE_PROVIDER = "Closing and removing stale subscription provider {}";
public static final String OPEN_PROVIDERS_FAILED =
- "Failed to open providers for consumer {} because of {}";
+ "Failed to open providers for consumer {} because {}";
public static final String FETCH_ENDPOINTS_FAILED =
- "Failed to fetch all endpoints for consumer {} because of {}";
+ "Failed to fetch all endpoints for consumer {} because {}";
// --- AbstractSubscriptionPullConsumer ---
public static final String PULL_CONSUMER_CANCEL_AUTO_COMMIT =
- "SubscriptionPullConsumer {} cancel auto commit worker";
+ "SubscriptionPullConsumer {} is canceling the auto-commit worker";
public static final String PULL_CONSUMER_SUBMIT_AUTO_COMMIT =
- "SubscriptionPullConsumer {} submit auto commit worker";
+ "SubscriptionPullConsumer {} is submitting the auto-commit worker";
public static final String AUTO_COMMIT_UNEXPECTED =
- "something unexpected happened when auto commit messages...";
+ "Unexpected exception while auto-committing messages.";
public static final String COMMIT_DURING_CLOSE_UNEXPECTED =
- "something unexpected happened when commit messages during close";
+ "Unexpected exception while committing messages during close.";
// --- AbstractSubscriptionConsumer ---
- public static final String UNEXPECTED_RESPONSE_TYPE_WARN = "unexpected response type: {}";
+ public static final String UNEXPECTED_RESPONSE_TYPE_WARN = "Unexpected response type: {}";
public static final String CONSUMER_CANCEL_HEARTBEAT_WORKER =
- "SubscriptionConsumer {} cancel heartbeat worker";
+ "SubscriptionConsumer {} is canceling the heartbeat worker";
public static final String CONSUMER_SUBMIT_HEARTBEAT_WORKER =
- "SubscriptionConsumer {} submit heartbeat worker";
+ "SubscriptionConsumer {} is submitting the heartbeat worker";
public static final String CONSUMER_CANCEL_ENDPOINTS_SYNCER =
- "SubscriptionConsumer {} cancel endpoints syncer";
+ "SubscriptionConsumer {} is canceling the endpoints syncer";
public static final String CONSUMER_SUBMIT_ENDPOINTS_SYNCER =
- "SubscriptionConsumer {} submit endpoints syncer";
+ "SubscriptionConsumer {} is submitting the endpoints syncer";
private SubscriptionMessages() {}
}
diff --git a/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionConsumer.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionConsumer.java
index 63e5a263f22b3..f5c5e7f4fa3ee 100644
--- a/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionConsumer.java
+++ b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionConsumer.java
@@ -420,11 +420,11 @@ AbstractSubscriptionProvider constructProviderAndHandshake(final TEndPoint endPo
}
throw new SubscriptionConnectionException(
String.format(
- "Failed to handshake with subscription provider %s because of %s", provider, e),
+ "Failed to perform handshake with subscription provider %s because %s", provider, e),
e);
}
- // update consumer id and consumer group id if not exist
+ // Update consumer id and consumer group id if they are absent.
if (Objects.isNull(this.consumerId)) {
this.consumerId = provider.getConsumerId();
}
@@ -470,14 +470,14 @@ private Path getFilePath(
if (allowFileAlreadyExistsException) {
if (inFlightFilesCommitContextSet.contains(commitContext)) {
LOGGER.info(
- "Detect already existed file {} when polling topic {}, resume consumption",
+ "Detected existing file {} when polling topic {}, resuming consumption",
fileName,
topicName);
return filePath;
}
final String suffix = RandomStringGenerator.generate(16);
LOGGER.warn(
- "Detect already existed file {} when polling topic {}, add random suffix {} to filename",
+ "Detected existing file {} when polling topic {}, adding random suffix {} to filename",
fileName,
topicName,
suffix);
@@ -522,7 +522,7 @@ private Path getFilePath(
final SubscriptionCommitContext commitContext = resp.getCommitContext();
final String topicNameToUnsubscribe = commitContext.getTopicName();
LOGGER.info(
- "Termination occurred when SubscriptionConsumer {} polling topics, unsubscribe topic {} automatically",
+ "Termination occurred while SubscriptionConsumer {} was polling topics, unsubscribing from topic {} automatically",
coreReportMessage(),
topicNameToUnsubscribe);
unsubscribe(Collections.singleton(topicNameToUnsubscribe), false);
@@ -541,11 +541,11 @@ protected List multiplePoll(
final int availableCount =
SubscriptionExecutorServiceManager.getAvailableThreadCountForPollTasks();
if (availableCount == 0) {
- // non-strict timeout
+ // Use non-strict timeout.
return singlePoll(topicNames, timeoutMs);
}
- // dividing topics
+ // Divide topics.
final List tasks = new ArrayList<>();
final List> partitionedTopicNames =
partition(topicNames, Math.min(maxPollParallelism, availableCount));
@@ -553,7 +553,7 @@ protected List multiplePoll(
tasks.add(new PollTask(partition, timeoutMs));
}
- // submit multiple tasks to poll messages
+ // Submit multiple tasks to poll messages.
final List messages = new ArrayList<>();
SubscriptionRuntimeCriticalException lastSubscriptionRuntimeCriticalException = null;
try {
@@ -573,14 +573,14 @@ protected List multiplePoll(
final SubscriptionRuntimeCriticalException ex =
(SubscriptionRuntimeCriticalException) cause;
LOGGER.warn(
- "SubscriptionRuntimeCriticalException occurred when SubscriptionConsumer {} polling topics {}",
+ "SubscriptionRuntimeCriticalException occurred while SubscriptionConsumer {} was polling topics {}",
this,
topicNames,
ex);
lastSubscriptionRuntimeCriticalException = ex;
} else {
LOGGER.warn(
- "ExecutionException occurred when SubscriptionConsumer {} polling topics {}",
+ "ExecutionException occurred while SubscriptionConsumer {} was polling topics {}",
this,
topicNames,
e);
@@ -589,17 +589,16 @@ protected List multiplePoll(
}
} catch (final InterruptedException e) {
LOGGER.warn(
- "InterruptedException occurred when SubscriptionConsumer {} polling topics {}",
+ "InterruptedException occurred while SubscriptionConsumer {} was polling topics {}",
this,
topicNames,
e);
Thread.currentThread().interrupt(); // restore interrupted state
}
- // TODO: ignore possible interrupted state?
-
- // even if a SubscriptionRuntimeCriticalException is encountered, try to deliver the message to
- // the client
+ // Preserve the interrupted flag; any messages collected before interruption are still returned.
+ // Even if a SubscriptionRuntimeCriticalException is encountered, try to deliver the message to
+ // the client.
if (messages.isEmpty() && Objects.nonNull(lastSubscriptionRuntimeCriticalException)) {
throw lastSubscriptionRuntimeCriticalException;
}
@@ -660,7 +659,7 @@ private List singlePoll(
.ifPresent(currentMessages::add);
} catch (final SubscriptionRuntimeNonCriticalException e) {
LOGGER.warn(
- "SubscriptionRuntimeNonCriticalException occurred when SubscriptionConsumer {} polling topics {}",
+ "SubscriptionRuntimeNonCriticalException occurred while SubscriptionConsumer {} was polling topics {}",
this,
topicNames,
e);
@@ -669,17 +668,17 @@ private List singlePoll(
}
} catch (final SubscriptionRuntimeCriticalException e) {
LOGGER.warn(
- "SubscriptionRuntimeCriticalException occurred when SubscriptionConsumer {} polling topics {}",
+ "SubscriptionRuntimeCriticalException occurred while SubscriptionConsumer {} was polling topics {}",
this,
topicNames,
e);
- // nack and clear current responses
+ // Nack and clear current responses.
try {
nack(currentResponses);
currentResponses.clear();
} catch (final Exception ignored) {
}
- // nack and clear result messages
+ // Nack and clear result messages.
try {
nack(messages);
messages.clear();
@@ -718,13 +717,13 @@ private List singlePoll(
}
if (Thread.currentThread().isInterrupted()) {
- // nack and clear current responses
+ // Nack and clear current responses.
try {
nack(currentResponses);
currentResponses.clear();
} catch (final Exception ignored) {
}
- // nack and clear result messages
+ // Nack and clear result messages.
try {
nack(messages);
messages.clear();
@@ -783,7 +782,7 @@ private Optional pollFileInternal(
inFlightFilesCommitContextSet.add(commitContext);
final String message =
String.format(
- "Timeout occurred when SubscriptionConsumer %s polling file %s with commit context %s, record writing offset %s for subsequent poll",
+ "Timeout occurred while SubscriptionConsumer %s was polling file %s with commit context %s, recording writing offset %s for the next poll",
this, file.getAbsolutePath(), commitContext, writingOffset);
LOGGER.info(message);
throw new SubscriptionRuntimeNonCriticalException(message);
@@ -897,7 +896,7 @@ private Optional pollFileInternal(
fileWriter.close();
LOGGER.info(
- "SubscriptionConsumer {} successfully poll file {} with commit context {}",
+ "SubscriptionConsumer {} successfully polled file {} with commit context {}",
this,
file.getAbsolutePath(),
commitContext);
@@ -923,13 +922,13 @@ private Optional pollFileInternal(
inFlightFilesCommitContextSet.add(commitContext);
final String message =
String.format(
- "Timeout occurred when SubscriptionConsumer %s polling file %s with commit context %s, record writing offset %s for subsequent poll",
+ "Timeout occurred while SubscriptionConsumer %s was polling file %s with commit context %s, recording writing offset %s for the next poll",
this, file.getAbsolutePath(), commitContext, writingOffset);
LOGGER.info(message);
throw new SubscriptionPollTimeoutException(message);
} else {
LOGGER.warn(
- "Error occurred when SubscriptionConsumer {} polling file {} with commit context {}: {}, critical: {}",
+ "Error occurred while SubscriptionConsumer {} was polling file {} with commit context {}: {}, critical: {}",
this,
file.getAbsolutePath(),
commitContext,
@@ -1051,7 +1050,7 @@ private Optional pollTabletsInternal(
return Optional.empty();
}
LOGGER.warn(
- "Error occurred when SubscriptionConsumer {} polling tablets with commit context {}: {}, critical: {}",
+ "Error occurred while SubscriptionConsumer {} was polling tablets with commit context {}: {}, critical: {}",
this,
commitContext,
errorMessage,
@@ -1081,10 +1080,10 @@ private List pollInternal(
}
throw new SubscriptionConnectionException(
String.format(
- "Cluster has no available subscription providers when %s poll topic %s",
+ "Cluster has no available subscription providers when %s polls topics %s",
this, topicNames));
}
- // ignore SubscriptionConnectionException to improve poll auto retry
+ // Ignore SubscriptionConnectionException to improve poll auto retry.
try {
return provider.poll(topicNames, timeoutMs);
} catch (final SubscriptionConnectionException ignored) {
@@ -1108,10 +1107,10 @@ private List pollFileInternal(
}
throw new SubscriptionConnectionException(
String.format(
- "something unexpected happened when %s poll file from subscription provider with data node id %s, the subscription provider may be unavailable or not existed",
+ "Unexpected exception when %s polls file from subscription provider with data node id %s; the subscription provider may be unavailable or absent",
this, dataNodeId));
}
- // ignore SubscriptionConnectionException to improve poll auto retry
+ // Ignore SubscriptionConnectionException to improve poll auto retry.
try {
return provider.pollFile(commitContext, writingOffset, timeoutMs);
} catch (final SubscriptionConnectionException ignored) {
@@ -1135,10 +1134,10 @@ private List pollTabletsInternal(
}
throw new SubscriptionConnectionException(
String.format(
- "something unexpected happened when %s poll tablets from subscription provider with data node id %s, the subscription provider may be unavailable or not existed",
+ "Unexpected exception when %s polls tablets from subscription provider with data node id %s; the subscription provider may be unavailable or absent",
this, dataNodeId));
}
- // ignore SubscriptionConnectionException to improve poll auto retry
+ // Ignore SubscriptionConnectionException to improve poll auto retry.
try {
return provider.pollTablets(commitContext, offset, timeoutMs);
} catch (final SubscriptionConnectionException ignored) {
@@ -1225,7 +1224,7 @@ private void commitInternal(
}
throw new SubscriptionConnectionException(
String.format(
- "something unexpected happened when %s commit (nack: %s) messages to subscription provider with data node id %s, the subscription provider may be unavailable or not existed",
+ "Unexpected exception when %s commits (nack: %s) messages to subscription provider with data node id %s; the subscription provider may be unavailable or absent",
this, nack, dataNodeId));
}
provider.commit(subscriptionCommitContexts, nack);
@@ -1342,12 +1341,12 @@ private void subscribeWithRedirection(final Set topicNames) throws Subsc
return;
} catch (final Exception e) {
if (e instanceof SubscriptionPipeTimeoutException) {
- // degrade exception to log for pipe timeout
+ // Downgrade pipe timeout exceptions to logs.
LOGGER.warn(e.getMessage());
return;
}
LOGGER.warn(
- "{} failed to subscribe topics {} from subscription provider {}, try next subscription provider...",
+ "{} failed to subscribe to topics {} through subscription provider {}, trying the next subscription provider...",
this,
topicNames,
provider,
@@ -1356,7 +1355,7 @@ private void subscribeWithRedirection(final Set topicNames) throws Subsc
}
final String errorMessage =
String.format(
- "%s failed to subscribe topics %s from all available subscription providers %s",
+ "%s failed to subscribe to topics %s through all available subscription providers %s",
this, topicNames, providers);
LOGGER.warn(errorMessage);
throw new SubscriptionRuntimeCriticalException(errorMessage);
@@ -1368,7 +1367,7 @@ private void unsubscribeWithRedirection(final Set topicNames)
if (providers.isEmpty()) {
throw new SubscriptionConnectionException(
String.format(
- "Cluster has no available subscription providers when %s unsubscribe topic %s",
+ "Cluster has no available subscription providers when %s unsubscribes from topics %s",
this, topicNames));
}
for (final AbstractSubscriptionProvider provider : providers) {
@@ -1377,12 +1376,12 @@ private void unsubscribeWithRedirection(final Set topicNames)
return;
} catch (final Exception e) {
if (e instanceof SubscriptionPipeTimeoutException) {
- // degrade exception to log for pipe timeout
+ // Downgrade pipe timeout exceptions to logs.
LOGGER.warn(e.getMessage());
return;
}
LOGGER.warn(
- "{} failed to unsubscribe topics {} from subscription provider {}, try next subscription provider...",
+ "{} failed to unsubscribe from topics {} through subscription provider {}, trying the next subscription provider...",
this,
topicNames,
provider,
@@ -1391,7 +1390,7 @@ private void unsubscribeWithRedirection(final Set topicNames)
}
final String errorMessage =
String.format(
- "%s failed to unsubscribe topics %s from all available subscription providers %s",
+ "%s failed to unsubscribe from topics %s through all available subscription providers %s",
this, topicNames, providers);
LOGGER.warn(errorMessage);
throw new SubscriptionRuntimeCriticalException(errorMessage);
@@ -1402,14 +1401,15 @@ Map fetchAllEndPointsWithRedirection() throws SubscriptionEx
if (providers.isEmpty()) {
throw new SubscriptionConnectionException(
String.format(
- "Cluster has no available subscription providers when %s fetch all endpoints", this));
+ "Cluster has no available subscription providers when %s fetches all endpoints",
+ this));
}
for (final AbstractSubscriptionProvider provider : providers) {
try {
return provider.heartbeat().getEndPoints();
} catch (final Exception e) {
LOGGER.warn(
- "{} failed to fetch all endpoints from subscription provider {}, try next subscription provider...",
+ "{} failed to fetch all endpoints from subscription provider {}, trying the next subscription provider...",
this,
provider,
e);
diff --git a/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProvider.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProvider.java
index 413c609abbff3..a82b0f61ec12f 100644
--- a/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProvider.java
+++ b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProvider.java
@@ -204,7 +204,7 @@ PipeSubscribeHandshakeResp handshake(final ConsumerConfig consumerConfig)
req = PipeSubscribeHandshakeReq.toTPipeSubscribeReq(consumerConfig);
} catch (final IOException e) {
LOGGER.warn(
- "IOException occurred when SubscriptionProvider {} serialize handshake request {}",
+ "IOException occurred while SubscriptionProvider {} was serializing handshake request {}",
this,
consumerConfig,
e);
@@ -214,9 +214,9 @@ PipeSubscribeHandshakeResp handshake(final ConsumerConfig consumerConfig)
try {
resp = getSessionConnection().pipeSubscribe(req);
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} handshake with request {}, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was handshaking with request {}, setting SubscriptionProvider unavailable",
this,
consumerConfig,
e);
@@ -246,9 +246,9 @@ void closeInternal() throws SubscriptionException {
try {
resp = getSessionConnection().pipeSubscribe(PipeSubscribeCloseReq.toTPipeSubscribeReq());
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} close, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was closing, setting SubscriptionProvider unavailable",
this,
e);
setUnavailable();
@@ -264,9 +264,9 @@ PipeSubscribeHeartbeatResp heartbeat() throws SubscriptionException {
try {
resp = getSessionConnection().pipeSubscribe(PipeSubscribeHeartbeatReq.toTPipeSubscribeReq());
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} heartbeat, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was sending heartbeat, setting SubscriptionProvider unavailable",
this,
e);
setUnavailable();
@@ -282,7 +282,7 @@ Map subscribe(final Set topicNames) throws Subscrip
req = PipeSubscribeSubscribeReq.toTPipeSubscribeReq(topicNames);
} catch (final IOException e) {
LOGGER.warn(
- "IOException occurred when SubscriptionProvider {} serialize subscribe request {}",
+ "IOException occurred while SubscriptionProvider {} was serializing subscribe request {}",
this,
topicNames,
e);
@@ -292,9 +292,9 @@ Map subscribe(final Set topicNames) throws Subscrip
try {
resp = getSessionConnection().pipeSubscribe(req);
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} subscribe with request {}, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was subscribing with request {}, setting SubscriptionProvider unavailable",
this,
topicNames,
e);
@@ -313,7 +313,7 @@ Map unsubscribe(final Set topicNames) throws Subscr
req = PipeSubscribeUnsubscribeReq.toTPipeSubscribeReq(topicNames);
} catch (final IOException e) {
LOGGER.warn(
- "IOException occurred when SubscriptionProvider {} serialize unsubscribe request {}",
+ "IOException occurred while SubscriptionProvider {} was serializing unsubscribe request {}",
this,
topicNames,
e);
@@ -323,9 +323,9 @@ Map unsubscribe(final Set topicNames) throws Subscr
try {
resp = getSessionConnection().pipeSubscribe(req);
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} unsubscribe with request {}, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was unsubscribing with request {}, setting SubscriptionProvider unavailable",
this,
topicNames,
e);
@@ -377,7 +377,7 @@ List poll(final SubscriptionPollRequest pollMessage)
req = PipeSubscribePollReq.toTPipeSubscribeReq(pollMessage);
} catch (final IOException e) {
LOGGER.warn(
- "IOException occurred when SubscriptionProvider {} serialize poll request {}",
+ "IOException occurred while SubscriptionProvider {} was serializing poll request {}",
this,
pollMessage,
e);
@@ -387,9 +387,9 @@ List poll(final SubscriptionPollRequest pollMessage)
try {
resp = getSessionConnection().pipeSubscribe(req);
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} poll with request {}, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was polling with request {}, setting SubscriptionProvider unavailable",
this,
pollMessage,
e);
@@ -408,7 +408,7 @@ void commit(final List subscriptionCommitContexts, fi
req = PipeSubscribeCommitReq.toTPipeSubscribeReq(subscriptionCommitContexts, nack);
} catch (final IOException e) {
LOGGER.warn(
- "IOException occurred when SubscriptionProvider {} serialize commit request {}",
+ "IOException occurred while SubscriptionProvider {} was serializing commit request {}",
this,
subscriptionCommitContexts,
e);
@@ -418,9 +418,9 @@ void commit(final List subscriptionCommitContexts, fi
try {
resp = getSessionConnection().pipeSubscribe(req);
} catch (final TException | IoTDBConnectionException e) {
- // Assume provider unavailable
+ // Assume the provider is unavailable.
LOGGER.warn(
- "TException/IoTDBConnectionException occurred when SubscriptionProvider {} commit with request {}, set SubscriptionProvider unavailable",
+ "TException/IoTDBConnectionException occurred while SubscriptionProvider {} was committing with request {}, setting SubscriptionProvider unavailable",
this,
subscriptionCommitContexts,
e);
diff --git a/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProviders.java b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProviders.java
index 5d48de1a93c9f..b286eaa85d2a2 100644
--- a/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProviders.java
+++ b/iotdb-client/subscription/src/main/java/org/apache/iotdb/session/subscription/consumer/base/AbstractSubscriptionProviders.java
@@ -87,8 +87,7 @@ void openProviders(final AbstractSubscriptionConsumer consumer) throws Subscript
try {
defaultProvider = consumer.constructProviderAndHandshake(endPoint);
} catch (final Exception e) {
- LOGGER.warn(
- "{} failed to create connection with {} because of {}", consumer, endPoint, e, e);
+ LOGGER.warn("{} failed to create connection with {} because {}", consumer, endPoint, e, e);
continue; // try next endpoint
}
defaultDataNodeId = defaultProvider.getDataNodeId();
@@ -99,7 +98,7 @@ void openProviders(final AbstractSubscriptionConsumer consumer) throws Subscript
allEndPoints = defaultProvider.heartbeat().getEndPoints();
} catch (final Exception e) {
LOGGER.warn(
- "{} failed to fetch all endpoints from {} because of {}", consumer, endPoint, e, e);
+ "{} failed to fetch all endpoints from {} because {}", consumer, endPoint, e, e);
break;
}
@@ -113,7 +112,7 @@ void openProviders(final AbstractSubscriptionConsumer consumer) throws Subscript
provider = consumer.constructProviderAndHandshake(entry.getValue());
} catch (final Exception e) {
LOGGER.warn(
- "{} failed to create connection with {} because of {}",
+ "{} failed to create connection with {} because {}",
consumer,
entry.getValue(),
e,
@@ -249,10 +248,10 @@ private void heartbeatInternal(final AbstractSubscriptionConsumer consumer) {
final PipeSubscribeHeartbeatResp resp = provider.heartbeat();
// update subscribed topics
consumer.subscribedTopics = resp.getTopics();
- // unsubscribe completed topics
+ // Unsubscribe from completed topics.
for (final String topicName : resp.getTopicNamesToUnsubscribe()) {
LOGGER.info(
- "Termination occurred when SubscriptionConsumer {} polling topics, unsubscribe topic {} automatically",
+ "Termination occurred while SubscriptionConsumer {} was polling topics, unsubscribing from topic {} automatically",
consumer.coreReportMessage(),
topicName);
consumer.unsubscribe(topicName);
@@ -260,7 +259,7 @@ private void heartbeatInternal(final AbstractSubscriptionConsumer consumer) {
provider.setAvailable();
} catch (final Exception e) {
LOGGER.warn(
- "{} failed to sending heartbeat to subscription provider {} because of {}, set subscription provider unavailable",
+ "{} failed to send heartbeat to subscription provider {} because {}, setting subscription provider unavailable",
consumer,
provider,
e,
@@ -303,42 +302,42 @@ private void syncInternal(final AbstractSubscriptionConsumer consumer) {
return;
}
- // add new providers or handshake existing providers
+ // Add new providers or handshake existing providers.
for (final Map.Entry entry : allEndPoints.entrySet()) {
final AbstractSubscriptionProvider provider = getProvider(entry.getKey());
if (Objects.isNull(provider)) {
- // new provider
+ // New provider.
final TEndPoint endPoint = entry.getValue();
final AbstractSubscriptionProvider newProvider;
try {
newProvider = consumer.constructProviderAndHandshake(endPoint);
} catch (final Exception e) {
LOGGER.warn(
- "{} failed to create connection with {} because of {}", consumer, endPoint, e, e);
+ "{} failed to create connection with {} because {}", consumer, endPoint, e, e);
continue;
}
addProvider(entry.getKey(), newProvider);
} else {
- // existing provider
+ // Existing provider.
try {
consumer.subscribedTopics = provider.heartbeat().getTopics();
provider.setAvailable();
} catch (final Exception e) {
LOGGER.warn(
- "{} failed to sending heartbeat to subscription provider {} because of {}, set subscription provider unavailable",
+ "{} failed to send heartbeat to subscription provider {} because {}, setting subscription provider unavailable",
consumer,
provider,
e,
e);
provider.setUnavailable();
}
- // close and remove unavailable provider (reset the connection as much as possible)
+ // Close and remove unavailable provider, resetting the connection as much as possible.
if (!provider.isAvailable()) {
try {
closeAndRemoveProvider(entry.getKey());
} catch (final Exception e) {
LOGGER.warn(
- "Exception occurred when {} closing and removing subscription provider {} because of {}",
+ "Exception occurred while {} was closing and removing subscription provider {} because {}",
consumer,
provider,
e,
@@ -348,7 +347,7 @@ private void syncInternal(final AbstractSubscriptionConsumer consumer) {
}
}
- // close and remove stale providers
+ // Close and remove stale providers.
for (final AbstractSubscriptionProvider provider : getAllProviders()) {
final int dataNodeId = provider.getDataNodeId();
if (!allEndPoints.containsKey(dataNodeId)) {
@@ -356,7 +355,7 @@ private void syncInternal(final AbstractSubscriptionConsumer consumer) {
closeAndRemoveProvider(dataNodeId);
} catch (final Exception e) {
LOGGER.warn(
- "Exception occurred when {} closing and removing subscription provider {} because of {}",
+ "Exception occurred while {} was closing and removing subscription provider {} because {}",
consumer,
provider,
e,
diff --git a/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ConfigNodeMessages.java b/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ConfigNodeMessages.java
index b08332bb35c7e..ad3f8a024bae7 100644
--- a/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ConfigNodeMessages.java
+++ b/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ConfigNodeMessages.java
@@ -55,9 +55,9 @@ public final class ConfigNodeMessages {
public static final String CHANGE_REGIONS_LEADER_ERROR_ON_DATE_NODE =
"Change regions leader error on Date node: {}";
public static final String CHECK_BEFORE_DROPPING_TOPIC_TOPIC_EXISTS =
- "Check before dropping topic: {}, topic exists: {}";
+ "删除 Topic 前检查:Topic {} 是否存在:{}";
public static final String CHECK_BEFORE_DROP_PIPE_PIPE_EXISTS =
- "Check before drop pipe {}, pipe exists: {}.";
+ "删除 pipe 前检查,pipe {} 是否存在:{}。";
public static final String CLUSTERID_HAS_BEEN_GENERATED = "已生成 clusterID:{}";
public static final String CLUSTERID_HAS_BEEN_RECOVERED_FROM_SNAPSHOT = "已从快照恢复 clusterID:{}";
public static final String CLUSTERID_NOT_GENERATED_YET_SHOULD_NEVER_HAPPEN =
@@ -89,9 +89,9 @@ public final class ConfigNodeMessages {
public static final String CONFIGNODE_SIMPLECONSENSUSFILE_HAS_EXISTED_FILEPATH =
"ConfigNode SimpleConsensusFile has existed,filePath:{}";
public static final String CONFIG_REGION_LISTENING_QUEUE_LISTEN_TO_SNAPSHOT_FAILED_THE_HISTORICAL =
- "Config Region Listening Queue Listen to snapshot failed, the historical data may not be transferred.";
+ "Config Region Listening Queue 监听快照失败,历史数据可能无法传输。";
public static final String CONFIG_REGION_LISTENING_QUEUE_LISTEN_TO_SNAPSHOT_FAILED_WHEN_STARTUP =
- "Config Region Listening Queue Listen to snapshot failed when startup, snapshot will be tried again when starting schema transferring pipes";
+ "Config Region Listening Queue 启动时监听快照失败,将在启动 schema 传输 pipe 时重试监听快照";
public static final String CONTINUOUS_QUERY_MIN_EVERY_INTERVAL_IN_MS_SHOULD_BE_GREATER =
"continuous_query_min_every_interval_in_ms 应大于 0,但当前值为 {},忽略并使用默认值 {}";
public static final String CONTINUOUS_QUERY_SUBMIT_THREAD_SHOULD_BE_GREATER_THAN_0 =
@@ -174,23 +174,23 @@ public final class ConfigNodeMessages {
public static final String FAILED_ON_DATANODE = "{} failed on DataNode {}";
public static final String FAILED_ON_DATANODE_RETRYING =
"{} failed on DataNode {}, retrying {}...";
- public static final String FAILED_TO_ALTER_PIPE = "Failed to alter pipe";
+ public static final String FAILED_TO_ALTER_PIPE = "修改 pipe 失败";
public static final String FAILED_TO_CHECK_SCHEMA_REGION_USING_TEMPLATE_ON_DATANODE =
- "Failed to check schema region using template on DataNode {}, {}";
+ "在 DataNode {} 上检查正在使用模板的 SchemaRegion 失败,{}";
public static final String FAILED_TO_CHECK_TIMESERIES_EXISTENCE_ON_DATANODE =
"Failed to check timeseries existence on DataNode {}, {}";
public static final String FAILED_TO_COUNT_PATHS_USING_TEMPLATE_ON_DATANODE =
"Failed to count paths using template on DataNode {}, {}";
- public static final String FAILED_TO_CREATE_MULTIPLE_PIPES = "Failed to create multiple pipes";
- public static final String FAILED_TO_CREATE_PIPE = "Failed to create pipe";
+ public static final String FAILED_TO_CREATE_MULTIPLE_PIPES = "批量创建 pipe 失败";
+ public static final String FAILED_TO_CREATE_PIPE = "创建 pipe 失败";
public static final String FAILED_TO_CREATE_PIPEPLUGIN_SOURCE_PIPEPLUGIN_FAILED_TO_LOAD =
- "Failed to create PipePlugin [%s], source PipePlugin [%s] failed to load: %s";
+ "创建 PipePlugin [%s] 失败,源 PipePlugin [%s] 加载失败:%s";
public static final String FAILED_TO_CREATE_PIPEPLUGIN_SOURCE_PIPEPLUGIN_JAR_DOES_NOT_EXIST =
- "Failed to create PipePlugin [%s], source PipePlugin [%s] jar [%s] does not exist in install dir.";
+ "创建 PipePlugin [%s] 失败,源 PipePlugin [%s] jar [%s] 在安装目录中不存在。";
public static final String FAILED_TO_CREATE_PIPEPLUGIN_THE_SAME_NAME_PIPEPLUGIN_HAS_BEEN =
- "Failed to create PipePlugin [%s], the same name PipePlugin has been created";
+ "创建 PipePlugin [%s] 失败,同名 PipePlugin 已创建";
public static final String FAILED_TO_CREATE_PIPEPLUGIN_THIS_PIPEPLUGIN_EXISTS_BUT_FAILED_TO =
- "Failed to create PipePlugin [%s], this PipePlugin exists but failed to load: %s";
+ "创建 PipePlugin [%s] 失败,该 PipePlugin 已存在但加载失败:%s";
public static final String FAILED_TO_CREATE_TEMPLATE_BECAUSE_TEMPLATE_NAME_EXISTS =
"Failed to create template, because template name {} exists";
public static final String FAILED_TO_CREATE_TRIGGER_THE_SAME_NAME_JAR_BUT_DIFFERENT =
@@ -203,11 +203,11 @@ public final class ConfigNodeMessages {
"Failed to create UDF [%s], the same name UDF has been created";
public static final String FAILED_TO_DECREASE_LISTENER_REFERENCE =
"Failed to decrease listener reference";
- public static final String FAILED_TO_DROP_PIPE = "Failed to drop pipe";
+ public static final String FAILED_TO_DROP_PIPE = "删除 pipe 失败";
public static final String FAILED_TO_DROP_PIPEPLUGIN_THE_PIPEPLUGIN_IS_A_BUILT_IN =
- "Failed to drop PipePlugin [%s], the PipePlugin is a built-in PipePlugin";
+ "删除 PipePlugin [%s] 失败,该 PipePlugin 是内置 PipePlugin";
public static final String FAILED_TO_DROP_PIPEPLUGIN_THIS_PIPEPLUGIN_HAS_NOT_BEEN_CREATED =
- "Failed to drop PipePlugin [%s], this PipePlugin has not been created";
+ "删除 PipePlugin [%s] 失败,该 PipePlugin 尚未创建";
public static final String FAILED_TO_DROP_TRIGGER_THIS_TRIGGER_HAS_NOT_BEEN_CREATED =
"Failed to drop trigger [%s], this trigger has not been created";
public static final String FAILED_TO_DROP_UDF_THIS_UDF_HAS_NOT_BEEN_CREATED =
@@ -220,11 +220,11 @@ public final class ConfigNodeMessages {
public static final String FAILED_TO_INCREASE_LISTENER_REFERENCE =
"Failed to increase listener reference";
public static final String FAILED_TO_LOAD_PIPE_INFO_FROM_SNAPSHOT =
- "Failed to load pipe info from snapshot, ";
+ "从快照加载 pipe 信息失败,";
public static final String FAILED_TO_LOAD_PIPE_PLUGIN_INFO_FROM_SNAPSHOT =
- "Failed to load pipe plugin info from snapshot";
+ "从快照加载 pipe 插件信息失败";
public static final String FAILED_TO_LOAD_PIPE_TASK_INFO_FROM_SNAPSHOT =
- "Failed to load pipe task info from snapshot";
+ "从快照加载 pipe 任务信息失败";
public static final String FAILED_TO_LOAD_PLUGIN_CLASS_FOR_PLUGIN_WHEN_LOADING_SNAPSHOT =
"Failed to load plugin class for plugin [{}] when loading snapshot [{}] ";
public static final String FAILED_TO_LOAD_SNAPSHOT_BECAUSE_GET_NULL_DATABASE_NAME =
@@ -242,18 +242,18 @@ public final class ConfigNodeMessages {
public static final String FAILED_TO_LOAD_SNAPSHOT_SNAPSHOT_FILE_IS_NOT_EXIST_2 =
"Failed to load snapshot,snapshot file [{}] is not exist.";
public static final String FAILED_TO_LOAD_SUBSCRIPTION_SNAPSHOT_SNAPSHOT_FILE_IS_NOT_EXIST =
- "Failed to load subscription snapshot, snapshot file {} is not exist.";
+ "加载订阅快照失败,快照文件 {} 不存在。";
public static final String FAILED_TO_ON_CONFIGNODE_RESPONSE =
"Failed to {} on ConfigNode: {}, response: {}";
public static final String FAILED_TO_ON_DATANODE = "Failed to {} on DataNode {}, {}";
public static final String FAILED_TO_ON_DATANODE_EXCEPTION =
"Failed to {} on DataNode: {}, exception: {}";
public static final String FAILED_TO_ON_DATANODE_RESPONSE =
- "Failed to {} on DataNode: {}, response: {}";
- public static final String FAILED_TO_OPERATE_PIPE = "Failed to operate pipe";
- public static final String FAILED_TO_SET_PIPE_STATUS = "Failed to set pipe status";
+ "执行 {} 失败,目标 DataNode:{},响应:{}";
+ public static final String FAILED_TO_OPERATE_PIPE = "操作 pipe 失败";
+ public static final String FAILED_TO_SET_PIPE_STATUS = "设置 pipe 状态失败";
public static final String FAILED_TO_SET_PIPE_STATUS_WITH_STOPPED_BY_RUNTIME_EXCEPTION =
- "Failed to set pipe status with stopped-by-runtime-exception flag";
+ "设置带 stopped-by-runtime-exception 标记的 pipe 状态失败";
public static final String FAILED_TO_TAKE_SNAPSHOT_BECAUSE_CREATE_TMP_DIR_FAIL =
"Failed to take snapshot, because create tmp dir [{}] fail.";
public static final String FAILED_TO_TAKE_SNAPSHOT_BECAUSE_SNAPSHOT_DIR_IS_ALREADY_EXIST =
@@ -267,22 +267,22 @@ public final class ConfigNodeMessages {
public static final String FAILED_TO_TAKE_SNAPSHOT_OF_TTLINFO_BECAUSE_SNAPSHOT_FILE_IS =
"Failed to take snapshot of TTLInfo, because snapshot file [{}] is already exist.";
public static final String FAILED_TO_TAKE_SUBSCRIPTION_SNAPSHOT_BECAUSE_SNAPSHOT_FILE_IS_ALREADY =
- "Failed to take subscription snapshot, because snapshot file {} is already exist.";
+ "生成订阅快照失败,因为快照文件 {} 已存在。";
public static final String FAILED_TO_UPDATE_CONFIG_FILE = "更新配置文件失败";
public static final String FILE_NOT_EXISTS = "File {} not exists";
public static final String FOR_RECEIVES = "{} for {} receives: {}";
public static final String GET_DATANODE_CPU_CORE_FAIL_WILL_BE_TREATED_AS_ZERO =
"Get DataNode {} cpu core fail, will be treated as zero.";
- public static final String GET_PIPEPLUGIN_JAR_FAILED = "Get PipePlugin_Jar failed";
+ public static final String GET_PIPEPLUGIN_JAR_FAILED = "获取 PipePlugin Jar 失败";
public static final String GET_TRIGGERJAR_FAILED = "Get TriggerJar failed";
public static final String GET_UDF_JAR_FAILED = "Get UDF_Jar failed";
public static final String GET_URL_FAILED = "获取 URL 失败";
public static final String GET_USER_OR_ROLE_PERMISSIONINFO_FAILED_BECAUSE =
"get user or role permissionInfo failed because ";
public static final String HANDLING_CONSUMER_GROUP_META_CHANGES =
- "Handling consumer group meta changes ...";
- public static final String HANDLING_PIPE_META_CHANGES = "Handling pipe meta changes ...";
- public static final String HANDLING_TOPIC_META_CHANGES = "Handling topic meta changes ...";
+ "正在处理消费者组元数据变更 ...";
+ public static final String HANDLING_PIPE_META_CHANGES = "正在处理 pipe 元数据变更 ...";
+ public static final String HANDLING_TOPIC_META_CHANGES = "正在处理 Topic 元数据变更 ...";
public static final String HAS_REGISTERED_SUCCESSFULLY_WAITING_FOR_THE_LEADER_S_SCHEDULING_TO =
"{} {} has registered successfully. Waiting for the leader's scheduling to join the cluster: {}.";
public static final String HAS_SUCCESSFULLY_RESTARTED_AND_JOINED_THE_CLUSTER =
@@ -320,19 +320,19 @@ public final class ConfigNodeMessages {
"[PartitionTableCleaner] The TimePartitions: {} are removed from Database: {}";
public static final String PATH1_SHOULD_NOT_BE_NULL = "Path1 should not be null";
public static final String PIPEMETASYNCER_IS_TRYING_TO_RESTART_THE_PIPES =
- "PipeMetaSyncer is trying to restart the pipes: {}";
+ "PipeMetaSyncer 正在尝试重启 pipe:{}";
public static final String PIPE_IS_USING_EXTERNAL_SOURCE_SKIP_REGION =
- "Pipe {} is using external source, skip region leader change. PipeHandleLeaderChangePlan: {}";
+ "Pipe {} 使用外部 source,跳过 region leader 变更。PipeHandleLeaderChangePlan:{}";
public static final String PLAN_TYPE_IS_NOT_SUPPORTED = "Plan type %s is not supported.";
public static final String PLEASE_SET_THE_CN_SEED_CONFIG_NODE_PARAMETER_IN_IOTDB =
"Please set the cn_seed_config_node parameter in iotdb-system.properties file.";
public static final String PORTS_USED_IN_CONFIGNODE_HAVE_REPEAT =
"ports used in configNode have repeat.";
public static final String REACH_EOF = "Reach eof";
- public static final String RECORDING_CONSUMER_GROUP_META = "Recording consumer group meta: {}";
- public static final String RECORDING_TOPIC_META = "Recording topic meta: {}";
+ public static final String RECORDING_CONSUMER_GROUP_META = "记录消费者组元数据:{}";
+ public static final String RECORDING_TOPIC_META = "记录 Topic 元数据:{}";
public static final String RECOVERED_CONSENSUS_PIPES_AS_RUNNING_DURING_SNAPSHOT_LOAD =
- "Recovered consensus pipes {} as RUNNING during snapshot load.";
+ "快照加载期间已将 consensus pipe {} 恢复为 RUNNING 状态。";
public static final String RELEASE_TRIGGERTABLELOCK = "release TriggerTableLock";
public static final String RELEASE_UDFTABLELOCK = "release UDFTableLock";
public static final String REMOVED_THE_AINODE_FROM_CLUSTER = "Removed the AINode {} from cluster";
@@ -367,7 +367,7 @@ public final class ConfigNodeMessages {
public static final String SUCCESSFULLY_APPLY_CONFIGNODE_CURRENT_CONFIGNODEGROUP =
"Successfully apply ConfigNode: {}. Current ConfigNodeGroup: {}";
public static final String SUCCESSFULLY_CHECK_SCHEMA_REGION_USING_TEMPLATE_ON_DATANODE =
- "Successfully check schema region using template on DataNode: {}";
+ "成功在 DataNode 上检查正在使用模板的 SchemaRegion:{}";
public static final String SUCCESSFULLY_CHECK_TIMESERIES_EXISTENCE_ON_DATANODE =
"Successfully check timeseries existence on DataNode: {}";
public static final String SUCCESSFULLY_COUNT_PATHS_USING_TEMPLATE_ON_DATANODE =
@@ -377,7 +377,7 @@ public final class ConfigNodeMessages {
public static final String SUCCESSFULLY_INITIALIZE_CONFIGMANAGER =
"Successfully initialize ConfigManager.";
public static final String SUCCESSFULLY_ON_CONFIGNODE = "Successfully {} on ConfigNode: {}";
- public static final String SUCCESSFULLY_ON_DATANODE = "Successfully {} on DataNode: {}";
+ public static final String SUCCESSFULLY_ON_DATANODE = "执行 {} 成功,目标 DataNode:{}";
public static final String SUCCESSFULLY_REMOVE_CONFIGNODE_CURRENT_CONFIGNODEGROUP =
"Successfully remove ConfigNode: {}. Current ConfigNodeGroup: {}";
public static final String SUCCESSFULLY_SETUP_INTERNAL_SERVICES =
@@ -442,14 +442,14 @@ public final class ConfigNodeMessages {
public static final String THE_SEEDCONFIGNODE_SETTING_IN_CONF_IS_EMPTY =
"The seedConfigNode setting in conf is empty";
public static final String THE_S_CREATION_HAS_NOT_PASSED_IN_JARNAME_WHICH_DOES =
- "The %s's creation has not passed in jarName, which does not exist in other pipePlugins. Please check";
+ "%s 创建时未传入 jarName,且其他 pipePlugin 中也不存在该 jarName。请检查";
public static final String THE_TIMESTAMP_PRECISION_SHOULD_BE_MS_US_OR_NS =
"The timestamp_precision should be ms, us or ns";
public static final String THE_TIME_PARTITION_INTERVAL_SHOULD_BE_POSITIVE =
"The time_partition_interval should be positive";
public static final String THE_TIME_PARTITION_ORIGIN_SHOULD_BE_NON_NEGATIVE =
"The time_partition_origin should be non-negative";
- public static final String TRY_LISTEN_TO_PLAN_FAILED = "Try listen to plan failed";
+ public static final String TRY_LISTEN_TO_PLAN_FAILED = "尝试监听 plan 失败";
public static final String UNDEFINED_TEMPLATE = "Undefined template {}";
public static final String UNEXPECTED_INTERRUPTION_DURING_THE_CLOSE_METHOD_OF_LOGWRITER =
"Unexpected interruption during the close method of logWriter";
diff --git a/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ManagerMessages.java b/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ManagerMessages.java
index 836fe7dd60b21..6593661aecd55 100644
--- a/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ManagerMessages.java
+++ b/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ManagerMessages.java
@@ -24,15 +24,15 @@ public final class ManagerMessages {
public static final String ACTIVATEDATAALLOTTABLE_ACTIVATE_SERIESPARTITIONSLOT =
"[ActivateDataAllotTable] Activate SeriesPartitionSlot {} ";
public static final String AFTER_THIS_SUCCESSFUL_SYNC_IF_PIPETASKINFO_IS_EMPTY_DURING_THIS =
- "After this successful sync, if PipeTaskInfo is empty during this sync and has not been modified afterwards, all subsequent syncs will be skipped";
+ "本次同步成功后,如果 PipeTaskInfo 在本次同步期间为空且之后未被修改,则后续所有同步都将被跳过";
public static final String AFTER_THIS_SUCCESSFUL_SYNC_IF_SUBSCRIPTIONINFO_IS_EMPTY_DURING_THIS =
- "After this successful sync, if SubscriptionInfo is empty during this sync and has not been modified afterwards, all subsequent syncs will be skipped";
+ "本次同步成功后,如果本轮同步期间 SubscriptionInfo 为空且之后没有被修改,则后续所有同步都会被跳过";
public static final String ATTEMPT_TO_REPORT_PIPE_EXCEPTION_TO_A_NULL_PIPETASKMETA =
- "Attempt to report pipe exception to a null PipeTaskMeta.";
+ "尝试向空 PipeTaskMeta 上报 pipe 异常。";
public static final String AUTH_RUN_AUTH_PLAN = "Auth: run auth plan: {}";
public static final String CLUSTERID = "clusterID: {}";
public static final String COLLECTING_PIPE_HEARTBEAT_FROM_DATA_NODES =
- "Collecting pipe heartbeat {} from data nodes";
+ "正在从 DataNode 收集 pipe 心跳 {}";
public static final String CONNECTION_FROM_DATANODE_TO_DATANODE_IS_BROKEN =
"Connection from DataNode {} to DataNode {} is broken";
public static final String CONSENSUSGROUPSTATISTICS = "[ConsensusGroupStatistics]\t {}: {} -> {}";
@@ -41,9 +41,9 @@ public final class ManagerMessages {
public static final String CONSENSUSMANAGER_GETLEADERPEER_BEEN_INTERRUPTED =
"ConsensusManager getLeaderPeer been interrupted, ";
public static final String CONSUMER_IN_CONSUMER_GROUP_FAILED_TO_SUBSCRIBE_TOPICS_RESULT_STATUS =
- "Consumer {} in consumer group {} failed to subscribe topics {}. Result status: {}.";
+ "消费者 {} 在消费者组 {} 中订阅 Topic {} 失败。结果状态:{}。";
public static final String CONSUMER_IN_CONSUMER_GROUP_FAILED_TO_UNSUBSCRIBE_TOPICS_RESULT_STATUS =
- "Consumer {} in consumer group {} failed to unsubscribe topics {}. Result status: {}.";
+ "消费者 {} 在消费者组 {} 中取消订阅 Topic {} 失败。结果状态:{}。";
public static final String CREATEPEERFORCONSENSUSGROUP = "createPeerForConsensusGroup {}...";
public static final String CREATEREGIONGROUPS_STARTING_TO_CREATE_THE_FOLLOWING_REGIONGROUPS =
"[CreateRegionGroups] Starting to create the following RegionGroups:";
@@ -64,20 +64,20 @@ public final class ManagerMessages {
"Decrease reference count for snapshot {} error.";
public static final String DELETING_REGIONS_COSTS_MS = "Deleting regions costs {}ms";
public static final String DETECTED_COMPLETION_OF_PIPE_STATIC_META_REMOVE_IT =
- "Detected completion of pipe {}, static meta: {}, remove it.";
+ "检测到 pipe {} 已完成,static meta:{},将移除。";
public static final String DETECT_PIPERUNTIMECRITICALEXCEPTION_FROM_AGENT_STOP_PIPE =
- "Detect PipeRuntimeCriticalException {} from agent, stop pipe {}.";
+ "从 agent 检测到 PipeRuntimeCriticalException {},停止 pipe {}。";
public static final String ENABLE_SEPARATION_OF_POWERS_IS_NOT_SUPPORTED = "不支持启用权力分离";
public static final String ENDEXECUTECQ_TIME_RANGE_IS_CURRENT_TIME_IS =
"[EndExecuteCQ] {}, time range is [{}, {}), current time is {}";
public static final String ERROR_HAPPENED_WHILE_SHUTTING_DOWN_PREVIOUS_CQ_SCHEDULE_THREAD_POOL =
"Error happened while shutting down previous cq schedule thread pool.";
public static final String ERROR_OCCURRED_DURING_CLOSING_PIPECONNECTOR =
- "Error occurred during closing PipeConnector.";
+ "关闭 PipeConnector 时发生错误。";
public static final String ERROR_OCCURRED_DURING_CLOSING_PIPEEXTRACTOR =
- "Error occurred during closing PipeExtractor.";
+ "关闭 PipeExtractor 时发生错误。";
public static final String ERROR_OCCURRED_DURING_CLOSING_PIPEPROCESSOR =
- "Error occurred during closing PipeProcessor.";
+ "关闭 PipeProcessor 时发生错误。";
public static final String ERROR_WHEN_COUNTING_DATAREGIONGROUPS_IN_DATABASE =
"Error when counting DataRegionGroups in Database: {}";
public static final String ERROR_WHEN_COUNTING_SCHEMAREGIONGROUPS_IN_DATABASE =
@@ -91,7 +91,7 @@ public final class ManagerMessages {
public static final String EXECUTE_CQ_FAILED = "Execute CQ {} failed";
public static final String EXECUTE_CQ_FAILED_TSSTATUS_IS = "Execute CQ {} failed, TSStatus is {}";
public static final String EXPECTED_PIPE_HEARTBEAT_NODE_COUNT_IS_FALLBACK_TO_1 =
- "Expected pipe heartbeat node count is {}, fallback to 1.";
+ "预期 pipe 心跳节点数为 {},回退为 1。";
public static final String EXTENDREGION_SUBMIT_ADDREGIONPEERPROCEDURE_SUCCESSFULLY =
"[ExtendRegion] Submit AddRegionPeerProcedure successfully: {}";
public static final String EXTEND_REGION_GROUP_FAILED = "Extend region group failed";
@@ -100,97 +100,96 @@ public final class ManagerMessages {
public static final String FAILED_TO_ACQUIRE_LOCK_WHEN_PARSEHEARTBEAT_FROM_NODE_ID =
"Failed to acquire lock when parseHeartbeat from node (id={}).";
public static final String FAILED_TO_ACQUIRE_PIPE_LOCK_FOR_AUTO_RESTART_PIPE_TASK =
- "Failed to acquire pipe lock for auto restart pipe task.";
+ "为自动重启 pipe 任务获取 pipe 锁失败。";
public static final String FAILED_TO_ACQUIRE_PIPE_LOCK_FOR_HANDLING_SUCCESSFUL_RESTART =
- "Failed to acquire pipe lock for handling successful restart.";
+ "为处理重启成功获取 pipe 锁失败。";
public static final String FAILED_TO_ALTER_PIPE_RESULT_STATUS =
- "Failed to alter pipe {}. Result status: {}.";
+ "修改 pipe {} 失败。结果状态:{}。";
public static final String FAILED_TO_CHECK_AND_REPAIR_CONSENSUS_PIPES =
- "Failed to check and repair consensus pipes";
+ "检查并修复 consensus pipe 失败";
public static final String FAILED_TO_CHECK_PASSWORD_FOR_PIPE =
- "Failed to check password for pipe %s.";
+ "检查 pipe %s 密码失败。";
public static final String FAILED_TO_CLOSE_CONSUMER_IN_CONSUMER_GROUP_RESULT_STATUS =
- "Failed to close consumer {} in consumer group {}. Result status: {}.";
+ "关闭消费者 {}(消费者组 {})失败。结果状态:{}。";
public static final String FAILED_TO_CLOSE_EXTRACTOR_AFTER_FAILED_TO_INITIALIZE_EXTRACTOR =
- "Failed to close extractor after failed to initialize extractor. ";
+ "初始化 extractor 失败后关闭 extractor 失败。";
public static final String FAILED_TO_CLOSE_SINK_AFTER_FAILED_TO_INITIALIZE_IT_IGNORE =
- "Failed to close sink after failed to initialize it. Ignore this exception.";
+ "初始化 sink 失败后关闭 sink 失败。忽略此异常。";
public static final String FAILED_TO_COLLECT_COMMITCREATETABLEPLAN =
"Failed to collect CommitCreateTablePlan";
public static final String FAILED_TO_COLLECT_PIPE_META_LIST_FROM_CONFIG_NODE_TASK =
- "Failed to collect pipe meta list from config node task agent";
+ "从 ConfigNode task agent 收集 pipe 元数据列表失败";
public static final String FAILED_TO_COLLECT_UNSETTEMPLATEPLAN =
"Failed to collect UnsetTemplatePlan";
public static final String FAILED_TO_COLLECT_USER_NAME_FOR_USER_ID =
"Failed to collect user name for user id {}";
public static final String FAILED_TO_CREATE_CONSUMER_IN_CONSUMER_GROUP_RESULT_STATUS =
- "Failed to create consumer {} in consumer group {}. Result status: {}.";
+ "创建消费者 {}(消费者组 {})失败。结果状态:{}。";
public static final String FAILED_TO_CREATE_PEER_FOR_CONSENSUS_GROUP =
"Failed to create peer for consensus group";
public static final String FAILED_TO_CREATE_PIPE_RESULT_STATUS =
- "Failed to create pipe {}. Result status: {}.";
+ "创建 pipe {} 失败。结果状态:{}。";
public static final String FAILED_TO_CREATE_SUBTASK_FOR_PIPE_CREATION_TIME =
- "Failed to create subtask for pipe %s, creation time %d";
+ "为 pipe %s 创建子任务失败,创建时间 %d";
public static final String FAILED_TO_CREATE_TOPIC_WITH_ATTRIBUTES_RESULT_STATUS =
- "Failed to create topic {} with attributes {}. Result status: {}.";
+ "创建 Topic {} 失败,属性:{},结果状态:{}。";
public static final String FAILED_TO_DEEP_COPY_PIPEMETA = "深拷贝 pipeMeta 失败";
public static final String FAILED_TO_DEREGISTER_PIPE_CONFIG_REGION_CONNECTOR =
- "Failed to deregister pipe config region connector metrics, PipeConfigNodeSubtask({}) does not exist";
+ "注销 pipe config region connector 指标失败,PipeConfigNodeSubtask({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_CONFIG_REGION_EXTRACTOR =
- "Failed to deregister pipe config region extractor metrics, IoTDBConfigRegionExtractor({}) does not exist";
+ "注销 pipe config region extractor 指标失败,IoTDBConfigRegionExtractor({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_REMAINING_TIME_METRICS_REMAININGTIMEOPERATOR_DOES_NOT =
- "Failed to deregister pipe remaining time metrics, RemainingTimeOperator({}) does not exist";
+ "注销 pipe remaining time 指标失败,RemainingTimeOperator({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_TEMPORARY_META_METRICS_PIPETEMPORARYMETA_DOES_NOT =
- "Failed to deregister pipe temporary meta metrics, PipeTemporaryMeta({}) does not exist";
+ "注销 pipe temporary meta 指标失败,PipeTemporaryMeta({}) 不存在";
public static final String FAILED_TO_DROP_PIPE_RESULT_STATUS =
- "Failed to drop pipe {}. Result status: {}.";
- public static final String FAILED_TO_GET_ALL_PIPE_INFO = "Failed to get all pipe info.";
- public static final String FAILED_TO_GET_ALL_SUBSCRIPTION_INFO =
- "Failed to get all subscription info.";
- public static final String FAILED_TO_GET_ALL_TOPIC_INFO = "Failed to get all topic info.";
+ "删除 pipe {} 失败。结果状态:{}。";
+ public static final String FAILED_TO_GET_ALL_PIPE_INFO = "获取所有 pipe 信息失败。";
+ public static final String FAILED_TO_GET_ALL_SUBSCRIPTION_INFO = "获取所有订阅信息失败。";
+ public static final String FAILED_TO_GET_ALL_TOPIC_INFO = "获取所有 Topic 信息失败。";
public static final String FAILED_TO_HANDLE_PIPE_META_CHANGES = "处理 pipe 元数据变更失败";
public static final String FAILED_TO_HANDLE_PIPE_META_CHANGE_RESULT_STATUS =
- "Failed to handle pipe meta change. Result status: {}.";
+ "处理 pipe 元数据变更失败。结果状态:{}。";
public static final String FAILED_TO_LOAD_SNAPSHOT_FROM_BYTEBUFFER =
"Failed to load snapshot from byteBuffer {}.";
public static final String FAILED_TO_LOAD_SNAPSHOT_SNAPSHOT_FILE_IS_NOT_A_NORMAL =
"Failed to load snapshot,snapshot file [{}] is not a normal file.";
public static final String FAILED_TO_MARK_PIPE_CONFIG_REGION_WRITE_PLAN_EVENT_PIPECONFIGNODESUBTASK =
- "Failed to mark pipe config region write plan event, PipeConfigNodeSubtask({}) does not exist";
+ "标记 pipe config region write plan 事件失败,PipeConfigNodeSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_REGION_COMMIT_REMAININGTIMEOPERATOR_DOES_NOT_EXIST =
- "Failed to mark pipe region commit, RemainingTimeOperator({}) does not exist";
- public static final String FAILED_TO_SHOW_SUBSCRIPTION_INFO = "Failed to show subscription info.";
- public static final String FAILED_TO_SHOW_TOPIC_INFO = "Failed to show topic info.";
+ "标记 pipe region commit 失败,RemainingTimeOperator({}) 不存在";
+ public static final String FAILED_TO_SHOW_SUBSCRIPTION_INFO = "查询订阅信息失败。";
+ public static final String FAILED_TO_SHOW_TOPIC_INFO = "查询 Topic 信息失败。";
public static final String FAILED_TO_START_PIPE_RESULT_STATUS =
- "Failed to start pipe {}. Result status: {}.";
+ "启动 pipe {} 失败。结果状态:{}。";
public static final String FAILED_TO_STOP_PIPE_RESULT_STATUS =
- "Failed to stop pipe {}. Result status: {}.";
+ "停止 pipe {} 失败。结果状态:{}。";
public static final String FAILED_TO_SUBMIT_ASYNC_CONSENSUS_PIPE_CREATION_FOR =
- "Failed to submit async consensus pipe creation for {}: {}";
+ "为 {} 提交异步 consensus pipe 创建任务失败:{}";
public static final String FAILED_TO_SUBMIT_ASYNC_CONSENSUS_PIPE_DROP_FOR =
- "Failed to submit async consensus pipe drop for {}: {}";
+ "为 {} 提交异步 consensus pipe 删除任务失败:{}";
public static final String FAILED_TO_SYNC_CONSUMER_GROUP_META_RESULT_STATUS =
- "Failed to sync consumer group meta. Result status: {}.";
+ "同步消费者组元数据失败。结果状态:{}。";
public static final String FAILED_TO_SYNC_PIPE_META_RESULT_STATUS =
- "Failed to sync pipe meta. Result status: {}.";
+ "同步 pipe 元数据失败。结果状态:{}。";
public static final String FAILED_TO_SYNC_TEMPLATE_EXTENSION_INFO_TO_DATANODE =
"Failed to sync template {} extension info to DataNode {}";
public static final String FAILED_TO_SYNC_TOPIC_META_RESULT_STATUS =
- "Failed to sync topic meta. Result status: {}.";
+ "同步 Topic 元数据失败。结果状态:{}。";
public static final String FAILED_TO_UNBIND_FROM_PIPE_CONFIG_REGION_CONNECTOR_METRICS_CONNECTOR =
- "Failed to unbind from pipe config region connector metrics, connector map not empty";
+ "从 pipe config region connector 指标解绑失败,connector map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_CONFIG_REGION_EXTRACTOR_METRICS_EXTRACTOR =
- "Failed to unbind from pipe config region extractor metrics, extractor map not empty";
+ "从 pipe config region extractor 指标解绑失败,extractor map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_REMAINING_TIME_METRICS_REMAININGTIMEOPERATOR_MAP =
- "Failed to unbind from pipe remaining time metrics, RemainingTimeOperator map not empty";
+ "从 pipe remaining time 指标解绑失败,RemainingTimeOperator map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_TEMPORARY_META_METRICS_PIPETEMPORARYMETA_MAP =
- "Failed to unbind from pipe temporary meta metrics, PipeTemporaryMeta map not empty";
+ "从 pipe temporary meta 指标解绑失败,PipeTemporaryMeta map 非空";
public static final String FAILED_TO_UPDATE_PIPE_PROCEDURE_TIMER_PIPEPROCEDURE_DOES_NOT_EXIST =
- "Failed to update pipe procedure timer, PipeProcedure({}) does not exist";
+ "更新 pipe procedure 计时器失败,PipeProcedure({}) 不存在";
public static final String FAILED_TO_UPDATE_THE_LAST_EXECUTION_TIME_OF_CQ_BECAUSE =
"Failed to update the last execution time {} of CQ {}, because {}";
public static final String FAIL_TO_GET_ALLUDFTABLE = "Fail to get AllUDFTable";
- public static final String FAIL_TO_GET_PIPEPLUGINTABLE = "Fail to get PipePluginTable";
+ public static final String FAIL_TO_GET_PIPEPLUGINTABLE = "获取 PipePluginTable 失败";
public static final String FAIL_TO_GET_TRIGGERTABLE = "Fail to get TriggerTable";
public static final String FAIL_TO_GET_UDFTABLE = "Fail to get UDFTable";
public static final String FAIL_TO_TRANSFER_BECAUSE_WILL_RETRY =
@@ -218,7 +217,7 @@ public final class ManagerMessages {
public static final String INIT_CONSENSUSMANAGER_SUCCESSFULLY_WHEN_RESTARTED =
"Init ConsensusManager successfully when restarted";
public static final String INTERRUPTED_WHILE_WAITING_FOR_PIPETASKCOORDINATOR_LOCK_CURRENT_THREAD =
- "Interrupted while waiting for PipeTaskCoordinator lock, current thread: {}";
+ "等待 PipeTaskCoordinator 锁时被中断,当前线程:{}";
public static final String INTERRUPT_WHEN_WAIT_FOR_CALCULATING_REGION_PRIORITY =
"Interrupt when wait for calculating Region priority";
public static final String INTERRUPT_WHEN_WAIT_FOR_LEADER_ELECTION =
@@ -229,21 +228,21 @@ public final class ManagerMessages {
public static final String IOTCONSENSUSV2_LEADER_CHANGED_SUCCESSFULLY_FLUSH_OLD_LEADER_FOR_REGION =
"[IoTConsensusV2 Leader Changed] Successfully flush old leader {} for region {}";
public static final String IOTDBCONFIGNODERECEIVER_DOES_NOT_SUPPORT_LOAD_FILE_V1 =
- "IoTDBConfigNodeReceiver does not support load file V1.";
+ "IoTDBConfigNodeReceiver 不支持 load file V1。";
public static final String IOTDBCONFIGREGIONAIRGAPCONNECTOR_CAN_T_TRANSFER_TABLETINSERTIONEVENT =
- "IoTDBConfigRegionAirGapConnector can't transfer TabletInsertionEvent.";
+ "IoTDBConfigRegionAirGapConnector 无法传输 TabletInsertionEvent。";
public static final String IOTDBCONFIGREGIONAIRGAPCONNECTOR_CAN_T_TRANSFER_TSFILEINSERTIONEVENT =
- "IoTDBConfigRegionAirGapConnector can't transfer TsFileInsertionEvent.";
+ "IoTDBConfigRegionAirGapConnector 无法传输 TsFileInsertionEvent。";
public static final String IOTDBCONFIGREGIONAIRGAPCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBConfigRegionAirGapConnector does not support transferring generic event: {}.";
+ "IoTDBConfigRegionAirGapConnector 不支持传输 generic event:{}。";
public static final String IOTDBCONFIGREGIONSINK_CAN_T_TRANSFER_TABLETINSERTIONEVENT =
- "IoTDBConfigRegionSink can't transfer TabletInsertionEvent.";
+ "IoTDBConfigRegionSink 无法传输 TabletInsertionEvent。";
public static final String IOTDBCONFIGREGIONSINK_CAN_T_TRANSFER_TSFILEINSERTIONEVENT =
- "IoTDBConfigRegionSink can't transfer TsFileInsertionEvent.";
+ "IoTDBConfigRegionSink 无法传输 TsFileInsertionEvent。";
public static final String IOTDBCONFIGREGIONSINK_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBConfigRegionSink does not support transferring generic event: {}.";
+ "IoTDBConfigRegionSink 不支持传输 generic event:{}。";
public static final String IOTDBCONFIGREGIONSOURCE_DOES_NOT_TRANSFERRING_EVENTS_UNDER_SIMPLE_CONSENSUS =
- "IoTDBConfigRegionSource does not transferring events under simple consensus";
+ "IoTDBConfigRegionSource 在 simple consensus 下不传输事件";
public static final String LEADERBALANCER_FAILED_TO_CHANGE_THE_LEADER_OF_REGION_TO_DATANODE =
"[LeaderBalancer] Failed to change the leader of Region: {} to DataNode: {}";
public static final String LEADERBALANCER_REGION_NOT_IN_DATABASEREGIONGROUPMAP =
@@ -267,11 +266,11 @@ public final class ManagerMessages {
public static final String MISMATCHED_CRC32_CODE_WHEN_DESERIALIZING_SERVICE_INFO =
"Mismatched CRC32 code when deserializing service info.";
public static final String NETWORK_ERROR_WHEN_SEAL_CONFIG_REGION_SNAPSHOT_BECAUSE =
- "Network error when seal config region snapshot %s, because %s.";
+ "封存 config region 快照 %s 时发生网络错误,原因:%s。";
public static final String NETWORK_ERROR_WHEN_TRANSFER_CONFIG_REGION_WRITE_PLAN_BECAUSE =
- "Network error when transfer config region write plan %s, because %s.";
+ "传输 config region write plan %s 时发生网络错误,原因:%s。";
public static final String NETWORK_ERROR_WHEN_TRANSFER_EVENT_BECAUSE =
- "Network error when transfer event %s, because %s.";
+ "传输事件 %s 时发生网络错误,原因:%s。";
public static final String NODEMANAGER_START_TO_REMOVE_DATANODE =
"NodeManager start to remove DataNode {}";
public static final String NODEMANAGER_SUBMIT_REMOVEAINODEPLAN_FINISHED =
@@ -284,7 +283,7 @@ public final class ManagerMessages {
public static final String NOT_HAS_PRIVILEGE_TO_TRANSFER_PLAN = "没有传输计划的权限:";
public static final String NOT_IMPLEMENT_YET = "尚未实现";
public static final String NO_CORRESPONDING_PIPE_IS_RUNNING_IN_THE_REPORTED_DATAREGION_RUNTIMEMETAFROMAGENT =
- "No corresponding Pipe is running in the reported DataRegion. runtimeMetaFromAgent is null, runtimeMetaFromCoordinator: {}";
+ "上报的 DataRegion 中没有对应的 Pipe 正在运行。runtimeMetaFromAgent 为空,runtimeMetaFromCoordinator:{}";
public static final String PARTITIONBALANCER_THE_SERIESSLOT_IN_TIMESLOT_WILL_BE =
"[PartitionBalancer] The SeriesSlot: {} in TimeSlot: {} will be allocated to DataRegionGroup: {}, because the original target: {} is currently unavailable.";
public static final String PHIACCRUALDETECTOR_TOPOLOGY_IS_BROKEN_HEARTBEAT_HISTORY_MS =
@@ -292,57 +291,57 @@ public final class ManagerMessages {
public static final String PHIACCRUALDETECTOR_TOPOLOGY_IS_RECOVERED_HEARTBEAT_HISTORY_MS =
"[PhiAccrualDetector] Topology {} is recovered, heartbeat history (ms): {}";
public static final String PIPEHANDLELEADERCHANGEPROCEDURE_WAS_FAILED_TO_SUBMIT =
- "PipeHandleLeaderChangeProcedure was failed to submit.";
+ "提交 PipeHandleLeaderChangeProcedure 失败。";
public static final String PIPEHANDLELEADERCHANGEPROCEDURE_WAS_SUBMITTED_PROCEDUREID =
- "PipeHandleLeaderChangeProcedure was submitted, procedureId: {}.";
+ "已提交 PipeHandleLeaderChangeProcedure,procedureId:{}。";
public static final String PIPEHANDLEMETACHANGEPROCEDURE_WAS_FAILED_TO_SUBMIT =
- "PipeHandleMetaChangeProcedure was failed to submit.";
+ "提交 PipeHandleMetaChangeProcedure 失败。";
public static final String PIPEHANDLEMETACHANGEPROCEDURE_WAS_SUBMITTED_PROCEDUREID =
- "PipeHandleMetaChangeProcedure was submitted, procedureId: {}.";
+ "已提交 PipeHandleMetaChangeProcedure,procedureId:{}。";
public static final String PIPEHEARTBEAT_IS_STARTED_SUCCESSFULLY =
- "PipeHeartbeat is started successfully.";
+ "PipeHeartbeat 启动成功。";
public static final String PIPEHEARTBEAT_IS_STOPPED_SUCCESSFULLY =
- "PipeHeartbeat is stopped successfully.";
+ "PipeHeartbeat 停止成功。";
public static final String PIPEMETASYNCER_IS_STARTED_SUCCESSFULLY =
- "PipeMetaSyncer is started successfully.";
+ "PipeMetaSyncer 启动成功。";
public static final String PIPEMETASYNCER_IS_STOPPED_SUCCESSFULLY =
- "PipeMetaSyncer is stopped successfully.";
+ "PipeMetaSyncer 停止成功。";
public static final String PIPERUNTIMECONFIGNODEAGENT_STARTED =
- "PipeRuntimeConfigNodeAgent started";
+ "PipeRuntimeConfigNodeAgent 已启动";
public static final String PIPERUNTIMECONFIGNODEAGENT_STOPPED =
- "PipeRuntimeConfigNodeAgent stopped";
+ "PipeRuntimeConfigNodeAgent 已停止";
public static final String PIPERUNTIMECOORDINATOR_MEETS_ERROR_IN_UPDATING_PIPEMETAKEEPER =
- "PipeRuntimeCoordinator meets error in updating pipeMetaKeeper, ";
+ "PipeRuntimeCoordinator 更新 pipeMetaKeeper 时发生错误,";
public static final String PIPETASKCOORDINATORLOCK_IS_HELD_BY_ANOTHER_THREAD_SKIP_THIS_ROUND_OF =
- "PipeTaskCoordinatorLock is held by another thread, skip this round of heartbeat to avoid procedure and rpc accumulation as much as possible";
+ "PipeTaskCoordinatorLock 已被其他线程持有,跳过本轮心跳以尽量避免 procedure 和 RPC 堆积";
public static final String PIPETASKCOORDINATORLOCK_IS_HELD_BY_ANOTHER_THREAD_SKIP_THIS_ROUND_OF_2 =
- "PipeTaskCoordinatorLock is held by another thread, skip this round of sync to avoid procedure and rpc accumulation as much as possible";
+ "PipeTaskCoordinatorLock 已被其他线程持有,跳过本轮同步以尽量避免 procedure 和 RPC 堆积";
public static final String PIPETASKCOORDINATOR_LOCK_ACQUIRED_BY_THREAD =
- "PipeTaskCoordinator lock acquired by thread {}";
+ "线程 {} 已获取 PipeTaskCoordinator 锁";
public static final String PIPETASKCOORDINATOR_LOCK_FAILED_TO_ACQUIRE_BY_THREAD_BECAUSE_OF_TIMEOUT =
- "PipeTaskCoordinator lock failed to acquire by thread {} because of timeout";
+ "线程 {} 因超时获取 PipeTaskCoordinator 锁失败";
public static final String PIPETASKCOORDINATOR_LOCK_RELEASED_BY_THREAD =
- "PipeTaskCoordinator lock released by thread {}";
+ "线程 {} 已释放 PipeTaskCoordinator 锁";
public static final String PIPETASKCOORDINATOR_LOCK_WAITING_FOR_THREAD =
- "PipeTaskCoordinator lock waiting for thread {}";
+ "PipeTaskCoordinator 锁正在等待线程 {}";
public static final String PIPE_SNAPSHOT_DIR_FOUND_DELETING_IT =
- "Pipe snapshot dir found, deleting it: {},";
+ "发现 Pipe 快照目录,正在删除:{},";
public static final String PROCEDUREMANAGER_IS_STARTED_SUCCESSFULLY = "ProcedureManager 已成功启动。";
public static final String PROCEDUREMANAGER_IS_STOPPED_SUCCESSFULLY = "ProcedureManager 已成功停止。";
public static final String PROCEDURE_DETAILS_ARE = "[{}] procedure details are {}";
public static final String REBALANCEDATAALLOTTABLE_DATABASE =
"[ReBalanceDataAllotTable] Database: {}, ";
public static final String RECEIVED_PIPE_HEARTBEAT_REQUEST_FROM_CONFIG_COORDINATOR =
- "Received pipe heartbeat request {} from config coordinator.";
- public static final String RECEIVER_ID = "Receiver id = {}: {}";
+ "收到来自 config coordinator 的 pipe 心跳请求 {}。";
+ public static final String RECEIVER_ID = "接收器 id = {}:{}";
public static final String RECEIVER_ID_EXCEPTION_ENCOUNTERED_WHILE_EXECUTING_PLAN =
- "Receiver id = {}: Exception encountered while executing plan {}: ";
+ "Receiver id = {}:执行 plan {} 时遇到异常:";
public static final String RECEIVER_ID_FAILURE_STATUS_ENCOUNTERED_WHILE_EXECUTING_PLAN =
- "Receiver id = {}: Failure status encountered while executing plan {}: {}";
+ "Receiver id = {}:执行 plan {} 时遇到失败状态:{}";
public static final String RECEIVER_ID_PERMISSION_CHECK_FAILED_WHILE_EXECUTING_PLAN =
- "Receiver id = {}: Permission check failed while executing plan {}: {}";
+ "Receiver id = {}:执行 plan {} 时权限检查失败:{}";
public static final String RECEIVER_ID_UNSUPPORTED_PIPEREQUESTTYPE_ON_CONFIGNODE_RESPONSE_STATUS =
- "Receiver id = {}: Unsupported PipeRequestType on ConfigNode, response status = {}.";
+ "Receiver id = {}:ConfigNode 不支持的 PipeRequestType,响应状态 = {}。";
public static final String RECONSTRUCTREGION_SUBMIT_RECONSTRUCTREGIONPROCEDURE_SUCCESSFULLY =
"[ReconstructRegion] Submit ReconstructRegionProcedure successfully, {}";
public static final String REGIONCLEANER_IS_STARTED_SUCCESSFULLY =
@@ -382,21 +381,21 @@ public final class ManagerMessages {
public static final String REMOVE_REGION_TARGET_DATANODE_NOT_FOUND_WILL_SIMPLY_CLEAN_UP =
"Remove region: Target DataNode {} not found, will simply clean up the partition table of region {} and do nothing else.";
public static final String REPORT_PIPERUNTIMEEXCEPTION_TO_LOCAL_PIPETASKMETA_EXCEPTION_MESSAGE =
- "Report PipeRuntimeException to local PipeTaskMeta({}), exception message: {}";
+ "向本地 PipeTaskMeta({}) 上报 PipeRuntimeException,异常消息:{}";
public static final String RETRYFAILMISSIONS_SERVICE_IS_STARTED_SUCCESSFULLY =
"RetryFailMissions service is started successfully.";
public static final String RETRYFAILMISSIONS_SERVICE_IS_STOPPED_SUCCESSFULLY =
"RetryFailMissions service is stopped successfully.";
public static final String SERIALIZATION_FAILED_FOR_THE_ALTER_ENCODING_TIME_SERIES_PLAN_IN =
- "Serialization failed for the alter encoding time series plan in pipe transmission, skip transfer";
+ "pipe 传输中序列化 alter encoding time series plan 失败,跳过传输";
public static final String SERIALIZATION_FAILED_FOR_THE_DELETE_LOGICAL_VIEW_PLAN_IN_PIPE =
- "Serialization failed for the delete logical view plan in pipe transmission, skip transfer";
+ "pipe 传输中序列化 delete logical view plan 失败,跳过传输";
public static final String SERIALIZATION_FAILED_FOR_THE_DELETE_TIME_SERIES_PLAN_IN_PIPE =
- "Serialization failed for the delete time series plan in pipe transmission, skip transfer";
+ "pipe 传输中序列化 delete time series plan 失败,跳过传输";
public static final String SOMETHING_WRONG_HAPPENED_WHILE_CALLING_CONSENSUS_LAYER_S_CREATELOCALPEER_API =
"Something wrong happened while calling consensus layer's createLocalPeer API.";
public static final String SOME_PIPES_NEED_RESTARTING_WILL_RESTART_THEM_AFTER_THIS_SYNC =
- "Some pipes need restarting, will restart them after this sync";
+ "部分 pipe 需要重启,将在本次同步后重启";
public static final String STARTEXECUTECQ_EXECUTE_CQ_ON_DATANODE_TIME_RANGE_IS_CURRENT_TIME =
"[StartExecuteCQ] execute CQ {} on DataNode[{}], time range is [{}, {}), current time is {}";
public static final String START_TO_ACTIVATE_UDF_IN_UDF_TABLE_ON_CONFIG_NODES =
@@ -414,9 +413,9 @@ public final class ManagerMessages {
public static final String STOP_SUBMITTING_CQ_BECAUSE_CURRENT_NODE_IS_NOT_LEADER_OR =
"Stop submitting CQ {} because current node is not leader or current scheduled thread pool is shut down.";
public static final String SUBMITTED_ASYNC_CONSENSUS_PIPE_CREATION =
- "Submitted async consensus pipe creation: {}";
+ "已提交异步 consensus pipe 创建任务:{}";
public static final String SUBMITTED_ASYNC_CONSENSUS_PIPE_DROP =
- "Submitted async consensus pipe drop: {}";
+ "已提交异步 consensus pipe 删除任务:{}";
public static final String SUBMIT_REMOVEAINODEPROCEDURE_SUCCESSFULLY =
"Submit RemoveAINodeProcedure successfully, {}";
public static final String SUBMIT_REMOVECONFIGNODEPROCEDURE_SUCCESSFULLY =
@@ -424,25 +423,25 @@ public final class ManagerMessages {
public static final String SUBMIT_REMOVEDATANODESPROCEDURE_SUCCESSFULLY =
"Submit RemoveDataNodesProcedure successfully, {}";
public static final String SUBSCRIPTIONCOORDINATORLOCK_IS_HELD_BY_ANOTHER_THREAD_SKIP_THIS_ROUND_OF =
- "SubscriptionCoordinatorLock is held by another thread, skip this round of sync to avoid procedure and rpc accumulation as much as possible";
+ "SubscriptionCoordinatorLock 被其他线程持有,跳过本轮同步以尽量避免 Procedure 和 RPC 堆积";
public static final String SUBSCRIPTIONMETASYNCER_IS_STARTED_SUCCESSFULLY =
- "SubscriptionMetaSyncer is started successfully.";
+ "SubscriptionMetaSyncer 启动成功。";
public static final String SUBSCRIPTIONMETASYNCER_IS_STOPPED_SUCCESSFULLY =
- "SubscriptionMetaSyncer is stopped successfully.";
+ "SubscriptionMetaSyncer 停止成功。";
public static final String SUCCESSFULLY_TRANSFERRED_CONFIG_EVENT =
- "Successfully transferred config event {}.";
+ "成功传输 config 事件 {}。";
public static final String SUCCESSFULLY_TRANSFERRED_CONFIG_REGION_SNAPSHOT =
- "Successfully transferred config region snapshot {}.";
+ "成功传输 config region 快照 {}。";
public static final String THERE_IS_NO_RUNNING_DATANODE_TO_EXECUTE_CQ =
"There is no RUNNING DataNode to execute CQ {}";
public static final String THE_CONFIGNODE_WILL_BE_SHUTDOWN_SOON_MARK_IT_AS_UNKNOWN =
"The ConfigNode-{} will be shutdown soon, mark it as Unknown";
public static final String THE_CONFIG_REGION_AIR_GAP_CONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING =
- "The config region air gap connector does not support transferring single file piece bytes.";
+ "config region air gap connector 不支持传输 single file piece bytes。";
public static final String THE_CONFIG_REGION_SINK_DOES_NOT_SUPPORT_TRANSFERRING_SINGLE_FILE =
- "The config region sink does not support transferring single file piece req.";
+ "config region sink 不支持传输 single file piece req。";
public static final String THE_CONFIG_REGION_SNAPSHOTS_CANNOT_BE_PARSED =
- "The config region snapshots %s cannot be parsed.";
+ "无法解析 config region 快照 %s。";
public static final String THE_DATABASE_DOESN_T_EXIST_MAYBE_IT_HAS_BEEN_PRE =
"The Database: {} doesn't exist. Maybe it has been pre-deleted.";
public static final String THE_DATANODE_WILL_BE_SHUTDOWN_SOON_MARK_IT_AS_UNKNOWN =
diff --git a/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ProcedureMessages.java b/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ProcedureMessages.java
index d928f4f6bae8b..fb9304c9961e6 100644
--- a/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ProcedureMessages.java
+++ b/iotdb-core/confignode/src/main/i18n/zh/org/apache/iotdb/confignode/i18n/ProcedureMessages.java
@@ -29,17 +29,17 @@ public final class ProcedureMessages {
public static final String ADD_COLUMN_TO_TABLE = "Add column to table {}.{}";
public static final String ADD_CONFIGNODE_FAILED = "Add ConfigNode failed ";
public static final String ALTERCONSUMERGROUPPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "AlterConsumerGroupProcedure: executeFromOperateOnConfigNodes({})";
+ "AlterConsumerGroupProcedure:执行 executeFromOperateOnConfigNodes({})";
public static final String ALTERCONSUMERGROUPPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "AlterConsumerGroupProcedure: executeFromOperateOnDataNodes({})";
+ "AlterConsumerGroupProcedure:执行 executeFromOperateOnDataNodes({})";
public static final String ALTERCONSUMERGROUPPROCEDURE_EXECUTEFROMVALIDATE_TRY_TO_VALIDATE =
- "AlterConsumerGroupProcedure: executeFromValidate, try to validate";
+ "AlterConsumerGroupProcedure:执行 executeFromValidate,开始校验";
public static final String ALTERCONSUMERGROUPPROCEDURE_ROLLBACKFROMOPERATEONCONFIGNODES =
- "AlterConsumerGroupProcedure: rollbackFromOperateOnConfigNodes({})";
+ "AlterConsumerGroupProcedure:回滚 rollbackFromOperateOnConfigNodes({})";
public static final String ALTERCONSUMERGROUPPROCEDURE_ROLLBACKFROMOPERATEONDATANODES =
- "AlterConsumerGroupProcedure: rollbackFromOperateOnDataNodes";
+ "AlterConsumerGroupProcedure:回滚 rollbackFromOperateOnDataNodes";
public static final String ALTERCONSUMERGROUPPROCEDURE_ROLLBACKFROMVALIDATE =
- "AlterConsumerGroupProcedure: rollbackFromValidate";
+ "AlterConsumerGroupProcedure:回滚 rollbackFromValidate";
public static final String ALTERENCODINGCOMPRESSOR_COSTS_MS =
"AlterEncodingCompressor-[{}] costs {}ms";
public static final String ALTERING_COLUMN_IN_ON_CONFIGNODE =
@@ -67,17 +67,17 @@ public final class ProcedureMessages {
public static final String ALTERTIMESERIESDATATYPE_COSTS_MS =
"AlterTimeSeriesDataType-{}-[{}] costs {}ms";
public static final String ALTERTOPICPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES_TRY_TO_ALTER_TOPIC =
- "AlterTopicProcedure: executeFromOperateOnConfigNodes, try to alter topic";
+ "AlterTopicProcedure:执行 executeFromOperateOnConfigNodes,开始修改 Topic";
public static final String ALTERTOPICPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "AlterTopicProcedure: executeFromOperateOnDataNodes({})";
+ "AlterTopicProcedure:执行 executeFromOperateOnDataNodes({})";
public static final String ALTERTOPICPROCEDURE_EXECUTEFROMVALIDATE =
- "AlterTopicProcedure: executeFromValidate";
+ "AlterTopicProcedure:执行 executeFromValidate";
public static final String ALTERTOPICPROCEDURE_ROLLBACKFROMOPERATEONCONFIGNODES =
- "AlterTopicProcedure: rollbackFromOperateOnConfigNodes({})";
+ "AlterTopicProcedure:回滚 rollbackFromOperateOnConfigNodes({})";
public static final String ALTERTOPICPROCEDURE_ROLLBACKFROMOPERATEONDATANODES =
- "AlterTopicProcedure: rollbackFromOperateOnDataNodes({})";
+ "AlterTopicProcedure:回滚 rollbackFromOperateOnDataNodes({})";
public static final String ALTERTOPICPROCEDURE_ROLLBACKFROMVALIDATE =
- "AlterTopicProcedure: rollbackFromValidate({})";
+ "AlterTopicProcedure:回滚 rollbackFromValidate({})";
public static final String ALTER_ENCODING_COMPRESSOR_IN_SCHEMA_REGIONS_FAILED_FAILURES =
"Alter encoding compressor %s in schema regions failed. Failures: %s";
public static final String ALTER_ENCODING_COMPRESSOR_IN_SCHEMA_REGION_FOR_TIMESERIES =
@@ -154,11 +154,11 @@ public final class ProcedureMessages {
public static final String COMMIT_SET_SCHEMAENGINE_TEMPLATE_ON_PATH =
"Commit set schemaengine template {} on path {}";
public static final String CONSENSUSPIPEGUARDIAN_CONSENSUS_PIPE_IS_STOPPED_RESTARTING_ASYNCHRONOUSLY =
- "[ConsensusPipeGuardian] consensus pipe [{}] is stopped, restarting asynchronously";
+ "[ConsensusPipeGuardian] consensus pipe [{}] 已停止,正在异步重启";
public static final String CONSENSUSPIPEGUARDIAN_CONSENSUS_PIPE_MISSING_CREATING_ASYNCHRONOUSLY =
- "[ConsensusPipeGuardian] consensus pipe [{}] missing, creating asynchronously";
+ "[ConsensusPipeGuardian] consensus pipe [{}] 缺失,正在异步创建";
public static final String CONSENSUSPIPEGUARDIAN_UNEXPECTED_CONSENSUS_PIPE_EXISTS_DROPPING_ASYNCHRONOUSLY =
- "[ConsensusPipeGuardian] unexpected consensus pipe [{}] exists, dropping asynchronously";
+ "[ConsensusPipeGuardian] 意外存在 consensus pipe [{}],正在异步删除";
public static final String CONSTRUCT_SCHEMAENGINE_BLACK_LIST_OF_DEVICES_IN =
"Construct schemaEngine black list of devices in {}.{}";
public static final String CONSTRUCT_SCHEMAENGINE_BLACK_LIST_OF_TEMPLATE_SET_ON =
@@ -170,21 +170,21 @@ public final class ProcedureMessages {
public static final String CONSTRUCT_VIEW_SCHEMAENGINE_BLACK_LIST_OF_VIEW =
"Construct view schemaengine black list of view {}";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_ACQUIRELOCK_SKIP_THE_PROCEDURE_DUE_TO =
- "ConsumerGroupMetaSyncProcedure: acquireLock, skip the procedure due to the last execution time {}";
+ "ConsumerGroupMetaSyncProcedure:执行 acquireLock,因上次执行时间 {} 跳过该 Procedure";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "ConsumerGroupMetaSyncProcedure: executeFromOperateOnConfigNodes";
+ "ConsumerGroupMetaSyncProcedure:执行 executeFromOperateOnConfigNodes";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "ConsumerGroupMetaSyncProcedure: executeFromOperateOnDataNodes";
+ "ConsumerGroupMetaSyncProcedure:执行 executeFromOperateOnDataNodes";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_EXECUTEFROMVALIDATE =
- "ConsumerGroupMetaSyncProcedure: executeFromValidate";
+ "ConsumerGroupMetaSyncProcedure:执行 executeFromValidate";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_ROLLBACKFROMOPERATEONCONFIGNODES =
- "ConsumerGroupMetaSyncProcedure: rollbackFromOperateOnConfigNodes";
+ "ConsumerGroupMetaSyncProcedure:回滚 rollbackFromOperateOnConfigNodes";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_ROLLBACKFROMOPERATEONDATANODES =
- "ConsumerGroupMetaSyncProcedure: rollbackFromOperateOnDataNodes";
+ "ConsumerGroupMetaSyncProcedure:回滚 rollbackFromOperateOnDataNodes";
public static final String CONSUMERGROUPMETASYNCPROCEDURE_ROLLBACKFROMVALIDATE =
- "ConsumerGroupMetaSyncProcedure: rollbackFromValidate";
+ "ConsumerGroupMetaSyncProcedure:回滚 rollbackFromValidate";
public static final String CREATEDATABASE_FAIL_TWICE = "createDatabase fail twice";
- public static final String CREATED_CONSENSUS_PIPE = "{}, Created consensus pipe {}";
+ public static final String CREATED_CONSENSUS_PIPE = "{}, 已创建 consensus pipe {}";
public static final String CREATEPIPEPLUGINPROCEDURE_EXECUTEFROMCREATEONCONFIGNODES =
"CreatePipePluginProcedure: executeFromCreateOnConfigNodes({})";
public static final String CREATEPIPEPLUGINPROCEDURE_EXECUTEFROMCREATEONDATANODES =
@@ -194,7 +194,7 @@ public final class ProcedureMessages {
public static final String CREATEPIPEPLUGINPROCEDURE_EXECUTEFROMUNLOCK =
"CreatePipePluginProcedure: executeFromUnlock({})";
public static final String CREATEPIPEPLUGINPROCEDURE_FAILED_IN_STATE_WILL_ROLLBACK =
- "CreatePipePluginProcedure failed in state {}, will rollback";
+ "CreatePipePluginProcedure 在状态 {} 失败,将回滚";
public static final String CREATEPIPEPLUGINPROCEDURE_ROLLBACKFROMCREATEONCONFIGNODES =
"CreatePipePluginProcedure: rollbackFromCreateOnConfigNodes({})";
public static final String CREATEPIPEPLUGINPROCEDURE_ROLLBACKFROMCREATEONDATANODES =
@@ -224,30 +224,30 @@ public final class ProcedureMessages {
public static final String CREATEREGIONGROUPS_FAILED_TO_CREATE_SOME_REPLICAS_OF_REGIONGROUP_BUT_THIS =
"[CreateRegionGroups] Failed to create some replicas of RegionGroup: {}, but this RegionGroup can still be used.";
public static final String CREATESUBSCRIPTIONPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "CreateSubscriptionProcedure: executeFromOperateOnConfigNodes";
+ "CreateSubscriptionProcedure:执行 executeFromOperateOnConfigNodes";
public static final String CREATESUBSCRIPTIONPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "CreateSubscriptionProcedure: executeFromOperateOnDataNodes";
+ "CreateSubscriptionProcedure:执行 executeFromOperateOnDataNodes";
public static final String CREATESUBSCRIPTIONPROCEDURE_EXECUTEFROMVALIDATE =
- "CreateSubscriptionProcedure: executeFromValidate";
+ "CreateSubscriptionProcedure:执行 executeFromValidate";
public static final String CREATESUBSCRIPTIONPROCEDURE_ROLLBACKFROMOPERATEONCONFIGNODES =
- "CreateSubscriptionProcedure: rollbackFromOperateOnConfigNodes";
+ "CreateSubscriptionProcedure:回滚 rollbackFromOperateOnConfigNodes";
public static final String CREATESUBSCRIPTIONPROCEDURE_ROLLBACKFROMOPERATEONDATANODES =
- "CreateSubscriptionProcedure: rollbackFromOperateOnDataNodes";
+ "CreateSubscriptionProcedure:回滚 rollbackFromOperateOnDataNodes";
public static final String CREATESUBSCRIPTIONPROCEDURE_ROLLBACKFROMVALIDATE =
- "CreateSubscriptionProcedure: rollbackFromValidate";
+ "CreateSubscriptionProcedure:回滚 rollbackFromValidate";
public static final String CREATETABLE_COSTS_MS = "CreateTable-{}.{}-{} costs {}ms";
public static final String CREATETOPICPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "CreateTopicProcedure: executeFromOperateOnConfigNodes({})";
+ "CreateTopicProcedure:执行 executeFromOperateOnConfigNodes({})";
public static final String CREATETOPICPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "CreateTopicProcedure: executeFromOperateOnDataNodes({})";
+ "CreateTopicProcedure:执行 executeFromOperateOnDataNodes({})";
public static final String CREATETOPICPROCEDURE_EXECUTEFROMVALIDATE =
- "CreateTopicProcedure: executeFromValidate";
+ "CreateTopicProcedure:执行 executeFromValidate";
public static final String CREATETOPICPROCEDURE_ROLLBACKFROMCREATEONCONFIGNODES =
- "CreateTopicProcedure: rollbackFromCreateOnConfigNodes({})";
+ "CreateTopicProcedure:回滚 rollbackFromCreateOnConfigNodes({})";
public static final String CREATETOPICPROCEDURE_ROLLBACKFROMCREATEONDATANODES =
- "CreateTopicProcedure: rollbackFromCreateOnDataNodes({})";
+ "CreateTopicProcedure:回滚 rollbackFromCreateOnDataNodes({})";
public static final String CREATETOPICPROCEDURE_ROLLBACKFROMVALIDATE =
- "CreateTopicProcedure: rollbackFromValidate({})";
+ "CreateTopicProcedure:回滚 rollbackFromValidate({})";
public static final String DATANODE_IS_SUBMIT_DELETE_OLD_REGION_PEER_WITH_A_SINGLE =
"{}, DataNode {} is {}, submit DELETE_OLD_REGION_PEER with a single RPC attempt and let RemoveRegionPeerProcedure handle retries.";
public static final String DEACTIVATETEMPLATE_COSTS_MS = "DeactivateTemplate-[{}] costs {}ms";
@@ -295,7 +295,7 @@ public final class ProcedureMessages {
public static final String DROPPIPEPLUGINPROCEDURE_EXECUTEFROMUNLOCK =
"DropPipePluginProcedure: executeFromUnlock({})";
public static final String DROPPIPEPLUGINPROCEDURE_FAILED_IN_STATE_WILL_ROLLBACK =
- "DropPipePluginProcedure failed in state {}, will rollback";
+ "DropPipePluginProcedure 在状态 {} 失败,将回滚";
public static final String DROPPIPEPLUGINPROCEDURE_ROLLBACKFROMDROPONCONFIGNODES =
"DropPipePluginProcedure: rollbackFromDropOnConfigNodes({})";
public static final String DROPPIPEPLUGINPROCEDURE_ROLLBACKFROMDROPONDATANODES =
@@ -319,31 +319,31 @@ public final class ProcedureMessages {
public static final String DROPPIPEPROCEDUREV2_ROLLBACKFROMWRITECONFIGNODECONSENSUS =
"DropPipeProcedureV2: rollbackFromWriteConfigNodeConsensus({})";
public static final String DROPSUBSCRIPTIONPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "DropSubscriptionProcedure: executeFromOperateOnConfigNodes";
+ "DropSubscriptionProcedure:执行 executeFromOperateOnConfigNodes";
public static final String DROPSUBSCRIPTIONPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "DropSubscriptionProcedure: executeFromOperateOnDataNodes";
+ "DropSubscriptionProcedure:执行 executeFromOperateOnDataNodes";
public static final String DROPSUBSCRIPTIONPROCEDURE_EXECUTEFROMVALIDATE =
- "DropSubscriptionProcedure: executeFromValidate";
+ "DropSubscriptionProcedure:执行 executeFromValidate";
public static final String DROPSUBSCRIPTIONPROCEDURE_ROLLBACKFROMLOCK =
- "DropSubscriptionProcedure: rollbackFromLock";
+ "DropSubscriptionProcedure:回滚 rollbackFromLock";
public static final String DROPSUBSCRIPTIONPROCEDURE_ROLLBACKFROMOPERATEONCONFIGNODES =
- "DropSubscriptionProcedure: rollbackFromOperateOnConfigNodes";
+ "DropSubscriptionProcedure:回滚 rollbackFromOperateOnConfigNodes";
public static final String DROPSUBSCRIPTIONPROCEDURE_ROLLBACKFROMOPERATEONDATANODES =
- "DropSubscriptionProcedure: rollbackFromOperateOnDataNodes";
+ "DropSubscriptionProcedure:回滚 rollbackFromOperateOnDataNodes";
public static final String DROPTABLECOLUMN_COSTS_MS = "DropTableColumn-{}.{}-{} costs {}ms";
public static final String DROPTABLE_COSTS_MS = "DropTable-{}.{}-{} costs {}ms";
public static final String DROPTOPICPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "DropTopicProcedure: executeFromOperateOnConfigNodes({})";
+ "DropTopicProcedure:执行 executeFromOperateOnConfigNodes({})";
public static final String DROPTOPICPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "DropTopicProcedure: executeFromOperateOnDataNodes({})";
+ "DropTopicProcedure:执行 executeFromOperateOnDataNodes({})";
public static final String DROPTOPICPROCEDURE_EXECUTEFROMVALIDATE =
- "DropTopicProcedure: executeFromValidate({})";
+ "DropTopicProcedure:执行 executeFromValidate({})";
public static final String DROPTOPICPROCEDURE_ROLLBACKFROMCREATEONCONFIGNODES =
- "DropTopicProcedure: rollbackFromCreateOnConfigNodes({})";
+ "DropTopicProcedure:回滚 rollbackFromCreateOnConfigNodes({})";
public static final String DROPTOPICPROCEDURE_ROLLBACKFROMCREATEONDATANODES =
- "DropTopicProcedure: rollbackFromCreateOnDataNodes({})";
+ "DropTopicProcedure:回滚 rollbackFromCreateOnDataNodes({})";
public static final String DROPTOPICPROCEDURE_ROLLBACKFROMVALIDATE =
- "DropTopicProcedure: rollbackFromValidate({})";
+ "DropTopicProcedure:回滚 rollbackFromValidate({})";
public static final String ERROR_IN_DESERIALIZE = "Error in deserialize {}";
public static final String ERROR_IN_DESERIALIZE_PROCID_THIS_PROCEDURE_WILL_BE_IGNORED_IT =
"Error in deserialize {} (procID {}). This procedure will be ignored. It may belong to old version and cannot be used now.";
@@ -358,33 +358,33 @@ public final class ProcedureMessages {
public static final String FAILED_TO_ACTIVE_CQ_SUCCESSFULLY_BECAUSE_OF_UNKNOWN_REASONS =
"Failed to active CQ {} successfully because of unknown reasons {}";
public static final String FAILED_TO_ALTER_CONSUMER_GROUP_ON_CONFIG_NODES_BECAUSE =
- "Failed to alter consumer group %s on config nodes, because %s";
+ "在 ConfigNode 上修改消费者组 %s 失败,原因:%s";
public static final String FAILED_TO_ALTER_CONSUMER_GROUP_ON_DATA_NODES_BECAUSE =
- "Failed to alter consumer group (%s -> %s) on data nodes, because %s";
+ "在 DataNode 上修改消费者组(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_ALTER_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED_LATER =
- "Failed to alter pipe {}, details: {}, metadata will be synchronized later.";
+ "修改 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_ALTER_TOPIC_ON_CONFIG_NODES_BECAUSE =
- "Failed to alter topic (%s -> %s) on config nodes, because %s";
+ "在 ConfigNode 上修改 Topic(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_ALTER_TOPIC_ON_DATA_NODES_BECAUSE =
- "Failed to alter topic (%s -> %s) on data nodes, because %s";
+ "在 DataNode 上修改 Topic(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_CHANGE_DATANODE_STATUS_DATANODEID_NODESTATUS =
"{}, Failed to change DataNode status, dataNodeId={}, nodeStatus={}";
public static final String FAILED_TO_COMMIT_SET_TEMPLATE_ON_PATH_DUE_TO =
"Failed to commit set template {} on path {} due to {}";
public static final String FAILED_TO_CREATE_CONSENSUS_PIPE =
- "{}, Failed to create consensus pipe {}: {}";
+ "{}, 创建 consensus pipe {} 失败:{}";
public static final String FAILED_TO_CREATE_PIPES_WHEN_CREATING_SUBSCRIPTION_WITH_REQUEST_DETAILS =
- "Failed to create pipes %s when creating subscription with request %s, details: %s, metadata will be synchronized later.";
+ "创建订阅时创建 pipe %s 失败,请求:%s,详情:%s,稍后将同步元数据。";
public static final String FAILED_TO_CREATE_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED_LATER =
- "Failed to create pipe {}, details: {}, metadata will be synchronized later.";
+ "创建 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_CREATE_PIPE_PLUGIN_INSTANCE_ON_DATA_NODES =
- "Failed to create pipe plugin instance [%s] on data nodes";
+ "在 DataNode 上创建 pipe plugin 实例 [%s] 失败";
public static final String FAILED_TO_CREATE_SUBSCRIPTION_WITH_REQUEST_ON_CONFIG_NODES_BECAUSE =
- "Failed to create subscription with request %s on config nodes, because %s";
+ "在 ConfigNode 上使用请求 %s 创建订阅失败,原因:%s";
public static final String FAILED_TO_CREATE_TOPIC_ON_CONFIG_NODES_BECAUSE =
- "Failed to create topic %s on config nodes, because %s";
+ "在 ConfigNode 上创建 Topic %s 失败,原因:%s";
public static final String FAILED_TO_CREATE_TOPIC_ON_DATA_NODES_BECAUSE =
- "Failed to create topic %s on data nodes, because %s";
+ "在 DataNode 上创建 Topic %s 失败,原因:%s";
public static final String FAILED_TO_DESERIALIZE_DATAPARTITIONTABLES =
"Failed to deserialize dataPartitionTables";
public static final String FAILED_TO_DESERIALIZE_FINALDATAPARTITIONTABLES =
@@ -394,17 +394,17 @@ public final class ProcedureMessages {
public static final String FAILED_TO_DO_INACTIVE_ROLLBACK_OF_CQ_BECAUSE_OF_UNKNOWN =
"Failed to do [INACTIVE] rollback of CQ {} because of unknown reasons {}";
public static final String FAILED_TO_DROP_PIPES_WHEN_DROPPING_SUBSCRIPTION_WITH_REQUEST_BECAUSE =
- "Failed to drop pipes %s when dropping subscription with request %s, because %s";
+ "删除订阅时删除 pipe %s 失败,请求:%s,原因:%s";
public static final String FAILED_TO_DROP_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED_LATER =
- "Failed to drop pipe {}, details: {}, metadata will be synchronized later.";
+ "删除 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_DROP_PIPE_PLUGIN_ON_DATA_NODES =
- "Failed to drop pipe plugin %s on data nodes";
+ "在 DataNode 上删除 pipe plugin %s 失败";
public static final String FAILED_TO_DROP_SUBSCRIPTION_WITH_REQUEST_ON_CONFIG_NODES_BECAUSE =
- "Failed to drop subscription with request %s on config nodes, because %s";
+ "在 ConfigNode 上使用请求 %s 删除订阅失败,原因:%s";
public static final String FAILED_TO_DROP_TOPIC_ON_CONFIG_NODES_BECAUSE =
- "Failed to drop topic %s on config nodes, because %s";
+ "在 ConfigNode 上删除 Topic %s 失败,原因:%s";
public static final String FAILED_TO_DROP_TOPIC_ON_DATA_NODES_BECAUSE =
- "Failed to drop topic %s on data nodes, because %s";
+ "在 DataNode 上删除 Topic %s 失败,原因:%s";
public static final String FAILED_TO_EXECUTE_IN_ALL_REPLICASET_OF_SCHEMAREGION_WHEN_CHECKING =
"Failed to execute in all replicaset of schemaRegion %s when checking templates on path %s. Failures: %s";
public static final String FAILED_TO_EXECUTE_IN_ALL_REPLICASET_OF_SCHEMAREGION_WHEN_CHECKING_2 =
@@ -436,39 +436,39 @@ public final class ProcedureMessages {
public static final String FAILED_TO_PRE_SET_TEMPLATE_ON_PATH_DUE_TO =
"Failed to pre set template {} on path {} due to {}";
public static final String FAILED_TO_PUSH_CONSUMER_GROUP_META_TO_DATANODES_DETAILS =
- "Failed to push consumer group meta to dataNodes, details: %s";
+ "向 DataNode 推送消费者组元数据失败,详情:%s";
public static final String FAILED_TO_PUSH_PIPE_META_LIST_TO_DATA_NODES_WILL =
- "Failed to push pipe meta list to data nodes, will retry later.";
+ "向 DataNode 推送 pipe 元数据列表失败,稍后重试。";
public static final String FAILED_TO_PUSH_PIPE_META_TO_DATANODES_DETAILS =
- "Failed to push pipe meta to dataNodes, details: %s";
+ "向 DataNode 推送 pipe 元数据失败,详情:%s";
public static final String FAILED_TO_PUSH_TOPIC_META_TO_DATANODES_DETAILS =
- "Failed to push topic meta to dataNodes, details: %s";
+ "向 DataNode 推送 Topic 元数据失败,详情:%s";
public static final String FAILED_TO_REMOVE_DATA_NODE_BECAUSE_IT_IS_NOT_IN =
"Failed to remove data node {} because it is not in running and the configuration of cluster is one replication";
public static final String FAILED_TO_ROLLBACK_ALTER_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED =
- "Failed to rollback alter pipe {}, details: {}, metadata will be synchronized later.";
+ "回滚修改 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_ROLLBACK_COMMIT_SET_TEMPLATE_ON_PATH_DUE_TO =
"Failed to rollback commit set template {} on path {} due to {}";
public static final String FAILED_TO_ROLLBACK_CREATE_PIPES_WHEN_CREATING_SUBSCRIPTION_WITH_REQUEST =
- "Failed to rollback create pipes when creating subscription with request %s, because %s";
+ "创建订阅时回滚创建 pipe 失败,请求:%s,原因:%s";
public static final String FAILED_TO_ROLLBACK_CREATE_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED =
- "Failed to rollback create pipe {}, details: {}, metadata will be synchronized later.";
+ "回滚创建 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_ROLLBACK_CREATING_SUBSCRIPTION_WITH_REQUEST_ON_CONFIG_NODES =
- "Failed to rollback creating subscription with request %s on config nodes, because %s";
+ "在 ConfigNode 上回滚创建订阅失败(请求:%s),原因:%s";
public static final String FAILED_TO_ROLLBACK_CREATING_TOPIC_ON_CONFIG_NODES_BECAUSE =
- "Failed to rollback creating topic %s on config nodes, because %s";
+ "在 ConfigNode 上回滚创建 Topic %s 失败,原因:%s";
public static final String FAILED_TO_ROLLBACK_CREATING_TOPIC_ON_DATA_NODES_BECAUSE =
- "Failed to rollback creating topic %s on data nodes, because %s";
+ "在 DataNode 上回滚创建 Topic %s 失败,原因:%s";
public static final String FAILED_TO_ROLLBACK_FROM_ALTERING_CONSUMER_GROUP_ON_CONFIG_NODES =
- "Failed to rollback from altering consumer group (%s -> %s) on config nodes, because %s";
+ "在 ConfigNode 上回滚修改消费者组(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_ROLLBACK_FROM_ALTERING_CONSUMER_GROUP_ON_DATA_NODES =
- "Failed to rollback from altering consumer group (%s -> %s) on data nodes, because %s";
+ "在 DataNode 上回滚修改消费者组(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_ROLLBACK_FROM_ALTERING_TOPIC_ON_CONFIG_NODES_BECAUSE =
- "Failed to rollback from altering topic (%s -> %s) on config nodes, because %s";
+ "在 ConfigNode 上回滚修改 Topic(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_ROLLBACK_FROM_ALTERING_TOPIC_ON_DATA_NODES_BECAUSE =
- "Failed to rollback from altering topic (%s -> %s) on data nodes, because %s";
+ "在 DataNode 上回滚修改 Topic(%s -> %s)失败,原因:%s";
public static final String FAILED_TO_ROLLBACK_PIPE_PLUGIN_ON_DATA_NODES =
- "Failed to rollback pipe plugin [%s] on data nodes";
+ "在 DataNode 上回滚 pipe plugin [%s] 失败";
public static final String FAILED_TO_ROLLBACK_PRE_RELEASE_FOR_TABLE_INFO_TO_DATANODE =
"Failed to rollback pre-release {} for table {}.{} info to DataNode, failure results: {}";
public static final String FAILED_TO_ROLLBACK_PRE_RELEASE_TEMPLATE_INFO_OF_TEMPLATE_SET =
@@ -478,9 +478,9 @@ public final class ProcedureMessages {
public static final String FAILED_TO_ROLLBACK_PRE_UNSET_TEMPLATE_OPERATION_OF_TEMPLATE_SET =
"Failed to rollback pre unset template operation of template {} set on {}";
public static final String FAILED_TO_ROLLBACK_START_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED =
- "Failed to rollback start pipe {}, details: {}, metadata will be synchronized later.";
+ "回滚启动 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_ROLLBACK_STOP_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED =
- "Failed to rollback stop pipe {}, details: {}, metadata will be synchronized later.";
+ "回滚停止 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_ROLLBACK_TABLE_CREATION =
"Failed to rollback table creation {}.{}";
public static final String FAILED_TO_ROLLBACK_TEMPLATE_CACHE_OF_TEMPLATE_SET_ON =
@@ -495,11 +495,11 @@ public final class ProcedureMessages {
public static final String FAILED_TO_SET_SCHEMAENGINE_TEMPLATE_ON_PATH_BECAUSE_THERE_S =
"Failed to set schemaengine template %s on path %s because there's failure on DataNode %s";
public static final String FAILED_TO_START_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED_LATER =
- "Failed to start pipe {}, details: {}, metadata will be synchronized later.";
+ "启动 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_STOP_AINODE_BECAUSE_BUT_THE_REMOVE_PROCESS_WILL =
"Failed to stop AINode {} because {}, but the remove process will continue.";
public static final String FAILED_TO_STOP_PIPE_DETAILS_METADATA_WILL_BE_SYNCHRONIZED_LATER =
- "Failed to stop pipe {}, details: {}, metadata will be synchronized later.";
+ "停止 pipe {} 失败,详情:{},稍后将同步元数据。";
public static final String FAILED_TO_SYNC_TABLE_COMMIT_CREATE_INFO_TO_DATANODE_FAILURE =
"Failed to sync table {}.{} commit-create info to DataNode {}, failure results: ";
public static final String FAILED_TO_SYNC_TABLE_PRE_CREATE_INFO_TO_DATANODE_FAILURE =
@@ -521,7 +521,7 @@ public final class ProcedureMessages {
public static final String FAIL_TO_CONFIG_NODE_INACTIVE_ROLLBACK_OF_TRIGGER =
"Fail to [CONFIG_NODE_INACTIVE] rollback of trigger [%s]";
public static final String FAIL_TO_CREATE_PIPE_PLUGIN_AFTER_RETRIES =
- "Fail to create pipe plugin [{}] after {} retries";
+ "创建 pipe plugin [{}] 失败,已重试 {} 次";
public static final String FAIL_TO_CREATE_TRIGGERINSTANCE_ON_DATA_NODES =
"Fail to create triggerInstance [%s] on Data Nodes";
public static final String FAIL_TO_CREATE_TRIGGER_AT_STATE =
@@ -529,7 +529,7 @@ public final class ProcedureMessages {
public static final String FAIL_TO_DATA_NODE_INACTIVE_ROLLBACK_OF_TRIGGER =
"Fail to [DATA_NODE_INACTIVE] rollback of trigger [%s]";
public static final String FAIL_TO_DROP_PIPE_PLUGIN_AFTER_RETRIES =
- "Fail to drop pipe plugin [{}] after {} retries";
+ "删除 pipe plugin [{}] 失败,已重试 {} 次";
public static final String FAIL_TO_DROP_TRIGGER_AT_STATE =
"Fail to drop trigger [%s] at STATE [%s]";
public static final String FAIL_TO_DROP_TRIGGER_ON_DATA_NODES =
@@ -687,7 +687,7 @@ public final class ProcedureMessages {
public static final String PIPEHANDLEMETACHANGEPROCEDURE_ROLLBACKFROMWRITECONFIGNODECONSENSUS =
"PipeHandleMetaChangeProcedure: rollbackFromWriteConfigNodeConsensus";
public static final String PIPEMETASYNCPROCEDURE_ACQUIRELOCK_SKIP_THE_PROCEDURE_DUE_TO_THE_LAST_EXECUTION =
- "PipeMetaSyncProcedure: acquireLock, skip the procedure due to the last execution time {}";
+ "PipeMetaSyncProcedure:acquireLock,上次执行时间为 {},跳过本次 procedure";
public static final String PIPEMETASYNCPROCEDURE_EXECUTEFROMCALCULATEINFOFORTASK =
"PipeMetaSyncProcedure: executeFromCalculateInfoForTask";
public static final String PIPEMETASYNCPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
@@ -705,13 +705,13 @@ public final class ProcedureMessages {
public static final String PIPEMETASYNCPROCEDURE_ROLLBACKFROMWRITECONFIGNODECONSENSUS =
"PipeMetaSyncProcedure: rollbackFromWriteConfigNodeConsensus";
public static final String PIPE_NOT_FOUND_IN_PIPETASKINFO_CAN_NOT_PUSH_ITS_META =
- "Pipe {} not found in PipeTaskInfo, can not push its meta.";
+ "在 PipeTaskInfo 中未找到 Pipe {},无法推送其元数据。";
public static final String PIPE_PLUGIN_IS_ALREADY_CREATED_AND_ISSETIFNOTEXISTSCONDITION_IS_TRUE_END =
- "Pipe plugin {} is already created and isSetIfNotExistsCondition is true, end the CreatePipePluginProcedure({})";
+ "Pipe plugin {} 已创建且 isSetIfNotExistsCondition 为 true,结束 CreatePipePluginProcedure({})";
public static final String PIPE_PLUGIN_IS_ALREADY_CREATED_END_THE_CREATEPIPEPLUGINPROCEDURE =
- "Pipe plugin {} is already created, end the CreatePipePluginProcedure({})";
+ "Pipe plugin {} 已创建,结束 CreatePipePluginProcedure({})";
public static final String PIPE_PLUGIN_IS_NOT_EXIST_END_THE_DROPPIPEPLUGINPROCEDURE =
- "Pipe plugin {} is not exist, end the DropPipePluginProcedure({})";
+ "Pipe plugin {} 不存在,结束 DropPipePluginProcedure({})";
public static final String PRE_CREATE_TABLE = "Pre create table {}.{}";
public static final String PRE_CREATE_TABLE_FAILED = "Pre create table failed";
public static final String PRE_RELEASE = "Pre-release ";
@@ -731,77 +731,77 @@ public final class ProcedureMessages {
public static final String PRE_SET_SCHEMAENGINE_TEMPLATE_ON_PATH =
"Pre set schemaengine template {} on path {}";
public static final String PRE_SET_TEMPLATE_FAILED = "Pre set template failed";
- public static final String PROCEDUREID = "ProcedureId {}: {}";
- public static final String PROCEDUREID_ACQUIRED_PIPE_LOCK = "ProcedureId {} acquired pipe lock.";
+ public static final String PROCEDUREID = "ProcedureId {}:{}";
+ public static final String PROCEDUREID_ACQUIRED_PIPE_LOCK = "ProcedureId {} 已获取 pipe 锁。";
public static final String PROCEDUREID_ACQUIRED_SUBSCRIPTION_LOCK =
- "ProcedureId {} acquired subscription lock.";
+ "ProcedureId {} 已获取订阅锁。";
public static final String PROCEDUREID_ALL_RETRIES_FAILED_WHEN_TRYING_TO_AT_STATE_WILL =
- "ProcedureId {}: All {} retries failed when trying to {} at state [{}], will rollback...";
+ "ProcedureId {}:{} 次重试均失败(操作:{},状态:[{}]),将回滚...";
public static final String PROCEDUREID_ENCOUNTERED_ERROR_WHEN_TRYING_TO_AT_STATE_RETRY =
- "ProcedureId {}: Encountered error when trying to {} at state [{}], retry [{}/{}]";
+ "ProcedureId {}:尝试 {} 时在状态 [{}] 遇到错误,重试 [{}/{}]";
public static final String PROCEDUREID_FAILED_TO_ACQUIRE_PIPE_LOCK =
- "ProcedureId {} failed to acquire pipe lock.";
+ "ProcedureId {} 获取 pipe 锁失败。";
public static final String PROCEDUREID_FAILED_TO_ACQUIRE_SUBSCRIPTION_LOCK =
- "ProcedureId {} failed to acquire subscription lock.";
+ "ProcedureId {} 获取订阅锁失败。";
public static final String PROCEDUREID_FAILED_TO_ROLLBACK_FROM_CALCULATE_INFO_FOR_TASK =
"ProcedureId {}: Failed to rollback from calculate info for task.";
public static final String PROCEDUREID_FAILED_TO_ROLLBACK_FROM_OPERATE_ON_DATA_NODES =
"ProcedureId {}: Failed to rollback from operate on data nodes.";
public static final String PROCEDUREID_FAILED_TO_ROLLBACK_FROM_STATE_BECAUSE =
- "ProcedureId {}: Failed to rollback from state [{}], because {}";
+ "ProcedureId {}:从状态 [{}] 回滚失败,原因:{}";
public static final String PROCEDUREID_FAILED_TO_ROLLBACK_FROM_VALIDATE_TASK =
"ProcedureId {}: Failed to rollback from validate task.";
public static final String PROCEDUREID_FAILED_TO_ROLLBACK_FROM_WRITE_CONFIG_NODE_CONSENSUS =
"ProcedureId {}: Failed to rollback from write config node consensus.";
- public static final String PROCEDUREID_FAIL_TO_BECAUSE = "ProcedureId %s: Fail to %s because %s";
+ public static final String PROCEDUREID_FAIL_TO_BECAUSE = "ProcedureId %s:%s 失败,原因:%s";
public static final String PROCEDUREID_INVALID_LOCK_STATE_PIPE_LOCK_WILL_BE_RELEASED =
- "ProcedureId {}: {}. Invalid lock state. Pipe lock will be released.";
+ "ProcedureId {}:{}。锁状态无效,将释放 pipe 锁。";
public static final String PROCEDUREID_INVALID_LOCK_STATE_SUBSCRIPTION_LOCK_WILL_BE_RELEASED =
- "ProcedureId {}: {}. Invalid lock state. Subscription lock will be released.";
+ "ProcedureId {}:{}。锁状态无效,将释放订阅锁。";
public static final String PROCEDUREID_INVALID_LOCK_STATE_WITHOUT_ACQUIRING_PIPE_LOCK =
- "ProcedureId {}: {}. Invalid lock state. Without acquiring pipe lock.";
+ "ProcedureId {}:{}。锁状态无效,未获取 pipe 锁。";
public static final String PROCEDUREID_INVALID_LOCK_STATE_WITHOUT_ACQUIRING_SUBSCRIPTION_LOCK =
- "ProcedureId {}: {}. Invalid lock state. Without acquiring subscription lock.";
+ "ProcedureId {}:{}。锁状态无效,未获取订阅锁。";
public static final String PROCEDUREID_LOCK_ACQUIRED_THE_FOLLOWING_PROCEDURE_SHOULD_BE_EXECUTED_WITH =
- "ProcedureId {}: LOCK_ACQUIRED. The following procedure should be executed with pipe lock.";
+ "ProcedureId {}:LOCK_ACQUIRED。后续 Procedure 应在持有 pipe 锁时执行。";
public static final String PROCEDUREID_LOCK_ACQUIRED_THE_FOLLOWING_PROCEDURE_SHOULD_BE_EXECUTED_WITH_2 =
- "ProcedureId {}: LOCK_ACQUIRED. The following procedure should be executed with subscription and pipe lock.";
+ "ProcedureId {}:LOCK_ACQUIRED。后续 Procedure 应在持有订阅锁和 pipe 锁时执行。";
public static final String PROCEDUREID_LOCK_ACQUIRED_THE_FOLLOWING_PROCEDURE_SHOULD_BE_EXECUTED_WITH_3 =
- "ProcedureId {}: LOCK_ACQUIRED. The following procedure should be executed with subscription lock.";
+ "ProcedureId {}:LOCK_ACQUIRED。后续 Procedure 应在持有订阅锁时执行。";
public static final String PROCEDUREID_LOCK_ACQUIRED_THE_FOLLOWING_PROCEDURE_SHOULD_NOT_BE_EXECUTED =
- "ProcedureId {}: LOCK_ACQUIRED. The following procedure should not be executed without pipe lock.";
+ "ProcedureId {}:LOCK_ACQUIRED。后续 Procedure 不应在未持有 pipe 锁时执行。";
public static final String PROCEDUREID_LOCK_ACQUIRED_THE_FOLLOWING_PROCEDURE_SHOULD_NOT_BE_EXECUTED_2 =
- "ProcedureId {}: LOCK_ACQUIRED. The following procedure should not be executed without subscription lock.";
+ "ProcedureId {}:LOCK_ACQUIRED。后续 Procedure 不应在未持有订阅锁时执行。";
public static final String PROCEDUREID_LOCK_EVENT_WAIT_PIPE_LOCK_WILL_BE_RELEASED =
- "ProcedureId {}: LOCK_EVENT_WAIT. Pipe lock will be released.";
+ "ProcedureId {}:LOCK_EVENT_WAIT。将释放 pipe 锁。";
public static final String PROCEDUREID_LOCK_EVENT_WAIT_SUBSCRIPTION_LOCK_WILL_BE_RELEASED =
- "ProcedureId {}: LOCK_EVENT_WAIT. Subscription lock will be released.";
+ "ProcedureId {}:LOCK_EVENT_WAIT。将释放订阅锁。";
public static final String PROCEDUREID_LOCK_EVENT_WAIT_WITHOUT_ACQUIRING_PIPE_LOCK =
- "ProcedureId {}: LOCK_EVENT_WAIT. Without acquiring pipe lock.";
+ "ProcedureId {}:LOCK_EVENT_WAIT。未获取 pipe 锁。";
public static final String PROCEDUREID_LOCK_EVENT_WAIT_WITHOUT_ACQUIRING_SUBSCRIPTION_LOCK =
- "ProcedureId {}: LOCK_EVENT_WAIT. Without acquiring subscription lock.";
+ "ProcedureId {}:LOCK_EVENT_WAIT。未获取订阅锁。";
public static final String PROCEDUREID_PIPE_LOCK_IS_NOT_ACQUIRED_EXECUTEFROMSTATE_S_EXECUTION_WILL =
- "ProcedureId {}: Pipe lock is not acquired, executeFromState's execution will be skipped.";
+ "ProcedureId {}:未获取 pipe 锁,将跳过 executeFromState 的执行。";
public static final String PROCEDUREID_PIPE_LOCK_IS_NOT_ACQUIRED_ROLLBACKSTATE_S_EXECUTION_WILL =
- "ProcedureId {}: Pipe lock is not acquired, rollbackState({})'s execution will be skipped.";
+ "ProcedureId {}:未获取 pipe 锁,将跳过 rollbackState({}) 的执行。";
public static final String PROCEDUREID_RELEASE_LOCK_NO_NEED_TO_RELEASE_PIPE_LOCK =
- "ProcedureId {} release lock. No need to release pipe lock.";
+ "ProcedureId {} 释放锁。无需释放 pipe 锁。";
public static final String PROCEDUREID_RELEASE_LOCK_NO_NEED_TO_RELEASE_SUBSCRIPTION_LOCK =
- "ProcedureId {} release lock. No need to release subscription lock.";
+ "ProcedureId {} 释放锁。无需释放订阅锁。";
public static final String PROCEDUREID_RELEASE_LOCK_PIPE_LOCK_WILL_BE_RELEASED =
- "ProcedureId {} release lock. Pipe lock will be released.";
+ "ProcedureId {} 释放锁。将释放 pipe 锁。";
public static final String PROCEDUREID_RELEASE_LOCK_SUBSCRIPTION_LOCK_WILL_BE_RELEASED =
- "ProcedureId {} release lock. Subscription lock will be released.";
+ "ProcedureId {} 释放锁。将释放订阅锁。";
public static final String PROCEDUREID_SUBSCRIPTION_LOCK_IS_NOT_ACQUIRED_EXECUTEFROMSTATE_S_EXECUTION_WILL =
- "ProcedureId {}: Subscription lock is not acquired, executeFromState({})'s execution will be skipped.";
+ "ProcedureId {}:未获取订阅锁,将跳过 executeFromState({}) 的执行。";
public static final String PROCEDUREID_SUBSCRIPTION_LOCK_IS_NOT_ACQUIRED_ROLLBACKSTATE_S_EXECUTION_WILL =
- "ProcedureId {}: Subscription lock is not acquired, rollbackState({})'s execution will be skipped.";
+ "ProcedureId {}:未获取订阅锁,将跳过 rollbackState({}) 的执行。";
public static final String PROCEDUREID_TRY_TO_ACQUIRE_PIPE_LOCK =
- "ProcedureId {} try to acquire pipe lock.";
+ "ProcedureId {} 尝试获取 pipe 锁。";
public static final String PROCEDUREID_TRY_TO_ACQUIRE_SUBSCRIPTION_AND_PIPE_LOCK =
- "ProcedureId {} try to acquire subscription and pipe lock.";
+ "ProcedureId {} 尝试获取订阅锁和 pipe 锁。";
public static final String PROCEDUREID_TRY_TO_ACQUIRE_SUBSCRIPTION_LOCK =
- "ProcedureId {} try to acquire subscription lock.";
+ "ProcedureId {} 尝试获取订阅锁。";
public static final String PROCEDURE_TYPE = "Procedure type ";
public static final String REMOVEREGIONLOCATION_REMOVE_REGION_FROM_DATANODE_RESULT_IS =
"RemoveRegionLocation remove region {} from DataNode {}, result is {}";
@@ -818,9 +818,9 @@ public final class ProcedureMessages {
public static final String RETRIEVABLE_ERROR_TRYING_TO_CREATE_CQ_STATE =
"Retrievable error trying to create cq [{}], state [{}]";
public static final String RETRIEVABLE_ERROR_TRYING_TO_CREATE_PIPE_PLUGIN_STATE =
- "Retrievable error trying to create pipe plugin [{}], state: {}";
+ "创建 pipe plugin [{}] 时遇到可恢复错误,状态:{}";
public static final String RETRIEVABLE_ERROR_TRYING_TO_DROP_PIPE_PLUGIN_STATE =
- "Retrievable error trying to drop pipe plugin [{}], state: {}";
+ "删除 pipe plugin [{}] 时遇到可恢复错误,状态:{}";
public static final String RETRIEVABLE_ERROR_TRYING_TO_EXECUTE_PLAN_STATE =
"Retrievable error trying to execute plan {}, state: {}";
public static final String RETRIEVABLE_ERROR_TRYING_TO_REMOVE_AINODE_STATE =
@@ -919,9 +919,9 @@ public final class ProcedureMessages {
"{}, Stop Data Node meets error, error datanode: {}";
public static final String STOP_DATA_NODE_SUCCESS = "{}, Stop Data Node {} success.";
public static final String SUBMITTED_ASYNC_CONSENSUS_PIPE_CREATION =
- "{}, Submitted async consensus pipe creation: {}";
+ "{}, 已提交异步 consensus pipe 创建任务:{}";
public static final String SUBSCRIPTION_META_SYNC_PROCEDURE_FINISHED_UPDATING_LAST_SYNC_VERSION =
- "Subscription meta sync procedure finished, updating last sync version.";
+ "订阅元数据同步 Procedure 已完成,正在更新最后同步版本。";
public static final String SUCCESSFULLY_OPERATE_WILL_CLEAR_CACHE_TO_THE_DATA_REGIONS_ANYWAY =
"Successfully operate, will clear cache to the data regions anyway";
public static final String SUCCESSFULLY_RESTORED_WILL_SET_MODS_TO_THE_DATA_REGIONS_ANYWAY =
@@ -936,19 +936,19 @@ public final class ProcedureMessages {
public static final String THE_UPDATED_TABLE_HAS_THE_SAME_PROPERTIES_WITH_THE_ORIGINAL =
"The updated table has the same properties with the original one. Skip the procedure.";
public static final String TOPICMETASYNCPROCEDURE_ACQUIRELOCK_SKIP_THE_PROCEDURE_DUE_TO_THE_LAST_EXECUTION =
- "TopicMetaSyncProcedure: acquireLock, skip the procedure due to the last execution time {}";
+ "TopicMetaSyncProcedure:执行 acquireLock,因上次执行时间 {} 跳过该 Procedure";
public static final String TOPICMETASYNCPROCEDURE_EXECUTEFROMOPERATEONCONFIGNODES =
- "TopicMetaSyncProcedure: executeFromOperateOnConfigNodes";
+ "TopicMetaSyncProcedure:执行 executeFromOperateOnConfigNodes";
public static final String TOPICMETASYNCPROCEDURE_EXECUTEFROMOPERATEONDATANODES =
- "TopicMetaSyncProcedure: executeFromOperateOnDataNodes";
+ "TopicMetaSyncProcedure:执行 executeFromOperateOnDataNodes";
public static final String TOPICMETASYNCPROCEDURE_EXECUTEFROMVALIDATE =
- "TopicMetaSyncProcedure: executeFromValidate";
+ "TopicMetaSyncProcedure:执行 executeFromValidate";
public static final String TOPICMETASYNCPROCEDURE_ROLLBACKFROMOPERATEONCONFIGNODES =
- "TopicMetaSyncProcedure: rollbackFromOperateOnConfigNodes";
+ "TopicMetaSyncProcedure:回滚 rollbackFromOperateOnConfigNodes";
public static final String TOPICMETASYNCPROCEDURE_ROLLBACKFROMOPERATEONDATANODES =
- "TopicMetaSyncProcedure: rollbackFromOperateOnDataNodes";
+ "TopicMetaSyncProcedure:回滚 rollbackFromOperateOnDataNodes";
public static final String TOPICMETASYNCPROCEDURE_ROLLBACKFROMVALIDATE =
- "TopicMetaSyncProcedure: rollbackFromValidate";
+ "TopicMetaSyncProcedure:回滚 rollbackFromValidate";
public static final String UNEXPECTED_FAIL_TSSTATUS_IS = "Unexpected fail, tsStatus is ";
public static final String UNEXPECTED_STATE = "意外的状态";
public static final String UNKNOWN_CREATECQSTATE = "Unknown CreateCQState: ";
@@ -959,15 +959,15 @@ public final class ProcedureMessages {
public static final String UNKNOWN_PROCEDURE_TYPE_2 = "Unknown Procedure type: {}";
public static final String UNKNOWN_STATE = "Unknown state: ";
public static final String UNKNOWN_STATE_DURING_EXECUTING_CREATEPIPEPLUGINPROCEDURE =
- "Unknown state during executing createPipePluginProcedure, %s";
+ "执行 createPipePluginProcedure 时遇到未知状态:%s";
public static final String UNKNOWN_STATE_DURING_EXECUTING_OPERATEPIPEPROCEDURE =
- "Unknown state during executing operatePipeProcedure, %s";
+ "执行 operatePipeProcedure 时遇到未知状态:%s";
public static final String UNKNOWN_STATE_DURING_EXECUTING_OPERATESUBSCRIPTIONPROCEDURE =
- "Unknown state during executing operateSubscriptionProcedure, %s";
+ "执行 operateSubscriptionProcedure 时遇到未知状态:%s";
public static final String UNKNOWN_STATE_DURING_EXECUTING_REMOVEAINODEPROCEDURE =
"Unknown state during executing removeAINodeProcedure, %s";
public static final String UNKNOWN_STATE_DURING_ROLLBACK_OPERATESUBSCRIPTIONPROCEDURE =
- "Unknown state during rollback operateSubscriptionProcedure, %s";
+ "回滚 operateSubscriptionProcedure 时遇到未知状态:%s";
public static final String UNKNOWN_STATE_FOR_ROLLBACK = "Unknown state for rollback: ";
public static final String UNRECOGNIZED_ADDTABLECOLUMNSTATE = "Unrecognized AddTableColumnState ";
public static final String UNRECOGNIZED_ALTERTABLECOLUMNDATATYPEPROCEDURE =
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/task/PipeConfigNodeSubtask.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/task/PipeConfigNodeSubtask.java
index fd1a849063062..fa6d61c70fdfb 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/task/PipeConfigNodeSubtask.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/agent/task/PipeConfigNodeSubtask.java
@@ -71,7 +71,7 @@ public PipeConfigNodeSubtask(
final Map sinkAttributes,
final PipeTaskMeta pipeTaskMeta)
throws Exception {
- // We initialize outputPipeConnector by initConnector()
+ // We initialize outputPipeSink by initSink()
super(pipeName + "_" + creationTime, creationTime, null);
this.pipeName = pipeName;
this.pipeTaskMeta = pipeTaskMeta;
@@ -88,14 +88,14 @@ public PipeConfigNodeSubtask(
private void initSource(final Map sourceAttributes) throws Exception {
final PipeParameters sourceParameters = new PipeParameters(sourceAttributes);
- // 1. Construct extractor
+ // 1. Construct source
source = PipeConfigNodeAgent.plugin().reflectSource(sourceParameters);
try {
- // 2. Validate extractor parameters
+ // 2. Validate source parameters
source.validate(new PipeParameterValidator(sourceParameters));
- // 3. Customize extractor
+ // 3. Customize source
final PipeTaskRuntimeConfiguration runtimeConfiguration =
new PipeTaskRuntimeConfiguration(
new PipeTaskSourceRuntimeEnvironment(
@@ -135,14 +135,14 @@ private void initProcessor(final Map processorAttributes) {
private void initSink(final Map sinkAttributes) throws Exception {
final PipeParameters sinkParameters = new PipeParameters(sinkAttributes);
- // 1. Construct connector
+ // 1. Construct sink
outputPipeSink = PipeConfigNodeAgent.plugin().reflectSink(sinkParameters);
try {
- // 2. Validate connector parameters
+ // 2. Validate sink parameters
outputPipeSink.validate(new PipeParameterValidator(sinkParameters));
- // 3. Customize connector
+ // 3. Customize sink
final PipeTaskRuntimeConfiguration runtimeConfiguration =
new PipeTaskRuntimeConfiguration(
new PipeTaskSinkRuntimeEnvironment(pipeName, creationTime, CONFIG_REGION_ID.getId()));
@@ -222,7 +222,7 @@ public void close() {
} catch (final Exception e) {
LOGGER.info(ManagerMessages.ERROR_OCCURRED_DURING_CLOSING_PIPECONNECTOR, e);
} finally {
- // Should be after connector.close()
+ // Should be after sink.close()
super.close();
}
}
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/heartbeat/PipeHeartbeatParser.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/heartbeat/PipeHeartbeatParser.java
index 423353dd1fb9d..d2a4c02bb1c68 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/heartbeat/PipeHeartbeatParser.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/coordinator/runtime/heartbeat/PipeHeartbeatParser.java
@@ -269,7 +269,7 @@ private void parseHeartbeatAndSaveMetaChangeLocally(
runtimeMeta -> !runtimeMeta.getStatus().get().equals(PipeStatus.STOPPED))
.forEach(
runtimeMeta -> {
- // Record the connector exception for each pipe affected
+ // Record the sink exception for each pipe affected
Map exceptionMap =
runtimeMeta.getNodeId2PipeRuntimeExceptionMap();
if (!exceptionMap.containsKey(nodeId)
@@ -285,7 +285,7 @@ private void parseHeartbeatAndSaveMetaChangeLocally(
LOGGER.warn(
String.format(
- "Detect PipeRuntimeConnectorCriticalException %s "
+ "Detect PipeRuntimeSinkCriticalException %s "
+ "from agent, stop pipe %s.",
exception, pipeName));
});
diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/util/PipeExternalSourceLoadBalancer.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/util/PipeExternalSourceLoadBalancer.java
index 66021fc91c9cf..429c5435afaba 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/util/PipeExternalSourceLoadBalancer.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/pipe/util/PipeExternalSourceLoadBalancer.java
@@ -70,7 +70,7 @@ public PipeExternalSourceLoadBalancer(final String balanceStrategy) {
* Balances the given number of parallel tasks across available nodes.
*
* @param parallelCount number of external source tasks to distribute
- * @param pipeStaticMeta metadata about the pipe extractor
+ * @param pipeStaticMeta metadata about the pipe source
* @param configManager reference to ConfigManager for cluster information
* @return a mapping from task index to leader node id
*/
diff --git a/iotdb-core/consensus/src/main/i18n/en/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java b/iotdb-core/consensus/src/main/i18n/en/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java
index 2bf2a80e94aa7..f698b44a3733f 100644
--- a/iotdb-core/consensus/src/main/i18n/en/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java
+++ b/iotdb-core/consensus/src/main/i18n/en/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java
@@ -30,77 +30,77 @@ private IoTConsensusV2Messages() {}
// ===================== IoTConsensusV2 lifecycle =====================
public static final String RECOVER_TASK_CANCELLED =
- "IoTV2 Recover Task is cancelled";
+ "IoTV2 recover task was cancelled";
public static final String RECOVER_FUTURE_EXCEPTION =
"Exception while waiting for recover future completion";
public static final String RECOVER_TASK_INTERRUPTED =
- "IoTV2 Recover Task is interrupted";
+ "IoTV2 recover task was interrupted";
public static final String FAILED_RECOVER_CONSENSUS =
- "Failed to recover consensus from {} for {}, ignore it and continue recover other group, async backend checker thread will automatically deregister related pipe side effects for this failed consensus group.";
+ "Failed to recover consensus group {} from {}; ignoring it and continuing to recover other groups. The async backend checker thread will automatically deregister related pipe side effects for this failed consensus group.";
public static final String FAILED_RECOVER_CONSENSUS_READ_DIR =
- "Failed to recover consensus from {} because read dir failed";
+ "Failed to recover consensus from {} because reading the directory failed";
public static final String FAILED_RECOVER_CONSENSUS_SHORT =
"Failed to recover consensus from {}";
// ===================== IoTConsensusV2 peer operations =====================
public static final String START_DELETE_LOCAL_PEER =
- "[{}] start to delete local peer for group {}";
+ "[{}] start deleting local peer for group {}";
public static final String FINISH_DELETE_LOCAL_PEER =
- "[{}] finish deleting local peer for group {}";
+ "[{}] finished deleting local peer for group {}";
public static final String INACTIVATE_NEW_PEER =
- "[{}] inactivate new peer: {}";
+ "[{}] deactivate new peer: {}";
public static final String NOTIFY_CREATE_CONSENSUS_PIPES =
"[{}] notify current peers to create consensus pipes...";
public static final String WAIT_PEERS_FINISH_TRANSFER =
- "[{}] wait until all the other peers finish transferring...";
+ "[{}] wait until all other peers finish transferring...";
public static final String ACTIVATE_NEW_PEER =
"[{}] activate new peer...";
public static final String ADD_REMOTE_PEER_FAILED_CLEANUP =
- "[{}] add remote peer failed, automatic cleanup side effects...";
+ "[{}] failed to add remote peer, automatically cleaning up side effects...";
public static final String FAILED_CLEANUP_SIDE_EFFECTS =
- "[{}] failed to cleanup side effects after failed to add remote peer";
+ "[{}] failed to clean up side effects after failing to add remote peer";
public static final String NOTIFY_DROP_CONSENSUS_PIPES =
"[{}] notify other peers to drop consensus pipes...";
public static final String INACTIVATE_PEER =
- "[{}] inactivate peer {}";
+ "[{}] deactivate peer {}";
public static final String WAIT_TARGET_PEER_COMPLETE_TRANSFER =
- "[{}] wait target peer{} complete transfer...";
+ "[{}] wait for target peer {} to complete transfer...";
public static final String WAIT_PEER_RELEASE_RESOURCE =
- "[{}] wait {} to release all resource...";
+ "[{}] wait for {} to release all resources...";
public static final String NOT_SUPPORT_LEADER_TRANSFER =
"%s does not support leader transfer";
// ===================== IoTConsensusV2ServerImpl =====================
public static final String ERROR_SET_PEER_ACTIVE =
- "error when set peer %s to active %s. result status: %s";
+ "error when setting peer %s active status to %s. result status: %s";
public static final String ERROR_SET_PEER_ACTIVE_SHORT =
- "error when set peer %s to active %s";
+ "error when setting peer %s active status to %s";
public static final String TARGET_PEER_MAY_BE_DOWN =
- "target peer may be down, error when set peer {} to active {}";
+ "target peer may be down; error when setting peer {} active status to {}";
public static final String CANNOT_NOTIFY_PEER_CREATE_PIPE =
- "{} cannot notify peer {} to create consensus pipe, may because that peer is unknown currently, please manually check!";
+ "{} cannot notify peer {} to create consensus pipe, possibly because that peer is currently unknown. Please check it manually.";
public static final String CANNOT_CREATE_CONSENSUS_PIPE =
- "{} cannot create consensus pipe to {}, may because target peer is unknown currently, please manually check!";
+ "{} cannot create consensus pipe to {}, possibly because the target peer is currently unknown. Please check it manually.";
public static final String ERROR_NOTIFY_PEER_CREATE_PIPE =
- "error when notify peer %s to create consensus pipe";
+ "error when notifying peer %s to create consensus pipe";
public static final String CANNOT_NOTIFY_PEER_DROP_PIPE =
- "{} cannot notify peer {} to drop consensus pipe, may because that peer is unknown currently, please manually check!";
+ "{} cannot notify peer {} to drop consensus pipe, possibly because that peer is currently unknown. Please check it manually.";
public static final String CANNOT_DROP_CONSENSUS_PIPE =
- "{} cannot drop consensus pipe to {}, may because target peer is unknown currently, please manually check!";
+ "{} cannot drop consensus pipe to {}, possibly because the target peer is currently unknown. Please check it manually.";
public static final String ERROR_NOTIFY_PEER_DROP_PIPE =
- "error when notify peer %s to drop consensus pipe";
+ "error when notifying peer %s to drop consensus pipe";
public static final String INTERRUPTED_WAITING_TRANSFER =
- "{} is interrupted when waiting for transfer completed";
+ "{} was interrupted while waiting for transfer completion";
public static final String INTERRUPTED_WAITING_TRANSFER_FMT =
- "%s is interrupted when waiting for transfer completed";
+ "%s was interrupted while waiting for transfer completion";
public static final String CANNOT_CHECK_PIPE_TRANSMISSION =
- "{} cannot check consensus pipes transmission completed to peer {}";
+ "{} cannot check whether consensus pipe transmission to peer {} has completed";
public static final String ERROR_CHECK_PIPE_TRANSMISSION =
- "error when check consensus pipes transmission completed to peer %s";
+ "error when checking whether consensus pipe transmission to peer %s has completed";
public static final String CANNOT_CHECK_PIPE_TRANSMISSION_SHORT =
- "{} cannot check consensus pipes transmission completed";
+ "{} cannot check whether consensus pipe transmission has completed";
// ===================== IoTConsensusV2RPCServiceProcessor =====================
@@ -119,5 +119,5 @@ private IoTConsensusV2Messages() {}
public static final String FAILED_DROP_CONSENSUS_PIPE =
"Failed to drop consensus pipe to target peer with req {}";
public static final String FAILED_CHECK_CONSENSUS_PIPE =
- "Failed to check consensus pipe completed with req {}, set is completed to {}";
+ "Failed to check whether consensus pipe has completed with req {}; set isCompleted to {}";
}
diff --git a/iotdb-core/consensus/src/main/i18n/zh/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java b/iotdb-core/consensus/src/main/i18n/zh/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java
index c3d705f861bc6..e6cee66e18b36 100644
--- a/iotdb-core/consensus/src/main/i18n/zh/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java
+++ b/iotdb-core/consensus/src/main/i18n/zh/org/apache/iotdb/consensus/i18n/IoTConsensusV2Messages.java
@@ -20,7 +20,7 @@
package org.apache.iotdb.consensus.i18n;
/**
- * IoTConsensusV2(基于 pipe 的共识)特有消息。日志消息使用 SLF4J {@code {}} 占位符;异常消息使用 {@code %s}(String.format)或纯字符串。
+ * IoTConsensusV2(基于 pipe 的共识)特有消息。日志消息使用 SLF4J {@code {}} 占位符;异常消息使用 {@code %s}(String.format)或普通字符串。
*/
public final class IoTConsensusV2Messages {
@@ -31,92 +31,92 @@ private IoTConsensusV2Messages() {}
public static final String RECOVER_TASK_CANCELLED =
"IoTV2 恢复任务已取消";
public static final String RECOVER_FUTURE_EXCEPTION =
- "等待恢复 future 完成时发生异常";
+ "等待恢复 Future 完成时发生异常";
public static final String RECOVER_TASK_INTERRUPTED =
"IoTV2 恢复任务被中断";
public static final String FAILED_RECOVER_CONSENSUS =
- "从 {} 恢复共识组 {} 失败,忽略并继续恢复其他组,异步后台检查线程将自动注销该失败共识组的 pipe 副作用。";
+ "从 {} 恢复共识组 {} 失败,将忽略该组并继续恢复其他共识组;异步后台检查线程会自动清理该失败共识组相关的 pipe 副作用。";
public static final String FAILED_RECOVER_CONSENSUS_READ_DIR =
- "从 {} 恢复共识失败,因为读取目录失败";
+ "从 {} 恢复共识失败,原因:读取目录失败";
public static final String FAILED_RECOVER_CONSENSUS_SHORT =
"从 {} 恢复共识失败";
- // ===================== IoTConsensusV2 peer 操作 =====================
+ // ===================== IoTConsensusV2 节点操作 =====================
public static final String START_DELETE_LOCAL_PEER =
- "[{}] 开始删除共识组 {} 的本地 peer";
+ "[{}] 开始删除共识组 {} 的本地节点";
public static final String FINISH_DELETE_LOCAL_PEER =
- "[{}] 完成删除共识组 {} 的本地 peer";
+ "[{}] 完成删除共识组 {} 的本地节点";
public static final String INACTIVATE_NEW_PEER =
- "[{}] 将新 peer 设为非活跃:{}";
+ "[{}] 停用新节点:{}";
public static final String NOTIFY_CREATE_CONSENSUS_PIPES =
- "[{}] 通知当前 peer 创建 consensus pipe...";
+ "[{}] 通知当前节点创建共识管道...";
public static final String WAIT_PEERS_FINISH_TRANSFER =
- "[{}] 等待所有其他 peer 完成传输...";
+ "[{}] 等待其他节点完成传输...";
public static final String ACTIVATE_NEW_PEER =
- "[{}] 激活新 peer...";
+ "[{}] 激活新节点...";
public static final String ADD_REMOTE_PEER_FAILED_CLEANUP =
- "[{}] 添加远程 peer 失败,正在自动清理副作用...";
+ "[{}] 添加远程节点失败,正在自动清理副作用...";
public static final String FAILED_CLEANUP_SIDE_EFFECTS =
- "[{}] 添加远程 peer 失败后清理副作用失败";
+ "[{}] 添加远程节点失败后清理副作用失败";
public static final String NOTIFY_DROP_CONSENSUS_PIPES =
- "[{}] 通知其他 peer 删除 consensus pipe...";
+ "[{}] 通知其他节点删除共识管道...";
public static final String INACTIVATE_PEER =
- "[{}] 将 peer {} 设为非活跃";
+ "[{}] 停用节点 {}";
public static final String WAIT_TARGET_PEER_COMPLETE_TRANSFER =
- "[{}] 等待目标 peer{} 完成传输...";
+ "[{}] 等待目标节点 {} 完成传输...";
public static final String WAIT_PEER_RELEASE_RESOURCE =
"[{}] 等待 {} 释放所有资源...";
public static final String NOT_SUPPORT_LEADER_TRANSFER =
- "%s 不支持 leader 切换";
+ "%s 不支持主节点切换";
// ===================== IoTConsensusV2ServerImpl =====================
public static final String ERROR_SET_PEER_ACTIVE =
- "将 peer %s 设置为活跃状态 %s 时出错。结果状态:%s";
+ "设置节点 %s 的活跃状态为 %s 时出错。结果状态:%s";
public static final String ERROR_SET_PEER_ACTIVE_SHORT =
- "将 peer %s 设置为活跃状态 %s 时出错";
+ "设置节点 %s 的活跃状态为 %s 时出错";
public static final String TARGET_PEER_MAY_BE_DOWN =
- "目标 peer 可能已下线,将 peer {} 设置为活跃状态 {} 时出错";
+ "目标节点可能已下线,设置节点 {} 的活跃状态为 {} 时出错";
public static final String CANNOT_NOTIFY_PEER_CREATE_PIPE =
- "{} 无法通知 peer {} 创建 consensus pipe,该 peer 可能当前未知,请手动检查!";
+ "{} 无法通知节点 {} 创建共识管道,该节点当前可能未知,请手动检查。";
public static final String CANNOT_CREATE_CONSENSUS_PIPE =
- "{} 无法创建到 {} 的 consensus pipe,目标 peer 可能当前未知,请手动检查!";
+ "{} 无法创建到 {} 的共识管道,目标节点当前可能未知,请手动检查。";
public static final String ERROR_NOTIFY_PEER_CREATE_PIPE =
- "通知 peer %s 创建 consensus pipe 时出错";
+ "通知节点 %s 创建共识管道时出错";
public static final String CANNOT_NOTIFY_PEER_DROP_PIPE =
- "{} 无法通知 peer {} 删除 consensus pipe,该 peer 可能当前未知,请手动检查!";
+ "{} 无法通知节点 {} 删除共识管道,该节点当前可能未知,请手动检查。";
public static final String CANNOT_DROP_CONSENSUS_PIPE =
- "{} 无法删除到 {} 的 consensus pipe,目标 peer 可能当前未知,请手动检查!";
+ "{} 无法删除到 {} 的共识管道,目标节点当前可能未知,请手动检查。";
public static final String ERROR_NOTIFY_PEER_DROP_PIPE =
- "通知 peer %s 删除 consensus pipe 时出错";
+ "通知节点 %s 删除共识管道时出错";
public static final String INTERRUPTED_WAITING_TRANSFER =
"{} 等待传输完成时被中断";
public static final String INTERRUPTED_WAITING_TRANSFER_FMT =
"%s 等待传输完成时被中断";
public static final String CANNOT_CHECK_PIPE_TRANSMISSION =
- "{} 无法检查到 peer {} 的 consensus pipe 传输完成状态";
+ "{} 无法检查到节点 {} 的共识管道是否传输完成";
public static final String ERROR_CHECK_PIPE_TRANSMISSION =
- "检查到 peer %s 的 consensus pipe 传输完成状态时出错";
+ "检查到节点 %s 的共识管道是否传输完成时出错";
public static final String CANNOT_CHECK_PIPE_TRANSMISSION_SHORT =
- "{} 无法检查 consensus pipe 传输完成状态";
+ "{} 无法检查共识管道是否传输完成";
// ===================== IoTConsensusV2RPCServiceProcessor =====================
public static final String UNEXPECTED_GROUP_SET_ACTIVE =
- "共识组 ID %s 与设置活跃请求 %s 不匹配";
+ "共识组 ID %s 与设置活跃状态请求 %s 不匹配";
public static final String UNEXPECTED_GROUP_CREATE_PIPE =
- "共识组 ID %s 与创建 consensus pipe 请求 %s 不匹配";
+ "共识组 ID %s 与创建共识管道请求 %s 不匹配";
public static final String UNEXPECTED_GROUP_DROP_PIPE =
- "共识组 ID %s 与删除 consensus pipe 请求 %s 不匹配";
+ "共识组 ID %s 与删除共识管道请求 %s 不匹配";
public static final String UNEXPECTED_GROUP_CHECK_TRANSFER =
"共识组 ID %s 与检查传输完成请求 %s 不匹配";
public static final String UNEXPECTED_GROUP_WAIT_RELEASE =
"共识组 ID %s 与 TWaitReleaseAllRegionRelatedResourceRes 请求不匹配";
public static final String FAILED_CREATE_CONSENSUS_PIPE =
- "创建到目标 peer 的 consensus pipe 失败,请求 {}";
+ "创建到目标节点的共识管道失败,请求:{}";
public static final String FAILED_DROP_CONSENSUS_PIPE =
- "删除到目标 peer 的 consensus pipe 失败,请求 {}";
+ "删除到目标节点的共识管道失败,请求:{}";
public static final String FAILED_CHECK_CONSENSUS_PIPE =
- "检查 consensus pipe 完成状态失败,请求 {},将完成状态设为 {}";
+ "检查共识管道传输完成状态失败,请求:{},将完成状态设为 {}";
}
diff --git a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2.java b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2.java
index 806f499116d5a..d6ab4b0108617 100644
--- a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2.java
+++ b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2.java
@@ -146,7 +146,7 @@ private Future initAndRecover() throws IOException {
}
return CompletableFuture.completedFuture(null);
} else {
- // asynchronously recover, retry logic is implemented at IoTConsensusV2Impl
+ // Recover asynchronously; retry logic is handled by the async backend checker.
return CompletableFuture.runAsync(
() -> {
try (DirectoryStream stream = Files.newDirectoryStream(storageDir.toPath())) {
@@ -166,8 +166,8 @@ private Future initAndRecover() throws IOException {
} catch (Exception e) {
LOGGER.error(
IoTConsensusV2Messages.FAILED_RECOVER_CONSENSUS,
- storageDir,
consensusGroupId,
+ storageDir,
e);
}
}
@@ -199,12 +199,12 @@ private void checkPeerListAndStartIfEligible(
if (correctPeerListBeforeStart != null) {
if (correctPeerListBeforeStart.containsKey(consensusGroupId)) {
- // make peers which are in list correct
+ // Correct peers listed in correctPeerListBeforeStart.
resetPeerListWithoutThrow.accept(
consensusGroupId, correctPeerListBeforeStart.get(consensusGroupId));
consensus.start();
} else {
- // clear peers which are not in the list
+ // Clear peers that are not listed in correctPeerListBeforeStart.
resetPeerListWithoutThrow.accept(consensusGroupId, Collections.emptyList());
}
@@ -344,21 +344,21 @@ public void addRemotePeer(ConsensusGroupId groupId, Peer peer) throws ConsensusE
throw new PeerAlreadyInConsensusGroupException(groupId, peer);
}
try {
- // step 1: inactive new Peer to prepare for following steps
+ // Step 1: deactivate the new peer to prepare for the following steps.
LOGGER.info(IoTConsensusV2Messages.INACTIVATE_NEW_PEER, CLASS_NAME, peer);
impl.setRemotePeerActive(peer, false, false);
- // step 2: notify all the other Peers to create consensus pipes to newPeer
- // NOTE: For this step, all the other peers will try to transfer its user write data to target
+ // Step 2: notify all other peers to create consensus pipes to the new peer.
+ // Each peer will transfer its user-written data to the target peer.
LOGGER.info(IoTConsensusV2Messages.NOTIFY_CREATE_CONSENSUS_PIPES, CLASS_NAME);
impl.notifyPeersToCreateConsensusPipes(peer);
KillPoint.setKillPoint(DataNodeKillPoints.COORDINATOR_ADD_PEER_TRANSITION);
- // step 3: wait until all other Peers finish transferring
+ // Step 3: wait until all other peers finish transferring.
LOGGER.info(IoTConsensusV2Messages.WAIT_PEERS_FINISH_TRANSFER, CLASS_NAME);
impl.waitPeersToTargetPeerTransmissionCompleted(peer);
- // step 4: active new Peer to let new Peer receive client requests
+ // Step 4: activate the new peer so it can receive client requests.
LOGGER.info(IoTConsensusV2Messages.ACTIVATE_NEW_PEER, CLASS_NAME);
impl.setRemotePeerActive(peer, true, false);
KillPoint.setKillPoint(DataNodeKillPoints.COORDINATOR_ADD_PEER_DONE);
@@ -387,23 +387,23 @@ public void removeRemotePeer(ConsensusGroupId groupId, Peer peer) throws Consens
KillPoint.setKillPoint(IoTConsensusRemovePeerCoordinatorKillPoints.INIT);
try {
- // let other peers to drop consensus pipes to target
+ // Let other peers drop consensus pipes to the target.
LOGGER.info(IoTConsensusV2Messages.NOTIFY_DROP_CONSENSUS_PIPES, CLASS_NAME);
impl.notifyPeersToDropConsensusPipe(peer);
KillPoint.setKillPoint(
IoTConsensusRemovePeerCoordinatorKillPoints
.AFTER_NOTIFY_PEERS_TO_REMOVE_REPLICATE_CHANNEL);
- // let target peer reject new write
+ // Let the target peer reject new writes.
LOGGER.info(IoTConsensusV2Messages.INACTIVATE_PEER, CLASS_NAME, peer);
impl.setRemotePeerActive(peer, false, true);
KillPoint.setKillPoint(IoTConsensusRemovePeerCoordinatorKillPoints.AFTER_INACTIVE_PEER);
- // wait its consensus pipes to complete
+ // Wait for its consensus pipes to complete.
LOGGER.info(IoTConsensusV2Messages.WAIT_TARGET_PEER_COMPLETE_TRANSFER, CLASS_NAME, peer);
impl.waitTargetPeerToPeersTransmissionCompleted(peer);
- // wait target peer to release all resource
+ // Wait for the target peer to release all resources.
LOGGER.info(IoTConsensusV2Messages.WAIT_PEER_RELEASE_RESOURCE, CLASS_NAME, peer);
impl.waitReleaseAllRegionRelatedResource(peer);
} catch (ConsensusGroupModifyPeerException e) {
diff --git a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2ServerImpl.java b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2ServerImpl.java
index 415326cbf5248..af7ab02adbdd6 100644
--- a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2ServerImpl.java
+++ b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/pipe/IoTConsensusV2ServerImpl.java
@@ -139,7 +139,7 @@ public TSStatus write(IConsensusRequest request) {
try {
long consensusWriteStartTime = System.nanoTime();
long getStateMachineLockTime = System.nanoTime();
- // statistic the time of acquiring stateMachine lock
+ // Record the time spent acquiring the stateMachine lock.
iotConsensusV2ServerMetrics.recordGetStateMachineLockTime(
getStateMachineLockTime - consensusWriteStartTime);
long writeToStateMachineStartTime = System.nanoTime();
@@ -151,7 +151,7 @@ public TSStatus write(IConsensusRequest request) {
long writeToStateMachineEndTime = System.nanoTime();
PERFORMANCE_OVERVIEW_METRICS.recordEngineCost(
writeToStateMachineEndTime - writeToStateMachineStartTime);
- // statistic the time of writing request into stateMachine
+ // Record the time spent writing the request into the stateMachine.
iotConsensusV2ServerMetrics.recordUserWriteStateMachineTime(
writeToStateMachineEndTime - writeToStateMachineStartTime);
return result;
@@ -165,7 +165,7 @@ public TSStatus writeOnFollowerReplica(IConsensusRequest request) {
try {
long consensusWriteStartTime = System.nanoTime();
long getStateMachineLockTime = System.nanoTime();
- // statistic the time of acquiring stateMachine lock
+ // Record the time spent acquiring the stateMachine lock.
iotConsensusV2ServerMetrics.recordGetStateMachineLockTime(
getStateMachineLockTime - consensusWriteStartTime);
@@ -175,7 +175,7 @@ public TSStatus writeOnFollowerReplica(IConsensusRequest request) {
PERFORMANCE_OVERVIEW_METRICS.recordEngineCost(
writeToStateMachineEndTime - writeToStateMachineStartTime);
- // statistic the time of writing request into stateMachine
+ // Record the time spent writing the request into the stateMachine.
iotConsensusV2ServerMetrics.recordReplicaWriteStateMachineTime(
writeToStateMachineEndTime - writeToStateMachineStartTime);
return result;
@@ -210,11 +210,10 @@ public void setRemotePeerActive(Peer peer, boolean isActive, boolean isForDeleti
}
} catch (ClientManagerException e) {
if (isForDeletionPurpose) {
- // for remove peer, if target peer is already down, we can skip this step.
+ // For removePeer, skip this step if the target peer is already down.
LOGGER.warn(IoTConsensusV2Messages.TARGET_PEER_MAY_BE_DOWN, peer, isActive, e);
} else {
- // for add peer, if target peer is down, we need to throw exception to identify the failure
- // of this addPeerProcedure.
+ // For addPeer, fail the procedure if the target peer is down.
throw new ConsensusGroupModifyPeerException(e);
}
}
@@ -245,7 +244,7 @@ public void notifyPeersToCreateConsensusPipes(Peer targetPeer)
}
try {
- // This node which acts as coordinator will transfer complete historical snapshot to new
+ // This node acts as the coordinator and transfers the complete historical snapshot to the new
// target.
createConsensusPipeToTargetPeer(targetPeer);
} catch (Exception e) {
@@ -299,7 +298,7 @@ public synchronized void dropConsensusPipeToTargetPeer(Peer targetPeer)
peerManager.removePeer(targetPeer);
}
- /** Wait for the user written data up to firstCheck to be replicated */
+ /** Wait for user-written data up to the first check to be replicated. */
public void waitPeersToTargetPeerTransmissionCompleted(Peer targetPeer)
throws ConsensusGroupModifyPeerException {
boolean isTransmissionCompleted = false;
@@ -337,7 +336,7 @@ public void waitPeersToTargetPeerTransmissionCompleted(Peer targetPeer)
}
}
- /** Wait for the user written data up to firstCheck to be replicated */
+ /** Wait for user-written data up to the first check to be replicated. */
public void waitTargetPeerToPeersTransmissionCompleted(Peer targetPeer)
throws ConsensusGroupModifyPeerException {
boolean isTransmissionCompleted = false;
@@ -435,7 +434,7 @@ public void waitReleaseAllRegionRelatedResource(Peer targetPeer)
Thread.sleep(checkIntervalInMs);
}
} catch (ClientManagerException | TException e) {
- // in case of target peer is down or can not serve, we simply skip it.
+ // Skip this step if the target peer is down or cannot serve requests.
LOGGER.warn(
String.format(
ConsensusMessages.ERROR_WAITING_RELEASE_RESOURCE, targetPeer, e.getMessage()),
diff --git a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java
index 8463483df79f4..8f7592a712f62 100644
--- a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java
+++ b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java
@@ -684,29 +684,29 @@ private DataNodeMiscMessages() {}
public static final String SUBSCRIPTION_UNKNOWN_REQUEST_TYPE =
"Subscription: Unknown PipeSubscribeRequestType, response status = {}.";
public static final String SUBSCRIPTION_CONSUMER_HEARTBEAT_SUCCESS =
- "Subscription: consumer {} heartbeat successfully";
+ "Subscription: consumer {} heartbeat succeeded";
public static final String SUBSCRIPTION_CONSUMER_SUBSCRIBE_SUCCESS =
- "Subscription: consumer {} subscribe {} successfully";
+ "Subscription: consumer {} subscribed to {} successfully";
public static final String SUBSCRIPTION_CONSUMER_CLOSE_SUCCESS =
- "Subscription: consumer {} close successfully";
+ "Subscription: consumer {} closed successfully";
public static final String SUBSCRIPTION_EXCEPTION_HANDSHAKING =
- "Exception occurred when handshaking with request {}";
+ "Exception occurred while handling handshake request {}";
public static final String SUBSCRIPTION_EXCEPTION_HEARTBEAT =
- "Exception occurred when heartbeat with request {}";
+ "Exception occurred while handling heartbeat request {}";
public static final String SUBSCRIPTION_EXCEPTION_SUBSCRIBING =
- "Exception occurred when subscribing with request {}";
+ "Exception occurred while handling subscribe request {}";
public static final String SUBSCRIPTION_EXCEPTION_UNSUBSCRIBING =
- "Exception occurred when unsubscribing with request {}";
+ "Exception occurred while handling unsubscribe request {}";
public static final String SUBSCRIPTION_EXCEPTION_POLLING =
- "Exception occurred when polling with request {}";
+ "Exception occurred while handling poll request {}";
public static final String SUBSCRIPTION_EXCEPTION_COMMITTING =
- "Exception occurred when committing with request {}";
+ "Exception occurred while handling commit request {}";
public static final String SUBSCRIPTION_EXCEPTION_CLOSING =
- "Exception occurred when closing with request {}";
+ "Exception occurred while handling close request {}";
public static final String SUBSCRIPTION_EXCEPTION_CREATING_CONSUMER =
- "Exception occurred when creating consumer {} in config node";
+ "Exception occurred while creating consumer {} in ConfigNode";
public static final String SUBSCRIPTION_EXCEPTION_CLOSING_CONSUMER =
- "Exception occurred when closing consumer {} in config node";
+ "Exception occurred while closing consumer {} in ConfigNode";
// ---------------------------------------------------------------------------
// subscription – SubscriptionBrokerAgent
@@ -720,13 +720,13 @@ private DataNodeMiscMessages() {}
// subscription – SubscriptionConsumerAgent
// ---------------------------------------------------------------------------
public static final String EXCEPTION_DROPPING_CONSUMER_GROUP =
- "Exception occurred when dropping consumer group {}";
+ "Exception occurred while dropping consumer group {}";
// ---------------------------------------------------------------------------
// subscription – SubscriptionTopicAgent
// ---------------------------------------------------------------------------
public static final String EXCEPTION_DROPPING_TOPIC =
- "Exception occurred when dropping topic {}";
+ "Exception occurred while dropping topic {}";
// ---------------------------------------------------------------------------
// subscription – SubscriptionEvent
@@ -750,17 +750,17 @@ private DataNodeMiscMessages() {}
// subscription – SubscriptionPipeEventBatches
// ---------------------------------------------------------------------------
public static final String EXCEPTION_SEALING_EVENTS =
- "Exception occurred when sealing events from batch {}";
+ "Exception occurred while sealing events from batch {}";
public static final String EXCEPTION_CONSTRUCT_NEW_BATCH =
- "Exception occurred when construct new batch";
+ "Exception occurred while constructing a new batch";
// ---------------------------------------------------------------------------
// subscription – SubscriptionPrefetchingQueue
// ---------------------------------------------------------------------------
public static final String EXCEPTION_EXECUTE_RECEIVER_SUBTASK =
- "Exception {} occurred when {} execute receiver subtask";
+ "Exception {} occurred while {} was executing receiver subtask";
public static final String EXCEPTION_CONSTRUCT_TABLET_ITERATOR =
- "Exception {} occurred when {} construct ToTabletIterator";
+ "Exception {} occurred while {} was constructing ToTabletIterator";
// ---------------------------------------------------------------------------
// consensus – BaseStateMachine
@@ -905,8 +905,9 @@ private DataNodeMiscMessages() {}
public static final String EXPECTING_NON_EMPTY_STRING_FOR = "Expecting a non-empty string for ";
public static final String FAILED_TO_CONSTRUCT_PIPE_SINK = "Failed to construct PipeSink, because of ";
public static final String FAILED_TO_GET_UDF_JAR = "Failed to get UDF jar from config node.";
- public static final String FAILED_TO_GET_CONSUMER_GROUP_META = "Failed to get consumer group meta from config node.";
- public static final String FAILED_TO_GET_TOPIC_META = "Failed to get topic meta from config node.";
+ public static final String FAILED_TO_GET_CONSUMER_GROUP_META =
+ "Failed to get consumer group meta from ConfigNode.";
+ public static final String FAILED_TO_GET_TOPIC_META = "Failed to get topic meta from ConfigNode.";
public static final String FAILED_TO_GET_TRIGGER_JAR = "Failed to get trigger jar from config node.";
public static final String FETCH_SCHEMA_FAILED = "Fetch Schema failed. ";
public static final String INDEX_BELOW_START_POSITION = "Index below startPosition: ";
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 43ccba45cae19..cef65a64e3e72 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
@@ -25,67 +25,67 @@ public final class DataNodePipeMessages {
public static final String CLOSING_DELETION_RESOURCE_MANAGER_FOR =
"Closing deletion resource manager for {}...";
- public static final String DAL_THREAD_STILL_DOESN_T_EXIT_AFTER =
- "DAL Thread {} still doesn't exit after 30s";
public static final String DELETIONMANAGER_CURRENT_DAL_DIR_IS_DELETED_SUCCESSFULLY =
"DeletionManager-{}: current DAL dir {} is deleted successfully";
public static final String DELETIONMANAGER_CURRENT_DAL_DIR_IS_NOT_INITIALIZED =
"DeletionManager-{}: current DAL dir {} is not initialized, no need to delete.";
public static final String DELETIONMANAGER_CURRENT_WAITING_IS_INTERRUPTED_MAY_BECAUSE =
- "DeletionManager-{}: current waiting is interrupted. May because current application is "
- + "down. ";
+ "DeletionManager-{}: waiting was interrupted, possibly because the application is "
+ + "shutting down.";
public static final String DELETIONMANAGER_DELETE_DELETION_FILE_IN_DIR =
- "DeletionManager-{} delete deletion file in {} dir...";
+ "DeletionManager-{}: deleted deletion file {}.";
public static final String DELETIONMANAGER_FAILED_TO_DELETE_FILE_IN_DIR =
- "DeletionManager-{} failed to delete file in {} dir, please manually check!";
+ "DeletionManager-{}: failed to delete files under {}, please check manually!";
public static final String DELETIONRESOURCE_HAS_BEEN_RELEASED_TRIGGER_A_REMOVE =
- "DeletionResource {} has been released, trigger a remove of DAL...";
+ "DeletionResource {} has been released; triggering DAL cleanup.";
public static final String DELETION_PERSIST_CANNOT_CREATE_FILE_PLEASE_CHECK =
- "Deletion persist: Cannot create file {}, please check your file system manually.";
+ "Deletion persist: failed to create file {}; please check the file system manually.";
public static final String DELETION_PERSIST_CANNOT_WRITE_TO_MAY_CAUSE =
- "Deletion persist: Cannot write to {}, may cause data inconsistency.";
+ "Deletion persist: failed to write to {}; data may become inconsistent.";
public static final String DELETION_PERSIST_CURRENT_BATCH_FSYNC_DUE_TO =
- "Deletion persist-{}: current batch fsync due to timeout";
+ "Deletion persist-{}: fsync current batch due to timeout";
public static final String DELETION_PERSIST_CURRENT_FILE_HAS_BEEN_CLOSED =
"Deletion persist-{}: current file has been closed";
public static final String DELETION_PERSIST_SERIALIZE_DELETION_RESOURCE =
- "Deletion persist-{}: serialize deletion resource {}";
+ "Deletion persist-{}: serializing deletion resource {}";
public static final String DELETION_PERSIST_STARTING_TO_PERSIST_CURRENT_WRITING =
- "Deletion persist-{}: starting to persist, current writing: {}";
+ "Deletion persist-{}: starting to persist, current file: {}";
public static final String DELETION_PERSIST_SWITCHING_TO_A_NEW_FILE =
- "Deletion persist-{}: switching to a new file, current writing: {}";
+ "Deletion persist-{}: switched to a new file, current file: {}";
public static final String DELETION_RESOURCE_MANAGER_FOR_HAS_BEEN_SUCCESSFULLY =
"Deletion resource manager for {} has been successfully closed!";
public static final String DETECT_FILE_CORRUPTED_WHEN_RECOVER_DAL_DISCARD =
- "Detect file corrupted when recover DAL-{}, discard all subsequent DALs...";
+ "Detected a corrupted file while recovering DAL-{}; discarding all subsequent DALs.";
public static final String FAILED_TO_INITIALIZE_DELETIONRESOURCEMANAGER =
"Failed to initialize DeletionResourceManager";
public static final String FAILED_TO_READ_DELETION_FILE_MAY_BECAUSE =
- "Failed to read deletion file {}, may because this file corrupted when writing it.";
+ "Failed to read deletion file {}; it may have been corrupted while being written.";
public static final String FAILED_TO_RECOVER_DELETIONRESOURCEMANAGER =
"Failed to recover DeletionResourceManager";
public static final String FAIL_TO_ALLOCATE_DELETIONBUFFER_GROUP_S_BUFFER =
- "Fail to allocate deletionBuffer-group-{}'s buffer because out of memory.";
+ "Failed to allocate deletionBuffer-group-{}'s buffer because memory is insufficient.";
public static final String FAIL_TO_CLOSE_CURRENT_LOGGING_FILE_WHEN =
- "Fail to close current logging file when closing";
+ "Failed to close current logging file while closing";
public static final String FAIL_TO_REGISTER_DELETIONRESOURCE_INTO_DELETIONBUFFER_BECAUSE =
- "Fail to register DeletionResource into deletionBuffer-{} because this buffer is closed.";
+ "Failed to register DeletionResource into deletionBuffer-{} because the buffer is closed.";
public static final String INTERRUPTED_WHEN_WAITING_FOR_ALL_DELETIONS_FLUSHED =
- "Interrupted when waiting for all deletions flushed.";
+ "Interrupted while waiting for all deletions to be flushed.";
+ public static final String INTERRUPTED_WHILE_WAITING_FOR_DAL_THREAD_TO_EXIT =
+ "Interrupted while waiting for the DAL thread of dataRegion {} to exit.";
public static final String INTERRUPTED_WHEN_WAITING_FOR_RESULT =
- "Interrupted when waiting for result.";
+ "Interrupted while waiting for result.";
public static final String INTERRUPTED_WHEN_WAITING_FOR_TAKING_DELETIONRESOURCE_FROM =
- "Interrupted when waiting for taking DeletionResource from blocking queue to serialize.";
- public static final String INTERRUPTED_WHEN_WAITING_FOR_TAKING_WALENTRY_FROM =
- "Interrupted when waiting for taking WALEntry from blocking queue to serialize.";
+ "Interrupted while taking a DeletionResource from the blocking queue for serialization.";
+ public static final String INTERRUPTED_WHEN_WAITING_FOR_POLLING_DELETIONRESOURCE_FROM =
+ "Interrupted while polling a DeletionResource from the blocking queue for serialization.";
public static final String INVALID_DELETION_PROGRESS_INDEX = "Invalid deletion progress index: ";
public static final String PERSISTTHREAD_DID_NOT_TERMINATE_WITHIN_S =
- "persistThread did not terminate within {}s";
+ "Persist thread did not terminate within {}s";
public static final String READ_DELETION_FILE_MAGIC_VERSION =
- "Read deletion file-{} magic version: {}";
+ "Read deletion file {} magic version: {}";
public static final String READ_DELETION_FROM_FILE = "Read deletion: {} from file {}";
public static final String UNABLE_TO_CREATE_IOTCONSENSUSV2_DELETION_DIR_AT =
- "Unable to create iotConsensusV2 deletion dir at {}";
+ "Unable to create IoTConsensusV2 deletion directory at {}";
// ===================== AGENT =====================
@@ -115,7 +115,8 @@ public final class DataNodePipeMessages {
public static final String EXCEPTION_OCCURS_WHEN_EXECUTING_PIPE_TASK =
"Exception occurs when executing pipe task: ";
public static final String FAILED_TO_CHECK_IF_PIPE_HAS_RELEASE =
- "Failed to check if pipe has release region related resource with consensus group id: {}.";
+ "Failed to check whether pipe has released region-related resources for consensus group "
+ + "id: {}.";
public static final String FAILED_TO_CLEAR_CLOSE_THE_SCHEMA_REGION =
"Failed to clear/close the schema region listening queue, because {}. Will wait until "
+ "success or the region's state machine is stopped.";
@@ -141,7 +142,7 @@ public final class DataNodePipeMessages {
public static final String FAILED_TO_PERSIST_PROGRESS_INDEX_TO_CONFIGNODE =
"Failed to persist progress index to configNode, status: {}";
public static final String FAILURE_WHEN_REGISTER_PIPE_PLUGIN_SKIP_THIS =
- "Failure when register pipe plugin {}. Skip this plugin and continue startup.";
+ "Failed to register pipe plugin {}. Skip this plugin and continue startup.";
public static final String PIPECONNECTOR = "PipeConnector: ";
public static final String PIPEDATANODETASKBUILDER_FAILED_TO_PARSE_INCLUSION_AND_EXCLUSION =
"PipeDataNodeTaskBuilder failed to parse 'inclusion' and 'exclusion' parameters: {}";
@@ -156,7 +157,7 @@ public final class DataNodePipeMessages {
+ "to 'false' to prevent premature halt before transfer completion.";
public static final String PIPEDATANODETASKBUILDER_WHEN_SOURCE_USES_SNAPSHOT_MODEL_REALTIME_1 =
"PipeDataNodeTaskBuilder: When source uses snapshot model, 'realtime-first' set to "
- + "'true' may cause prevent premature halt before transfer completion.";
+ + "'true' may cause premature halt before transfer completion.";
public static final String PIPEDATANODETASKBUILDER_WHEN_THE_REALTIME_SYNC_IS_ENABLED =
"PipeDataNodeTaskBuilder: When the realtime sync is enabled, not enabling the rate "
+ "limiter in sending tsfile may introduce delay for realtime sending.";
@@ -169,7 +170,7 @@ public final class DataNodePipeMessages {
"Pipe: connector subtask {} ({}) was closed within {} ms";
public static final String PIPE_META_NOT_FOUND = "Pipe meta not found: ";
public static final String PIPE_SINK_SUBTASKS_WITH_ATTRIBUTES_IS_BOUNDED =
- "Pipe sink subtasks with attributes {} is bounded with sinkExecutor {} and "
+ "Pipe sink subtasks with attributes {} are bound to sinkExecutor {} and "
+ "callbackExecutor {}.";
public static final String PIPE_SKIPPING_TEMPORARY_TSFILE_WHICH_SHOULDN_T =
"Pipe skipping temporary TsFile which shouldn't be transferred: {}";
@@ -208,7 +209,7 @@ public final class DataNodePipeMessages {
public static final String SUCCESSFULLY_PERSISTED_ALL_PIPE_S_INFO_TO =
"Successfully persisted all pipe's info to configNode.";
public static final String THE_EXECUTOR_AND_HAS_BEEN_SUCCESSFULLY_SHUTDOWN =
- "The executor {} and {} has been successfully shutdown.";
+ "The executors {} and {} have been shut down successfully.";
// ===================== EVENT =====================
@@ -671,7 +672,7 @@ public final class DataNodePipeMessages {
"Failed to send initial value to new subscription, nodeId={}";
public static final String FAILED_TO_SERIALIZE_PROGRESS_INDEX =
"Failed to serialize progress index {}";
- public static final String FAILED_TO_SHUTDOWN_EXECUTOR = "Failed to shutdown executor {}.";
+ public static final String FAILED_TO_SHUTDOWN_EXECUTOR = "Failed to shut down executor {}.";
public static final String FAILED_TO_TRANSFER_DATAVALUE = "Failed to transfer dataValue";
public static final String FAILED_TO_TRANSFER_DATAVALUE_AFTER_SUCCESSFULLY_CREATED =
"Failed to transfer dataValue after successfully created nodes";
@@ -705,42 +706,42 @@ public final class DataNodePipeMessages {
public static final String IOTCONSENSUSV2ASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
"IoTConsensusV2AsyncConnector does not support transferring generic event: {}.";
public static final String IOTCONSENSUSV2ASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFER_GENERIC_EVENT =
- "IoTConsensusV2AsyncConnector does not support transfer generic event: {}.";
+ "IoTConsensusV2AsyncConnector does not support transferring generic event: {}.";
public static final String IOTCONSENSUSV2ASYNCCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_CURRENT_EVEN =
- "IoTConsensusV2AsyncConnector only support PipeTsFileInsertionEvent. Current event: {}.";
+ "IoTConsensusV2AsyncConnector supports only PipeTsFileInsertionEvent. Current event: {}.";
public static final String IOTCONSENSUSV2CONNECTOR_TRANSFERBUFFER_QUEUE_OFFER_IS_INTERRUPTED =
- "IoTConsensusV2Connector transferBuffer queue offer is interrupted.";
+ "Interrupted while offering an event to the IoTConsensusV2Connector transfer buffer.";
public static final String IOTCONSENSUSV2TRANSFERBATCHREQBUILDER_THE_MAX_BATCH_SIZE_IS_ADJUSTED =
- "IoTConsensusV2TransferBatchReqBuilder: the max batch size is adjusted from {} to {} due "
- + "to the memory restriction";
+ "IoTConsensusV2TransferBatchReqBuilder: the max batch size was adjusted from {} to {} due "
+ + "to memory constraints";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_EVENT_NOT_FOUND_IN_TRANSFERBUFFER =
"IoTConsensusV2-ConsensusGroup-{}: event-{} not found in transferBuffer, skip removing. "
+ "queue size = {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_EVENT_REPLICATE_INDEX_TRANSFER_FAILED =
- "IoTConsensusV2-ConsensusGroup-{}: Event {} replicate index {} transfer failed, added to "
- + "retry queue failed, this event will be ignored.";
+ "IoTConsensusV2-ConsensusGroup-{}: Event {} with replicate index {} failed to transfer and "
+ + "could not be added to the retry queue; this event will be ignored.";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_EVENT_REPLICATE_INDEX_TRANSFER_FAILED_1 =
- "IoTConsensusV2-ConsensusGroup-{}: Event {} replicate index {} transfer failed, will be "
- + "added to retry queue.";
+ "IoTConsensusV2-ConsensusGroup-{}: Event {} with replicate index {} failed to transfer and "
+ + "will be added to the retry queue.";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_NO_EVENT_ADDED_TO_CONNECTOR =
- "IoTConsensusV2-ConsensusGroup-{}: no.{} event-{} added to connector buffer";
+ "IoTConsensusV2-ConsensusGroup-{}: event no.{} ({}) was added to the connector buffer";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_ONE_EVENT_SUCCESSFULLY_RECEIVED_BY =
- "IoTConsensusV2-ConsensusGroup-{}: one event-{} successfully received by the follower, "
- + "will be removed from queue, queue size = {}, limit size = {}";
+ "IoTConsensusV2-ConsensusGroup-{}: event {} was successfully received by the follower and "
+ + "will be removed from the queue; queue size = {}, limit size = {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_RETRYEVENTQUEUE_IS_NOT_EMPTY_AFTER =
"IoTConsensusV2-ConsensusGroup-{}: retryEventQueue is not empty after 20 seconds. "
+ "retryQueue size: {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_RETRY_WITH_INTERVAL_FOR_INDEX =
"IoTConsensusV2-ConsensusGroup-{}: retry with interval {} for index {} {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_TRY_TO_REMOVE_EVENT_AFTER =
- "IoTConsensusV2-ConsensusGroup-{}: try to remove event-{} after "
- + "iotConsensusV2AsyncConnector being closed. Ignore it.";
+ "IoTConsensusV2-ConsensusGroup-{}: trying to remove event {} after "
+ + "iotConsensusV2AsyncConnector has been closed. Ignoring it.";
public static final String IOTCONSENSUSV2_FAILED_TO_CLOSE_FILE_READER_WHEN =
- "IoTConsensusV2-{}: Failed to close file reader when failed to transfer file.";
+ "IoTConsensusV2-{}: Failed to close file reader after file transfer failed.";
public static final String IOTCONSENSUSV2_FAILED_TO_CLOSE_FILE_READER_WHEN_1 =
- "IoTConsensusV2-{}: Failed to close file reader when successfully transferred file.";
+ "IoTConsensusV2-{}: Failed to close file reader after successfully transferring file.";
public static final String IOTCONSENSUSV2_FAILED_TO_CLOSE_FILE_READER_WHEN_2 =
- "IoTConsensusV2-{}: Failed to close file reader when successfully transferred mod file.";
+ "IoTConsensusV2-{}: Failed to close file reader after successfully transferring mod file.";
public static final String IOTCONSENSUSV2_FAILED_TO_TRANSFER_TABLETINSERTIONEVENT_BATCH_TOTAL =
"IoTConsensusV2: Failed to transfer TabletInsertionEvent batch. Total failed events: {}, "
+ "related pipe names: {}";
@@ -752,22 +753,22 @@ public final class DataNodePipeMessages {
public static final String IOTCONSENSUSV2_SUCCESSFULLY_TRANSFERRED_FILE_COMMITTER_KEY_REPLICATE =
"IoTConsensusV2-{}: Successfully transferred file {} (committer key={}, replicate index={}).";
public static final String IOTDBCDCCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTAB =
- "IoTDBCDCConnector only support PipeInsertNodeTabletInsertionEvent and "
+ "IoTDBCDCConnector supports only PipeInsertNodeTabletInsertionEvent and "
+ "PipeRawTabletInsertionEvent.";
public static final String IOTDBDATAREGIONAIRGAPCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
"IoTDBDataRegionAirGapConnector does not support transferring generic event: {}.";
public static final String IOTDBDATAREGIONAIRGAPCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_A =
- "IoTDBDataRegionAirGapConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "IoTDBDataRegionAirGapConnector supports only PipeInsertNodeTabletInsertionEvent and "
+ + "PipeRawTabletInsertionEvent. Ignoring {}.";
public static final String IOTDBDATAREGIONAIRGAPCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_IGNORE =
- "IoTDBDataRegionAirGapConnector only support PipeTsFileInsertionEvent. Ignore {}.";
+ "IoTDBDataRegionAirGapConnector supports only PipeTsFileInsertionEvent. Ignoring {}.";
public static final String IOTDBLEGACYPIPECONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
"IoTDBLegacyPipeConnector does not support transferring generic event: {}.";
public static final String IOTDBLEGACYPIPECONNECTOR_ONLY_SUPPORT_PIPEINSERTNODEINSERTIONEVENT_AND_PIPETABLE =
- "IoTDBLegacyPipeConnector only support PipeInsertNodeInsertionEvent and "
- + "PipeTabletInsertionEvent.";
+ "IoTDBLegacyPipeConnector supports only PipeInsertNodeTabletInsertionEvent and "
+ + "PipeRawTabletInsertionEvent.";
public static final String IOTDBLEGACYPIPECONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT =
- "IoTDBLegacyPipeConnector only support PipeTsFileInsertionEvent.";
+ "IoTDBLegacyPipeConnector supports only PipeTsFileInsertionEvent.";
public static final String IOTDBSCHEMAREGIONAIRGAPSINK_CAN_T_TRANSFER_TABLETINSERTIONEVENT =
"IoTDBSchemaRegionAirGapSink can't transfer TabletInsertionEvent.";
public static final String IOTDBSCHEMAREGIONAIRGAPSINK_CAN_T_TRANSFER_TSFILEINSERTIONEVENT =
@@ -783,19 +784,19 @@ public final class DataNodePipeMessages {
public static final String IOTDBTHRIFTASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
"IoTDBThriftAsyncConnector does not support transferring generic event: {}.";
public static final String IOTDBTHRIFTASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFER_GENERIC_EVENT =
- "IoTDBThriftAsyncConnector does not support transfer generic event: {}.";
+ "IoTDBThriftAsyncConnector does not support transferring generic event: {}.";
public static final String IOTDBTHRIFTASYNCCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PI =
- "IoTDBThriftAsyncConnector only support PipeInsertNodeTabletInsertionEvent and "
+ "IoTDBThriftAsyncConnector supports only PipeInsertNodeTabletInsertionEvent and "
+ "PipeRawTabletInsertionEvent. Current event: {}.";
public static final String IOTDBTHRIFTASYNCCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_CURRENT_EVENT =
- "IoTDBThriftAsyncConnector only support PipeTsFileInsertionEvent. Current event: {}.";
+ "IoTDBThriftAsyncConnector supports only PipeTsFileInsertionEvent. Current event: {}.";
public static final String IOTDBTHRIFTSYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
"IoTDBThriftSyncConnector does not support transferring generic event: {}.";
public static final String IOTDBTHRIFTSYNCCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIP =
- "IoTDBThriftSyncConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "IoTDBThriftSyncConnector supports only PipeInsertNodeTabletInsertionEvent and "
+ + "PipeRawTabletInsertionEvent. Ignoring {}.";
public static final String IOTDBTHRIFTSYNCCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_IGNORE =
- "IoTDBThriftSyncConnector only support PipeTsFileInsertionEvent. Ignore {}.";
+ "IoTDBThriftSyncConnector supports only PipeTsFileInsertionEvent. Ignoring {}.";
public static final String LEADERCACHEMANAGER_ALLOCATEDMEMORYBLOCK_HAS_EXPANDED_FROM_TO =
"LeaderCacheManager.allocatedMemoryBlock has expanded from {} to {}.";
public static final String LEADERCACHEMANAGER_ALLOCATEDMEMORYBLOCK_HAS_SHRUNK_FROM_TO =
@@ -803,7 +804,7 @@ public final class DataNodePipeMessages {
public static final String LOADING_KEYSTORE_AT = "Loading KeyStore at {}";
public static final String LOADING_KEYSTORE_AT_1 = "Loading KeyStore at {}.";
public static final String LOAD_KEYSTORE_FAILED_THE_EXISTING_KEYSTORE_MAY =
- "Load keyStore failed, the existing keyStore may be stale, re-constructing...";
+ "Failed to load KeyStore. The existing KeyStore may be stale; rebuilding it.";
public static final String NO_OPC_CLIENT_OR_SERVER_IS_SPECIFIED =
"No OPC client or server is specified when transferring tablet";
public static final String OPC_DA_SINK_MUST_RUN_ON_WINDOWS =
@@ -831,7 +832,8 @@ public final class DataNodePipeMessages {
public static final String SUCCESSFULLY_ADDED_ITEM = "Successfully added item {}.";
public static final String SUCCESSFULLY_CONVERTED_PROGID_TO_CLSID =
"Successfully converted progID {} to CLSID: {{}}";
- public static final String SUCCESSFULLY_SHUTDOWN_EXECUTOR = "Successfully shutdown executor {}.";
+ public static final String SUCCESSFULLY_SHUTDOWN_EXECUTOR =
+ "Successfully shut down executor {}.";
public static final String SUCCESSFULLY_TRANSFERRED_DELETION_EVENT =
"Successfully transferred deletion event {}.";
public static final String SUCCESSFULLY_TRANSFERRED_FILE = "Successfully transferred file {}.";
@@ -903,8 +905,8 @@ public final class DataNodePipeMessages {
public static final String THE_WRITTEN_TABLET_TIME_MAY_OVERLAP_OR =
"The written Tablet time may overlap or the Schema may be incorrect";
public static final String THIS_CONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTABLET =
- "This Connector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "This sink supports only PipeInsertNodeTabletInsertionEvent and "
+ + "PipeRawTabletInsertionEvent. Ignoring {}.";
public static final String TIMED_OUT_WHEN_WAITING_FOR_CLIENT_HANDSHAKE =
"Timed out when waiting for client handshake finish.";
public static final String TIOTCONSENSUSV2BATCHTRANSFERRESP_IS_NULL =
@@ -926,20 +928,20 @@ public final class DataNodePipeMessages {
public static final String WAIT_FOR_RESOURCE_ENOUGH_FOR_SLICING_TSFILE =
"Wait for resource enough for slicing tsfile {} for {} seconds.";
public static final String WEBSOCKETCONNECTOR_FAILED_TO_INCREASE_THE_REFERENCE_COUNT =
- "WebsocketConnector failed to increase the reference count of the event. Ignore it. "
+ "WebSocketConnector failed to increase the reference count of the event. Ignore it. "
+ "Current event: {}.";
public static final String WEBSOCKETCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTA =
- "WebsocketConnector only support PipeInsertNodeTabletInsertionEvent and "
+ "WebSocketConnector supports only PipeInsertNodeTabletInsertionEvent and "
+ "PipeRawTabletInsertionEvent. Current event: {}.";
public static final String WEBSOCKETCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_CURRENT_EVENT =
- "WebsocketConnector only support PipeTsFileInsertionEvent. Current event: {}.";
+ "WebSocketConnector supports only PipeTsFileInsertionEvent. Current event: {}.";
public static final String WHEN_THE_OPC_UA_SINK_POINTS_TO =
"When the OPC UA sink points to an outer server, the table model data is not supported.";
public static final String WHEN_THE_OPC_UA_SINK_SETS_WITH =
"When the OPC UA sink sets 'with-quality' to true, the table model data is not supported.";
public static final String WRITEBACKSINK_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTABLETI =
- "WriteBackSink only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "WriteBackSink supports only PipeInsertNodeTabletInsertionEvent and "
+ + "PipeRawTabletInsertionEvent. Ignoring {}.";
// ===================== RECEIVER =====================
@@ -969,7 +971,7 @@ public final class DataNodePipeMessages {
public static final String FAILED_TO_HANDLE_CONFIG_CLIENT_ID_EXIT =
"Failed to handle config client (id = {}) exit";
public static final String FAIL_TO_CREATE_IOTCONSENSUSV2_RECEIVER_FILE_FOLDERS =
- "Fail to create iotConsensusV2 receiver file folders allocation strategy because all "
+ "Failed to create IoTConsensusV2 receiver file folders allocation strategy because all "
+ "disks of folders are full.";
public static final String FAIL_TO_CREATE_PIPE_RECEIVER_FILE_FOLDERS =
"Fail to create pipe receiver file folders allocation strategy because all disks of "
@@ -985,8 +987,8 @@ public final class DataNodePipeMessages {
public static final String INVOKE_TRANSPORTPIPEDATA_METHOD_FROM_CLIENT_IP =
"Invoke transportPipeData method from client ip = {}";
public static final String IOTCONSENSUSV2RECEIVER_THREAD_IS_INTERRUPTED_WHEN_WAITING_FOR =
- "IoTConsensusV2Receiver thread is interrupted when waiting for receiver get initiated, "
- + "may because system exit.";
+ "IoTConsensusV2Receiver thread was interrupted while waiting for receiver initialization, "
+ + "possibly because the system is exiting.";
public static final String IOTCONSENSUSV2_PIPENAME = "IoTConsensusV2-PipeName-{}: {}";
public static final String IOTCONSENSUSV2_PIPENAME_CURRENT_WAITING_IS_INTERRUPTED_ONSYNCEDCOMMITINDEX =
"IoTConsensusV2-PipeName-{}: current waiting is interrupted. onSyncedCommitIndex: {}. "
@@ -1000,15 +1002,15 @@ public final class DataNodePipeMessages {
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_FILE =
"IoTConsensusV2-PipeName-{}: Failed to create receiver file dir {}.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_FILE_1 =
- "IoTConsensusV2-PipeName-{}: Failed to create receiver file dir {}. Because parent "
- + "system dir have been deleted due to system concurrently exit.";
+ "IoTConsensusV2-PipeName-{}: Failed to create receiver file dir {} because the parent "
+ + "system dir has been deleted during concurrent system shutdown.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_FILE_2 =
- "IoTConsensusV2-PipeName-{}: Failed to create receiver file dir {}. May because "
- + "authority or dir already exists etc.";
+ "IoTConsensusV2-PipeName-{}: Failed to create receiver file dir {}. Possible causes "
+ + "include insufficient permissions or an existing directory.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_TSFILEWRITER =
- "IoTConsensusV2-PipeName-{}: Failed to create receiver tsFileWriter-{} file dir {}";
+ "IoTConsensusV2-PipeName-{}: Failed to create receiver TsFileWriter-{} file dir {}";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_DELETE_BECAUSE =
- "IoTConsensusV2-PipeName-{}: {} Failed to delete {}, because {}.";
+ "IoTConsensusV2-PipeName-{}: {} failed to delete {}, because {}.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_GET_BASE_DIRECTORY =
"IoTConsensusV2-PipeName-{}: Failed to get base directory";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_LOAD_FILE_FROM =
@@ -1016,7 +1018,7 @@ public final class DataNodePipeMessages {
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_READ_TSFILE_WHEN =
"IoTConsensusV2-PipeName-{}: Failed to read TsFile when counting points: {}.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_RETURN_TSFILEWRITER =
- "IoTConsensusV2-PipeName-{}: Failed to return tsFileWriter {}.";
+ "IoTConsensusV2-PipeName-{}: Failed to return TsFileWriter {}.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_BECAUSE =
"IoTConsensusV2-PipeName-{}: Failed to seal file {}, because the file does not exist.";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_BECAUSE_1 =
@@ -1042,53 +1044,53 @@ public final class DataNodePipeMessages {
public static final String IOTCONSENSUSV2_PIPENAME_ILLEGAL_FILE_NAME_WHEN_CHECKING =
"IoTConsensusV2-PipeName-{}: Illegal file name {} when checking writing file.";
public static final String IOTCONSENSUSV2_PIPENAME_IS_NOT_EXISTED_NO_NEED =
- "IoTConsensusV2-PipeName-{}: {} {} is not existed. No need to delete.";
+ "IoTConsensusV2-PipeName-{}: {} {} does not exist. No need to delete.";
public static final String IOTCONSENSUSV2_PIPENAME_NO_EVENT_GET_EXECUTED_AFTER =
- "IoTConsensusV2-PipeName-{}: no.{} event get executed after awaiting timeout, current "
+ "IoTConsensusV2-PipeName-{}: event no.{} was executed after awaiting timeout, current "
+ "receiver syncIndex: {}";
public static final String IOTCONSENSUSV2_PIPENAME_NO_EVENT_GET_EXECUTED_BECAUSE =
- "IoTConsensusV2-PipeName-{}: no.{} event get executed because receiver buffer's len >= "
+ "IoTConsensusV2-PipeName-{}: event no.{} was executed because receiver buffer's len >= "
+ "pipeline, current receiver syncIndex {}, current buffer len {}";
public static final String IOTCONSENSUSV2_PIPENAME_PATH_TRAVERSAL_ATTEMPT_DETECTED_FILENAME =
"IoTConsensusV2-PipeName-{}: Path traversal attempt detected! Filename: {}";
public static final String IOTCONSENSUSV2_PIPENAME_PROCESS_NO_EVENT_SUCCESSFULLY =
- "IoTConsensusV2-PipeName-{}: process no.{} event successfully!";
+ "IoTConsensusV2-PipeName-{}: processed event no.{} successfully!";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVED_A_DEPRECATED_REQUEST_WHICH =
- "IoTConsensusV2-PipeName-{}: received a deprecated request-{}, which may because {}. ";
+ "IoTConsensusV2-PipeName-{}: received deprecated request {}, possibly because {}. ";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_DETECTED_AN_NEWER_PIPETASKRESTARTTIMES =
- "IoTConsensusV2-PipeName-{}: receiver detected an newer pipeTaskRestartTimes, which "
- + "indicates the pipe task has restarted. receiver will reset all its data.";
+ "IoTConsensusV2-PipeName-{}: receiver detected newer pipeTaskRestartTimes, which "
+ + "indicates the pipe task has restarted. The receiver will reset all its data.";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_DETECTED_AN_NEWER_REBOOTTIMES =
- "IoTConsensusV2-PipeName-{}: receiver detected an newer rebootTimes, which indicates the "
- + "leader has rebooted. receiver will reset all its data.";
+ "IoTConsensusV2-PipeName-{}: receiver detected newer rebootTimes, which indicates the "
+ + "leader has rebooted. The receiver will reset all its data.";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_FILE_DIR_WAS_CREATED =
"IoTConsensusV2-PipeName-{}: Receiver file dir {} was created.";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_THREAD_GET_INTERRUPTED_WHEN =
- "IoTConsensusV2-PipeName-{}: receiver thread get interrupted when exiting.";
+ "IoTConsensusV2-PipeName-{}: receiver thread was interrupted while exiting.";
public static final String IOTCONSENSUSV2_PIPENAME_SEAL_FILE_SUCCESSFULLY =
- "IoTConsensusV2-PipeName-{}: Seal file {} successfully.";
+ "IoTConsensusV2-PipeName-{}: Sealed file {} successfully.";
public static final String IOTCONSENSUSV2_PIPENAME_SEAL_FILE_WITH_MODS_SUCCESSFULLY =
- "IoTConsensusV2-PipeName-{}: Seal file with mods {} successfully.";
+ "IoTConsensusV2-PipeName-{}: Sealed file with mods {} successfully.";
public static final String IOTCONSENSUSV2_PIPENAME_SKIP_LOAD_TSFILE_WHEN_SEALING =
- "IoTConsensusV2-PipeName-{}: skip load tsfile-{} when sealing, because this region has "
+ "IoTConsensusV2-PipeName-{}: skipped loading TsFile {} while sealing because this region has "
+ "been removed or migrated.";
public static final String IOTCONSENSUSV2_PIPENAME_STARTING_TO_RECEIVE_TSFILE_PIECES =
- "IoTConsensusV2-PipeName-{}: starting to receive tsFile pieces";
+ "IoTConsensusV2-PipeName-{}: starting to receive TsFile pieces";
public static final String IOTCONSENSUSV2_PIPENAME_STARTING_TO_RECEIVE_TSFILE_SEAL =
- "IoTConsensusV2-PipeName-{}: starting to receive tsFile seal";
+ "IoTConsensusV2-PipeName-{}: starting to receive TsFile seal";
public static final String IOTCONSENSUSV2_PIPENAME_STARTING_TO_RECEIVE_TSFILE_SEAL_1 =
- "IoTConsensusV2-PipeName-{}: starting to receive tsFile seal with mods";
+ "IoTConsensusV2-PipeName-{}: starting to receive TsFile seal with mods";
public static final String IOTCONSENSUSV2_PIPENAME_START_TO_RECEIVE_NO_EVENT =
- "IoTConsensusV2-PipeName-{}: start to receive no.{} event";
+ "IoTConsensusV2-PipeName-{}: start receiving event no.{}";
public static final String IOTCONSENSUSV2_PIPENAME_THE_POINT_COUNT_OF_TSFILE =
"IoTConsensusV2-PipeName-{}: The point count of TsFile {} is not given by sender, will "
+ "read actual point count from TsFile.";
public static final String IOTCONSENSUSV2_PIPENAME_TSFILEWRITER_RETURNED_SELF =
- "IoTConsensusV2-PipeName-{}: tsFileWriter-{} returned self";
+ "IoTConsensusV2-PipeName-{}: TsFileWriter-{} returned itself";
public static final String IOTCONSENSUSV2_PIPENAME_TSFILEWRITER_ROLL_TO_WRITING_PATH =
- "IoTConsensusV2-PipeName-{}: tsfileWriter-{} roll to writing path {}";
+ "IoTConsensusV2-PipeName-{}: TsFileWriter-{} rolled to writing path {}";
public static final String IOTCONSENSUSV2_PIPENAME_TSFILE_WRITER_IS_CLEANED_UP =
- "IoTConsensusV2-PipeName-{}: tsfile writer-{} is cleaned up because no new requests were "
+ "IoTConsensusV2-PipeName-{}: TsFileWriter-{} is cleaned up because no new requests were "
+ "received for too long.";
public static final String IOTCONSENSUSV2_PIPENAME_UNKNOWN_PIPEREQUESTTYPE_RESPONSE_STATUS =
"IoTConsensusV2-PipeName-{}: Unknown PipeRequestType, response status = {}.";
@@ -1098,27 +1100,28 @@ public final class DataNodePipeMessages {
"IoTConsensusV2-PipeName-{}: Writing file {} is not available. Writing file is null: {}, "
+ "writing file exists: {}, writing file writer is null: {}.";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_IS_NOT_EXISTED =
- "IoTConsensusV2-PipeName-{}: Writing file {} is not existed or name is not correct, try "
- + "to create it. Current writing file is {}.";
+ "IoTConsensusV2-PipeName-{}: Writing file {} does not exist or its name is incorrect; "
+ + "trying to create it. Current writing file is {}.";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_S_OFFSET_IS =
"IoTConsensusV2-PipeName-{}: Writing file {}'s offset is {}, but request sender's offset "
+ "is {}.";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_WAS_CREATED_READY =
"IoTConsensusV2-PipeName-{}: Writing file {} was created. Ready to write file pieces.";
public static final String IOTCONSENSUSV2_RECEIVE_ON_THE_FLY_NO_EVENT =
- "IoTConsensusV2-{}: receive on-the-fly no.{} event after data region was deleted, discard it";
+ "IoTConsensusV2-{}: received on-the-fly event no.{} after the data region was deleted; "
+ + "discarding it";
public static final String IOTCONSENSUSV2_TRANSFER_BATCH_HASN_T_BEEN_IMPLEMENTED =
- "IoTConsensusV2 transfer batch hasn't been implemented yet.";
+ "IoTConsensusV2 batch transfer has not been implemented yet.";
public static final String IOTCONSENSUSV2_TSFILEWRITER_SET_NULL_WRITING_FILE =
- "IoTConsensusV2-{}: TsFileWriter-{} set null writing file";
+ "IoTConsensusV2-{}: TsFileWriter-{} set writing file to null";
public static final String IOTCONSENSUSV2_TSFILEWRITER_SET_NULL_WRITING_FILE_WRITER =
- "IoTConsensusV2-{}: TsFileWriter-{} set null writing file writer";
+ "IoTConsensusV2-{}: TsFileWriter-{} set writing file writer to null";
public static final String IOTCONSENSUSV2_UNKNOWN_IOTCONSENSUSV2REQUESTVERSION_RESPONSE_STATUS =
"IoTConsensusV2: Unknown IoTConsensusV2RequestVersion, response status = {}.";
public static final String IOTCONSENSUSV2_UNKNOWN_PIPEREQUESTTYPE_RESPONSE_STATUS =
- "IoTConsensusV2 Unknown PipeRequestType, response status = {}.";
+ "IoTConsensusV2: Unknown PipeRequestType, response status = {}.";
public static final String IOTCONSENSUSV2_WAITING_FOR_THE_PREVIOUS_EVENT_TIMES =
- "IoTConsensusV2-{}: Waiting for the previous event times out, current peek {}, current id {}";
+ "IoTConsensusV2-{}: Timed out waiting for the previous event, current peek {}, current id {}";
public static final String IOTDBAIRGAPRECEIVERAGENT_STARTED =
"IoTDBAirGapReceiverAgent {} started.";
public static final String IOTDBAIRGAPRECEIVERAGENT_STOPPED =
@@ -1178,7 +1181,7 @@ public final class DataNodePipeMessages {
public static final String TEMPORARY_UNAVAILABLE_EXCEPTION_ENCOUNTERED_AT_AIR_GAP =
"Temporary unavailable exception encountered at air gap receiver, will retry locally.";
public static final String THE_IOTCONSENSUSV2_REQUEST_VERSION_IS_DIFFERENT_FROM =
- "The iotConsensusV2 request version {} is different from the sender request version {}, "
+ "The IoTConsensusV2 request version {} is different from the sender request version {}, "
+ "the receiver will be reset to the sender request version.";
public static final String THE_START_INDEX_OF_DATA_SYNC_IS =
"The start index {} of data sync is not valid. The file is not exist and start index "
diff --git a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java
index aadb99add52d0..8e6721af8a404 100644
--- a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java
+++ b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java
@@ -292,7 +292,7 @@ public final class DataNodeQueryMessages {
public static final String FAILED_TO_GET_DATABASE_MAP =
"Failed to get database Map";
public static final String LOAD_ANALYSIS_STAGE_ALL_TSFILES_HAVE_BEEN_ANALYZED =
- "Load - Analysis Stage: all tsfiles have been analyzed.";
+ "Load - Analysis Stage: all TsFiles have been analyzed.";
public static final String ASYNC_LOAD_HAS_FAILED_AND_IS_NOW_TRYING =
"Async Load has failed, and is now trying to load sync";
public static final String TSFILE_IS_EMPTY =
@@ -307,6 +307,56 @@ public final class DataNodeQueryMessages {
"Failed to find tag column mapping for table {}";
public static final String AUTO_CREATE_DATABASE_FAILED_BECAUSE =
"Auto create database failed because: ";
+ public static final String LOAD_AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_WHEN_EXECUTING_STATEMENT =
+ "Auto create or verify schema error when executing statement %s. Detail: %s.";
+ public static final String TSFILE_ENCRYPTION_ENABLED_LOAD_DISABLED =
+ "TsFile encryption is enabled, and the Load TsFile function is disabled";
+ public static final String LOAD_DATANODE_READ_ONLY_CONVERT_TO_TABLETS =
+ "LoadTsFileAnalyzer: Current DataNode is read-only. It will try to convert to tablets and insert later.";
+ public static final String LOAD_ANALYSIS_STAGE_PROGRESS =
+ "Load - Analysis Stage: {}/{} TsFiles have been analyzed, progress: {}%";
+ public static final String FILE_IS_NOT_VALID_TSFILE_CHECK_INPUT =
+ "The file {} is not a valid TsFile. Please check the input file.";
+ public static final String FILE_IS_NOT_VALID_TSFILE_CHECK_INPUT_S =
+ "The file %s is not a valid TsFile. Please check the input file.";
+ public static final String LOADING_FILE_FAILED_DETAIL =
+ "Loading file %s failed. Detail: %s";
+ public static final String TSFILE_MODEL_FILE =
+ "TsFile {} is a {}-model file.";
+ public static final String TSFILE_TABLE_MODEL = "table";
+ public static final String TSFILE_TREE_MODEL = "tree";
+ public static final String FAILED_CONVERT_MINI_TSFILE_TO_TABLETS =
+ "Load: Failed to convert mini TsFile {} to tablets from statement {}. Status: {}.";
+ public static final String FAILED_CONVERT_TO_TABLETS_READ_MODEL_INFO =
+ "Load: Failed to convert to tablets from statement {} because model info could not be read from file, message: {}.";
+ public static final String FAILED_CONVERT_TO_TABLETS_STATUS_NULL =
+ "Load: Failed to convert to tablets from statement {}. Status is null.";
+ public static final String FAILED_CONVERT_TO_TABLETS_STATUS =
+ "Load: Failed to convert to tablets from statement {}. Status: {}";
+ public static final String FAILED_CONVERT_TO_TABLETS_EXCEPTION =
+ "Load: Failed to convert to tablets from statement {} because of exception: {}";
+ public static final String SKIP_FAILED_TABLE_SCHEMA_CHECK =
+ "Failed to check table schema, will skip because skipFailedTableSchemaCheck is set to true, message: {}";
+ public static final String FAILED_CHECK_DEVICE_DELETED_BY_MODS =
+ "Failed to check if device {} is deleted by mods. Treat it as not deleted.";
+ public static final String FAILED_CHECK_TIMESERIES_DELETED_BY_MODS =
+ "Failed to check if device {}, timeseries {} is deleted by mods. Treat it as not deleted.";
+ public static final String AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_DETAIL =
+ "Auto create or verify schema error. Detail: %s.";
+ public static final String DATA_TYPE_MISMATCH_FOR_COLUMN =
+ "Data type mismatch for column {} in table {}, type in TsFile: {}, type in IoTDB: {}";
+ public static final String CREATE_DATABASE_ERROR =
+ "Failed to create database, statement: {}, result status is: {}";
+ public static final String CREATE_DATABASE_ERROR_S =
+ "Failed to create database, statement: %s, result status is: %s";
+ public static final String MEASUREMENT_DATATYPE_NOT_MATCH =
+ "Measurement {}{}{} data type does not match, TsFile: {}, IoTDB: {}";
+ public static final String ENCODING_TYPE_NOT_MATCH =
+ "Encoding type does not match, measurement: {}{}{}, TsFile encoding: {}, IoTDB encoding: {}";
+ public static final String COMPRESSOR_NOT_MATCH =
+ "Compressor does not match, measurement: {}{}{}, TsFile compressor: {}, IoTDB compressor: {}";
+ public static final String DEVICE_NOT_IN_TSFILE_DEVICE_IS_ALIGNED_CACHE =
+ "Device {} is not in the tsFileDevice2IsAligned cache {}.";
// --- Plan / Execution ---
@@ -960,6 +1010,56 @@ public final class DataNodeQueryMessages {
"Start load TsFile {} locally.";
public static final String LOAD_ALL_FAILED_TSFILES_ARE_CONVERTED_TO_TABLETS =
"Load: all failed TsFiles are converted to tablets and inserted.";
+ public static final String LOAD_REGION_MIGRATION_DETECTED_CONVERT_TO_INSERTION =
+ "LoadTsFileScheduler: Region migration was detected while loading TsFile {}. It will convert to insertion to avoid data loss.";
+ public static final String LOAD_TSFILE_SUCCESSFULLY_PROCESS =
+ "Loaded TsFile {} successfully, progress [{}/{}]";
+ public static final String CANNOT_LOAD_TSFILE_PROCESS =
+ "Cannot load TsFile {}, progress [{}/{}]";
+ public static final String LOAD_TSFILES_FAILED_TRY_CONVERT_TO_TABLETS =
+ "Failed to load TsFiles. Will try to convert them to tablets and insert. Failed TsFiles: {}";
+ public static final String DISPATCH_TSFILE_DATA_ERROR_WHEN_PARSING =
+ "Failed to dispatch TsFileData when parsing TsFile %s.";
+ public static final String PARSE_OR_SEND_TSFILE_ERROR =
+ "Failed to parse or send TsFile %s.";
+ public static final String DISPATCH_ONE_PIECE_ERROR =
+ "Failed to dispatch one piece to replica set {}. Result status code {}. "
+ + "Result status message {}. Failed piece node:%n{}";
+ public static final String SUB_STATUS_CODE_MESSAGE =
+ "Sub status code {}. Sub status message {}.";
+ public static final String LOAD_PIECE_ERROR_FIRST_PHASE =
+ "Failed to load piece %s in the first phase because ";
+ public static final String WAIT_FOR_LOADING_TIMEOUT =
+ "Timed out waiting for %s to load.";
+ public static final String SERIALIZE_PROGRESS_INDEX_ERROR =
+ "Failed to serialize ProgressIndex, isFirstPhaseSuccess: %s, uuid: %s, TsFile: %s";
+ public static final String DISPATCH_LOAD_COMMAND_ERROR =
+ "Failed to dispatch load command {} of TsFile {} to replica sets {}. "
+ + "Result status code {}. Result status message {}.";
+ public static final String LOAD_TSFILE_ERROR_SECOND_PHASE =
+ "Failed to load %s in the second phase because %s. First phase is %s";
+ public static final String LOAD_FIRST_PHASE_SUCCESS = "success";
+ public static final String LOAD_FIRST_PHASE_FAILED = "failed";
+ public static final String DISPATCH_TSFILE_TO_LOCAL_ERROR =
+ "Dispatch TsFile %s to local failed. Result status code %s. Result status message %s.";
+ public static final String SUCCESS_CONVERT_TSFILE_TO_TABLETS =
+ "Load: Successfully converted TsFile {} into tablets and inserted.";
+ public static final String FAILED_CONVERT_TSFILE_TO_TABLETS_STATUS =
+ "Load: Failed to convert to tablets from TsFile {}. Status: {}";
+ public static final String FAILED_CONVERT_TSFILE_TO_TABLETS_EXCEPTION =
+ "Load: Failed to convert to tablets from TsFile {}. Exception: {}";
+ public static final String FAILED_LOAD_BY_CONVERTING_TO_TABLETS =
+ "Load: Failed to load some TsFiles by converting them into tablets. Failed TsFiles: %s";
+ public static final String DISPATCH_PIECE_NODE_OF_TSFILE_ERROR =
+ "Failed to dispatch piece node {} of TsFile {}.";
+ public static final String FAILED_DISPATCH_LOAD_COMMAND_TO_NODE =
+ "Failed to dispatch load command %s to node %s because of exception: %s";
+ public static final String CANNOT_DISPATCH_LOAD_COMMAND =
+ "Cannot dispatch LoadCommand for load operation {}";
+ public static final String SERIALIZE_TSFILE_DATA_ERROR_SKIP =
+ "Failed to serialize data of TsFile {}, skipping TsFileData {}";
+ public static final String LOAD_RPC_CONNECTION_TIMEOUT_ADJUSTED =
+ "Load RPC connection timeout is adjusted to {} ms ({} minutes)";
// --- Plan / Statement ---
diff --git a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/StorageEngineMessages.java b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/StorageEngineMessages.java
index 506820c34de1a..17b3c5d3baca1 100644
--- a/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/StorageEngineMessages.java
+++ b/iotdb-core/datanode/src/main/i18n/en/org/apache/iotdb/db/i18n/StorageEngineMessages.java
@@ -507,6 +507,86 @@ private StorageEngineMessages() {}
public static final String ACTIVE_LOAD_EXECUTOR_STOPPED = "Active load periodical jobs executor is stopped successfully.";
public static final String ERROR_MOVING_FILE_TO_FAIL_DIR = "Error occurred during moving file {} to fail directory.";
public static final String FAILED_COUNT_FILES_IN_FAIL_DIR = "Failed to count failed files in fail directory.";
+ public static final String NEXT_LOAD_CLEANUP_TASK_NOT_READY =
+ "Next load cleanup task {} is not ready to run, wait for at least {} ms ({}s).";
+ public static final String WRITER_MANAGER_HAS_BEEN_CLOSED =
+ "TsFileWriterManager for %s has been closed.";
+ public static final String FAILED_TO_DELETE_LOAD_TASK_DIR =
+ "Failed to delete load task directory {}.";
+ public static final String WRITER_ALREADY_WRITING_CHUNK_GROUP =
+ "Writer {} for partition {} is already writing chunk group for device {}, but the last device is {}.";
+ public static final String CANNOT_CREATE_MODIFICATION_FILE_FOR_WRITING =
+ "Cannot create ModificationFile {} for writing.";
+ public static final String ACTIVE_LOAD_CREATE_FAIL_DIR_ERROR =
+ "Error occurred during creating fail directory {} for active load.";
+ public static final String ACTIVE_LOAD_TSFILE_SUCCESS =
+ "Successfully loaded TsFile {} automatically (isGeneratedByPipe = {})";
+ public static final String ACTIVE_LOAD_TSFILE_FAILED_STATUS_MOVE_FAIL_DIR =
+ "Failed to load TsFile {} automatically (isGeneratedByPipe = {}), status: {}. File will be moved to fail directory.";
+ public static final String ACTIVE_LOAD_TSFILE_FILE_NOT_FOUND_SKIP =
+ "Failed to load TsFile {} automatically (isGeneratedByPipe = {}) because the file was not found. This file will be skipped.";
+ public static final String ACTIVE_LOAD_TSFILE_UNEXPECTED_EXCEPTION_MOVE_FAIL_DIR =
+ "Failed to load TsFile {} automatically (isGeneratedByPipe = {}) because of an unexpected exception. File will be moved to fail directory.";
+ public static final String ACTIVE_LOAD_REJECT_MEMORY =
+ "Rejecting automatic TsFile load {} (isGeneratedByPipe = {}) due to memory constraints. It will retry later.";
+ public static final String ACTIVE_LOAD_REJECT_READ_ONLY =
+ "Rejecting automatic TsFile load {} (isGeneratedByPipe = {}) because the system is read-only. It will retry later.";
+ public static final String ACTIVE_LOAD_REJECT_PROCEDURE_RETURN_TIMEOUT =
+ "Rejecting automatic TsFile load {} (isGeneratedByPipe = {}) because waiting for procedure return timed out. It will retry later.";
+ public static final String ACTIVE_LOAD_REJECT_DATANODE_NOT_ENOUGH =
+ "Rejecting automatic TsFile load {} (isGeneratedByPipe = {}) because there are not enough DataNodes. It will retry later.";
+ public static final String ACTIVE_LOAD_REJECT_CONFIG_NODE_CONNECTION =
+ "Rejecting automatic TsFile load {} (isGeneratedByPipe = {}) because it failed to connect to any ConfigNode. It will retry later.";
+ public static final String ACTIVE_LOAD_REJECT_QUERY_TIMEOUT =
+ "Rejecting automatic TsFile load {} (isGeneratedByPipe = {}) because the current query timed out. It will retry later.";
+ public static final String ACTIVE_LOAD_DIR_NOT_READABLE =
+ "Current dir path is not readable: {}. Skip scanning this dir. Please check the permission.";
+ public static final String ACTIVE_LOAD_DIR_NOT_WRITABLE =
+ "Current dir path is not writable: {}. Skip scanning this dir. Please check the permission.";
+ public static final String ACTIVE_LOAD_CHECK_DIR_PERMISSION_ERROR =
+ "Error occurred during checking read/write permission of dir: {}. Skip scanning this dir.";
+ public static final String ACTIVE_LOAD_HOT_RELOAD_DIRS_ERROR =
+ "Error occurred during hot reload active load dirs. Current active load listening dirs: {}.";
+ public static final String FAILED_FIND_MOUNT_POINT =
+ "Failed to find the mount point for {}, skipping registration";
+ public static final String EXCEPTION_READING_DATA_DIR_MOUNT_POINT =
+ "Exception occurred when reading the mount point of data dir {}";
+ public static final String EXCEPTION_READING_TARGET_FILE_MOUNT_POINT =
+ "Exception occurred when reading the mount point of target file {}";
+ public static final String RELEASE_MORE_MEMORY_THAN_ALLOCATED =
+ "Load: Attempting to release more memory ({}) than allocated ({})";
+ public static final String ALLOCATED_MEMORY_BLOCK_FROM_DATA_CACHE =
+ "Load: Query engine memory is insufficient. Allocated MemoryBlock from DataCacheMemoryBlock, size: {}";
+ public static final String RESIZE_MEMORY_BLOCK_FAILED =
+ "Load: Failed to set total memory size of memory block {} to {} bytes, current memory usage {} bytes";
+ public static final String FORCE_RESIZED_MEMORY_BLOCK_FROM_QUERY =
+ "Load: Force-resized LoadTsFileMemoryBlock with memory from query engine, size added: {}, new size: {}";
+ public static final String FORCE_RESIZED_MEMORY_BLOCK_FROM_DATA_CACHE =
+ "Load: Query engine memory is insufficient. Force-resized LoadTsFileMemoryBlock with memory from DataCacheMemoryBlock, size added: {}, new size: {}";
+ public static final String CREATE_DATA_CACHE_MEMORY_BLOCK =
+ "Created data cache memory block {}, allocated memory {}";
+ public static final String RELEASE_MEMORY_BLOCK_WITH_USAGE =
+ "Attempting to release memory block {} before all memory is released";
+ public static final String SHRINK_NEGATIVE_MEMORY =
+ "Attempting to shrink negative memory size {} from memory block {}";
+ public static final String CAST_TABLET_TYPE =
+ "Load: Inserting tablet to {}.{}. Casting type from {} to {}.";
+ public static final String DATABASE_NAME_NULL_SKIP_DATA_TYPE_CONVERSION =
+ "Database name is unexpectedly null for LoadTsFileStatement: %s. Skip data type conversion.";
+ public static final String FAILED_CONVERT_DATA_TYPE_FOR_LOAD_TSFILE_STATEMENT =
+ "Failed to convert data type for LoadTsFileStatement: {}.";
+ public static final String DATA_TYPE_CONVERSION_SUCCESS =
+ "Data type conversion for LoadTsFileStatement {} is successful.";
+ public static final String FAILED_CONVERT_DATA_TYPE_STATUS_CODE =
+ "Failed to convert data type for LoadTsFileStatement: {}, status code is {}.";
+ public static final String FAILED_CONVERT_DATA_TYPES_FOR_TABLE_MODEL =
+ "Failed to convert data types for table model statement {}.";
+ public static final String FAILED_CONVERT_DATA_TYPES_FOR_TREE_MODEL =
+ "Failed to convert data types for tree model statement {}.";
+ public static final String TRY_LOAD_TSFILE_V3_TO_CURRENT_V4 =
+ "Trying to load TsFile V3 into current version (V4), file path: {}";
+ public static final String FILE_VERSION_HIGHER_THAN_CURRENT =
+ "The file's version number is higher than the current version, file path: {}";
public static final String STRING_NOT_LEGAL_REPAIR_LOG = "String '%s' is not a legal repair log";
diff --git a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java
index af35dd358b9ab..7cf135c425a97 100644
--- a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java
+++ b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeMiscMessages.java
@@ -934,8 +934,8 @@ private DataNodeMiscMessages() {}
public static final String ERROR_CODE = "错误码:";
public static final String NULL_RESPONSE_WHEN_SERIALIZING = "序列化时响应为空";
public static final String OBJECT_STORAGE_NOT_SUPPORTED_YET = "暂不支持对象存储";
- public static final String REGISTERED_TASK_COUNT_LT_ZERO = "registeredTaskCount < 0";
- public static final String REGISTERED_TASK_COUNT_LE_ZERO = "registeredTaskCount <= 0";
+ public static final String REGISTERED_TASK_COUNT_LT_ZERO = "registeredTaskCount 小于 0";
+ public static final String REGISTERED_TASK_COUNT_LE_ZERO = "registeredTaskCount 小于等于 0";
public static final String REQUEST_TYPE_NOT_SUPPORTED = "不支持的请求类型:";
public static final String UNEXPECTED_REQUEST_TYPE = "意外的请求类型:%s";
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 adb27e509014f..426c816e10dec 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
@@ -24,1280 +24,1215 @@ public final class DataNodePipeMessages {
// ===================== CONSENSUS =====================
public static final String CLOSING_DELETION_RESOURCE_MANAGER_FOR = "正在关闭 {} 的删除资源管理器...";
- public static final String DAL_THREAD_STILL_DOESN_T_EXIT_AFTER = "DAL 线程 {} 在 30 秒后仍未退出";
public static final String DELETIONMANAGER_CURRENT_DAL_DIR_IS_DELETED_SUCCESSFULLY =
- "DeletionManager-{}:current DAL dir {} 已成功删除";
+ "DeletionManager-{}:当前 DAL 目录 {} 已成功删除";
public static final String DELETIONMANAGER_CURRENT_DAL_DIR_IS_NOT_INITIALIZED =
- "DeletionManager-{}:current DAL dir {} 未初始化,无需删除。";
+ "DeletionManager-{}:当前 DAL 目录 {} 未初始化,无需删除。";
public static final String DELETIONMANAGER_CURRENT_WAITING_IS_INTERRUPTED_MAY_BECAUSE =
- "DeletionManager-{}:current waiting is interrupted. May because current application is "
- + "down. ";
+ "DeletionManager-{}:等待被中断,可能是因为应用正在关闭。";
public static final String DELETIONMANAGER_DELETE_DELETION_FILE_IN_DIR =
- "DeletionManager-{} delete deletion file in {} dir...";
+ "DeletionManager-{}:已删除删除文件 {}。";
public static final String DELETIONMANAGER_FAILED_TO_DELETE_FILE_IN_DIR =
- "DeletionManager-{} 删除 file in {} dir, please manually check! 失败";
+ "DeletionManager-{}:删除 {} 下的文件失败,请手动检查!";
public static final String DELETIONRESOURCE_HAS_BEEN_RELEASED_TRIGGER_A_REMOVE =
- "DeletionResource {} 已释放,触发移除 DAL...";
+ "DeletionResource {} 已释放,触发 DAL 清理。";
public static final String DELETION_PERSIST_CANNOT_CREATE_FILE_PLEASE_CHECK =
- "Deletion persist: Cannot create file {}, please check your file system manually.";
+ "Deletion persist:创建文件 {} 失败,请手动检查文件系统。";
public static final String DELETION_PERSIST_CANNOT_WRITE_TO_MAY_CAUSE =
- "Deletion persist: Cannot write to {}, may cause data inconsistency.";
+ "Deletion persist:写入 {} 失败,可能导致数据不一致。";
public static final String DELETION_PERSIST_CURRENT_BATCH_FSYNC_DUE_TO =
- "Deletion persist-{}:current batch fsync due to timeout";
+ "Deletion persist-{}:因超时对当前批次执行 fsync";
public static final String DELETION_PERSIST_CURRENT_FILE_HAS_BEEN_CLOSED =
- "Deletion persist-{}:current file 已关闭";
+ "Deletion persist-{}:当前文件已关闭";
public static final String DELETION_PERSIST_SERIALIZE_DELETION_RESOURCE =
- "Deletion persist-{}:serialize deletion resource {}";
+ "Deletion persist-{}:正在序列化删除资源 {}";
public static final String DELETION_PERSIST_STARTING_TO_PERSIST_CURRENT_WRITING =
- "Deletion persist-{}:starting to persist, current writing: {}";
+ "Deletion persist-{}:开始持久化,当前文件:{}";
public static final String DELETION_PERSIST_SWITCHING_TO_A_NEW_FILE =
- "Deletion persist-{}:switching to a new file, current writing: {}";
+ "Deletion persist-{}:已切换到新文件,当前文件:{}";
public static final String DELETION_RESOURCE_MANAGER_FOR_HAS_BEEN_SUCCESSFULLY =
"{} 的删除资源管理器已成功关闭!";
public static final String DETECT_FILE_CORRUPTED_WHEN_RECOVER_DAL_DISCARD =
- "recover DAL-{}, discard all subsequent DALs... 时检测到 file corrupted";
+ "恢复 DAL-{} 时检测到文件损坏,将丢弃后续所有 DAL。";
public static final String FAILED_TO_INITIALIZE_DELETIONRESOURCEMANAGER =
"初始化 DeletionResourceManager 失败";
public static final String FAILED_TO_READ_DELETION_FILE_MAY_BECAUSE =
- "读取 deletion file {}, may 失败,原因:this file corrupted when writing it.";
+ "读取删除文件 {} 失败,该文件可能在写入时已损坏。";
public static final String FAILED_TO_RECOVER_DELETIONRESOURCEMANAGER =
"恢复 DeletionResourceManager 失败";
public static final String FAIL_TO_ALLOCATE_DELETIONBUFFER_GROUP_S_BUFFER =
- "分配 deletionBuffer-group-{}'s buffer 失败,原因:out of memory.";
- public static final String FAIL_TO_CLOSE_CURRENT_LOGGING_FILE_WHEN = "关闭时无法关闭当前日志文件";
+ "分配 deletionBuffer-group-{} 的缓冲区失败,内存不足。";
+ public static final String FAIL_TO_CLOSE_CURRENT_LOGGING_FILE_WHEN = "关闭过程中关闭当前日志文件失败";
public static final String FAIL_TO_REGISTER_DELETIONRESOURCE_INTO_DELETIONBUFFER_BECAUSE =
- "注册 DeletionResource into deletionBuffer-{} 失败,原因:this buffer is closed.";
- public static final String INTERRUPTED_WHEN_WAITING_FOR_ALL_DELETIONS_FLUSHED = "等待所有删除操作刷盘时被中断。";
+ "向 deletionBuffer-{} 注册 DeletionResource 失败,因为该缓冲区已关闭。";
+ public static final String INTERRUPTED_WHEN_WAITING_FOR_ALL_DELETIONS_FLUSHED =
+ "等待所有删除操作刷盘时被中断。";
+ public static final String INTERRUPTED_WHILE_WAITING_FOR_DAL_THREAD_TO_EXIT =
+ "等待 dataRegion {} 的 DAL 线程退出时被中断。";
public static final String INTERRUPTED_WHEN_WAITING_FOR_RESULT = "等待结果时被中断。";
public static final String INTERRUPTED_WHEN_WAITING_FOR_TAKING_DELETIONRESOURCE_FROM =
"等待从阻塞队列中取出 DeletionResource 进行序列化时被中断。";
- public static final String INTERRUPTED_WHEN_WAITING_FOR_TAKING_WALENTRY_FROM =
- "等待从阻塞队列中取出 WALEntry 进行序列化时被中断。";
+ public static final String INTERRUPTED_WHEN_WAITING_FOR_POLLING_DELETIONRESOURCE_FROM =
+ "等待从阻塞队列中轮询 DeletionResource 进行序列化时被中断。";
public static final String INVALID_DELETION_PROGRESS_INDEX = "无效的删除进度索引:";
- public static final String PERSISTTHREAD_DID_NOT_TERMINATE_WITHIN_S = "persistThread 在 {} 秒内未终止";
+ public static final String PERSISTTHREAD_DID_NOT_TERMINATE_WITHIN_S = "持久化线程未在 {} 秒内终止";
public static final String READ_DELETION_FILE_MAGIC_VERSION =
- "读取 deletion file-{} magic version: {}";
- public static final String READ_DELETION_FROM_FILE = "从 file {} 读取 deletion: {}";
+ "读取删除文件 {} 的 magic version:{}";
+ public static final String READ_DELETION_FROM_FILE = "读取删除操作:{},来自文件 {}";
public static final String UNABLE_TO_CREATE_IOTCONSENSUSV2_DELETION_DIR_AT =
- "无法在 {} 创建 iotConsensusV2 删除目录";
+ "无法在 {} 创建 IoTConsensusV2 删除目录";
// ===================== AGENT =====================
public static final String ATTEMPT_TO_REPORT_PIPE_EXCEPTION_TO_A =
- "Attempt to report pipe exception to a null PipeTaskMeta.";
+ "尝试向空 PipeTaskMeta 上报 pipe 异常。";
public static final String CANNOT_PARSE_REBOOT_TIMES_FROM_FILE_SET =
- "无法解析 reboot times from file {}, set the current time in seconds ({}) as the reboot times";
+ "无法从文件 {} 解析重启次数,将当前秒级时间戳({})设为重启次数";
public static final String CANNOT_RECORD_REBOOT_TIMES_TO_FILE_THE =
- "无法记录 reboot times {} to file {}, the reboot times will not be updated";
+ "无法将重启次数 {} 记录到文件 {},重启次数将不会更新";
public static final String CANNOT_START_SIMPLEPROGRESSINDEXASSIGNER_BECAUSE_OF =
- "无法启动 SimpleProgressIndexAssigner because of {}";
+ "无法启动 SimpleProgressIndexAssigner,原因:{}";
public static final String CREATE_PIPE_DN_TASK_SUCCESSFULLY_WITHIN_MS =
- "创建 pipe DN task {} successfully within {} ms";
+ "成功创建 pipe DataNode 任务 {},耗时 {} ms";
public static final String DEREGISTER_SUBTASK_RUNNINGTASKCOUNT_REGISTEREDTASKCOUNT =
- "Deregister subtask {}. runningTaskCount: {}, registeredTaskCount: {}";
+ "注销子任务 {}。runningTaskCount:{},registeredTaskCount:{}";
public static final String DROP_PIPE_DN_TASK_SUCCESSFULLY_WITHIN_MS =
- "Drop pipe DN task {} successfully within {} ms";
+ "成功删除 pipe DataNode 任务 {},耗时 {} ms";
public static final String ERROR_OCCURRED_WHEN_COLLECTING_EVENTS_FROM_PROCESSOR =
- "collecting events from processor 时发生错误";
+ "从 processor 收集事件时发生错误";
public static final String EXCEPTION_IN_PIPE_EVENT_PROCESSING_IGNORED_BECAUSE =
- "pipe event processing, ignored because pipe is dropped.{} 中发生异常";
+ "pipe 事件处理时发生异常,因 pipe 已被删除而忽略。{}";
public static final String EXCEPTION_OCCURRED_WHEN_CLOSING_PIPE_CONNECTOR_SUBTASK =
- "closing pipe connector subtask {}, root cause: {} 时发生异常";
+ "关闭 pipe connector 子任务 {} 时发生异常,根因:{}";
public static final String EXCEPTION_OCCURRED_WHEN_CLOSING_PIPE_PROCESSOR_SUBTASK =
- "closing pipe processor subtask {}, root cause: {} 时发生异常";
+ "关闭 pipe processor 子任务 {} 时发生异常,根因:{}";
public static final String EXCEPTION_OCCURS_WHEN_EXECUTING_PIPE_TASK =
- "executing pipe task: 时发生异常";
+ "执行 pipe 任务时发生异常:";
public static final String FAILED_TO_CHECK_IF_PIPE_HAS_RELEASE =
- "check if pipe has release region related resource with consensus group id: {} 失败。";
+ "检查 pipe 是否已释放共识组 {} 的 region 相关资源失败。";
public static final String FAILED_TO_CLEAR_CLOSE_THE_SCHEMA_REGION =
- "Failed to clear/close the schema region listening queue, because {}. Will wait until "
- + "success or the region's state machine is stopped.";
+ "清理/关闭 schema region 监听队列失败,原因:{}。将等待直到成功或该 region 的状态机停止。";
public static final String FAILED_TO_CLOSE_CONNECTOR_AFTER_FAILED_TO =
- "关闭 connector after failed to initialize connector. Ignore this exception 失败。";
+ "初始化 connector 失败后关闭 connector 失败。忽略此异常。";
public static final String FAILED_TO_CLOSE_LISTENING_QUEUE_FOR_SCHEMAREGION =
- "关闭 listening queue for SchemaRegion 失败";
+ "关闭 SchemaRegion 的监听队列失败";
public static final String FAILED_TO_CLOSE_SOURCE_AFTER_FAILED_TO =
- "关闭 source after failed to initialize source. Ignore this exception 失败。";
+ "初始化 source 失败后关闭 source 失败。忽略此异常。";
public static final String FAILED_TO_CONSTRUCT_PIPECONNECTOR_BECAUSE_OF =
- "构造 PipeConnector 失败,原因:of ";
+ "构造 PipeConnector 失败,原因:";
public static final String FAILED_TO_DECREASE_REFERENCE_COUNT_FOR_EVENT =
- "减少 reference count for event {} in PipeRealtimePriorityBlockingQueue 失败";
+ "减少 PipeRealtimePriorityBlockingQueue 中事件 {} 的引用计数失败";
public static final String FAILED_TO_GET_PENDINGQUEUE_NO_SUCH_SUBTASK =
- "获取 PendingQueue. No such subtask: 失败";
+ "获取 PendingQueue 失败,不存在该子任务:";
public static final String FAILED_TO_GET_PIPE_METAS_WILL_BE =
- "获取 pipe metas, will be synced by configNode later 失败。";
+ "获取 pipe 元数据失败,稍后将由 ConfigNode 同步。";
public static final String FAILED_TO_GET_PIPE_PLUGIN_JAR_FROM =
- "获取 pipe plugin jar from config node 失败。";
+ "从 ConfigNode 获取 pipe 插件 jar 失败。";
public static final String FAILED_TO_GET_PIPE_TASK_META_FROM =
- "获取 pipe task meta from config node. Ignore the exception 失败,原因:config node may not be "
- + "ready yet, and meta will be pushed by config node later.";
+ "从 ConfigNode 获取 pipe 任务元数据失败。忽略此异常,原因:ConfigNode 可能尚未就绪,元数据稍后将由 ConfigNode 推送。";
public static final String FAILED_TO_PERSIST_PROGRESS_INDEX_TO_CONFIGNODE =
- "persist progress index to configNode, status: {} 失败";
+ "向 ConfigNode 持久化进度索引失败,状态:{}";
public static final String FAILURE_WHEN_REGISTER_PIPE_PLUGIN_SKIP_THIS =
- "Failure when register pipe plugin {}. Skip this plugin and continue startup.";
+ "注册 pipe 插件 {} 失败。跳过该插件并继续启动。";
public static final String PIPECONNECTOR = "PipeConnector: ";
public static final String PIPEDATANODETASKBUILDER_FAILED_TO_PARSE_INCLUSION_AND_EXCLUSION =
- "PipeDataNodeTaskBuilder failed to parse 'inclusion' and 'exclusion' parameters: {}";
+ "PipeDataNodeTaskBuilder 解析 'inclusion' 和 'exclusion' 参数失败:{}";
public static final String PIPEDATANODETASKBUILDER_WHEN_INCLUSION_CONTAINS_DATA_DELETE_REALTIME =
- "PipeDataNodeTaskBuilder: When 'inclusion' contains 'data.delete', 'realtime-first' is "
- + "defaulted to 'false' to prevent sync issues after deletion.";
+ "PipeDataNodeTaskBuilder:当 'inclusion' 包含 'data.delete' 时,'realtime-first' 默认设为 "
+ + "'false',以避免删除后的同步问题。";
public static final String PIPEDATANODETASKBUILDER_WHEN_INCLUSION_INCLUDES_DATA_DELETE_REALTIME =
- "PipeDataNodeTaskBuilder: When 'inclusion' includes 'data.delete', 'realtime-first' set "
- + "to 'true' may result in data synchronization issues after deletion.";
+ "PipeDataNodeTaskBuilder:当 'inclusion' 包含 'data.delete' 时,将 'realtime-first' 设为 "
+ + "'true' 可能导致删除后的数据同步问题。";
public static final String PIPEDATANODETASKBUILDER_WHEN_SOURCE_USES_SNAPSHOT_MODEL_REALTIME =
- "PipeDataNodeTaskBuilder: When source uses snapshot model, 'realtime-first' is defaulted "
- + "to 'false' to prevent premature halt before transfer completion.";
+ "PipeDataNodeTaskBuilder:当 source 使用快照模式时,'realtime-first' 默认设为 'false',"
+ + "以避免传输完成前过早停止。";
public static final String PIPEDATANODETASKBUILDER_WHEN_SOURCE_USES_SNAPSHOT_MODEL_REALTIME_1 =
- "PipeDataNodeTaskBuilder: When source uses snapshot model, 'realtime-first' set to "
- + "'true' may cause prevent premature halt before transfer completion.";
+ "PipeDataNodeTaskBuilder:当 source 使用快照模式时,将 'realtime-first' 设为 'true' "
+ + "可能导致传输完成前过早停止。";
public static final String PIPEDATANODETASKBUILDER_WHEN_THE_REALTIME_SYNC_IS_ENABLED =
- "PipeDataNodeTaskBuilder: When the realtime sync is enabled, not enabling the rate "
- + "limiter in sending tsfile may introduce delay for realtime sending.";
+ "PipeDataNodeTaskBuilder:启用实时同步时,如果发送 TsFile 时不启用限流,可能会导致实时发送延迟。";
public static final String PIPEDATANODETASKBUILDER_WHEN_THE_REALTIME_SYNC_IS_ENABLED_1 =
- "PipeDataNodeTaskBuilder: When the realtime sync is enabled, we enable rate limiter in "
- + "sending tsfile by default to reserve disk and network IO for realtime sending.";
+ "PipeDataNodeTaskBuilder:启用实时同步时,默认在发送 TsFile 时启用限流,为实时发送预留磁盘和网络 IO。";
public static final String PIPEEVENTCOLLECTOR_THE_EVENT_IS_ALREADY_RELEASED_SKIPPING =
- "PipeEventCollector: The event {} is already released, skipping it.";
+ "PipeEventCollector:事件 {} 已释放,跳过该事件。";
public static final String PIPE_CONNECTOR_SUBTASK_WAS_CLOSED_WITHIN_MS =
- "Pipe:connector subtask {} ({}) 已关闭 within {} ms";
- public static final String PIPE_META_NOT_FOUND = "Pipe meta not found: ";
+ "Pipe:connector 子任务 {}({})已在 {} ms 内关闭";
+ public static final String PIPE_META_NOT_FOUND = "未找到 Pipe 元数据:";
public static final String PIPE_SINK_SUBTASKS_WITH_ATTRIBUTES_IS_BOUNDED =
- "Pipe sink subtasks with attributes {} is bounded with sinkExecutor {} and "
- + "callbackExecutor {}.";
+ "属性为 {} 的 Pipe sink 子任务已绑定到 sinkExecutor {} 和 callbackExecutor {}。";
public static final String PIPE_SKIPPING_TEMPORARY_TSFILE_WHICH_SHOULDN_T =
- "Pipe skipping temporary TsFile which shouldn't be transferred: {}";
+ "Pipe 跳过不应传输的临时 TsFile:{}";
public static final String PULLED_PIPE_META_FROM_CONFIG_NODE_RECOVERING =
- "Pulled pipe meta from config node: {}, recovering ...";
+ "已从 ConfigNode 拉取 pipe 元数据:{},正在恢复...";
public static final String RECEIVED_PIPE_HEARTBEAT_REQUEST_FROM_CONFIG_NODE =
- "Received pipe heartbeat request {} from config node.";
+ "收到来自 ConfigNode 的 pipe 心跳请求 {}。";
public static final String REGION_NO_TSFILEINSERTIONEVENTS_TO_REPLACE_FOR_SOURCE =
- "Region {}: No TsFileInsertionEvents to replace for source files {}";
+ "Region {}:源文件 {} 没有需要替换的 TsFileInsertionEvent";
public static final String REGION_REPLACED_TSFILEINSERTIONEVENTS_WITH =
- "Region {}: Replaced TsFileInsertionEvents {} with {}";
+ "Region {}:已将 TsFileInsertionEvent {} 替换为 {}";
public static final String REGISTEREDTASKCOUNT_0 = "registeredTaskCount < 0";
public static final String REGISTEREDTASKCOUNT_0_1 = "registeredTaskCount <= 0";
public static final String REGISTER_SUBTASK_RUNNINGTASKCOUNT_REGISTEREDTASKCOUNT =
- "Register subtask {}. runningTaskCount: {}, registeredTaskCount: {}";
+ "注册子任务 {}。runningTaskCount:{},registeredTaskCount:{}";
public static final String REPORT_PIPERUNTIMEEXCEPTION_TO_LOCAL_PIPETASKMETA_EXCEPTION_MESSAGE =
- "Report PipeRuntimeException to local PipeTaskMeta({}), exception message: {}";
+ "向本地 PipeTaskMeta({}) 上报 PipeRuntimeException,异常消息:{}";
public static final String RUNNINGTASKCOUNT_0 = "runningTaskCount < 0";
public static final String RUNNINGTASKCOUNT_0_1 = "runningTaskCount <= 0";
public static final String SIMPLEPROGRESSINDEXASSIGNER_STARTED_SUCCESSFULLY_ISSIMPLECONSENSUSENABLE_R =
- "SimpleProgressIndexAssigner started successfully. isSimpleConsensusEnable: {}, "
- + "rebootTimes: {}";
+ "SimpleProgressIndexAssigner 启动成功。isSimpleConsensusEnable:{},rebootTimes:{}";
public static final String STARTING_SIMPLEPROGRESSINDEXASSIGNER =
- "Starting SimpleProgressIndexAssigner ...";
+ "正在启动 SimpleProgressIndexAssigner ...";
public static final String START_PIPE_DN_TASK_SUCCESSFULLY_WITHIN_MS =
- "Start pipe DN task {} successfully within {} ms";
+ "成功启动 pipe DataNode 任务 {},耗时 {} ms";
public static final String START_SUBTASK_RUNNINGTASKCOUNT_REGISTEREDTASKCOUNT =
- "Start subtask {}. runningTaskCount: {}, registeredTaskCount: {}";
+ "启动子任务 {}。runningTaskCount:{},registeredTaskCount:{}";
public static final String STOP_PIPE_DN_TASK_SUCCESSFULLY_WITHIN_MS =
- "Stop pipe DN task {} successfully within {} ms";
+ "成功停止 pipe DataNode 任务 {},耗时 {} ms";
public static final String STOP_SUBTASK_RUNNINGTASKCOUNT_REGISTEREDTASKCOUNT =
- "Stop subtask {}. runningTaskCount: {}, registeredTaskCount: {}";
+ "停止子任务 {}。runningTaskCount:{},registeredTaskCount:{}";
public static final String SUBTASK_IS_CLOSED_IGNORE_EXCEPTION =
- "subtask {} 已关闭, ignore exception";
- public static final String SUBTASK_WORKER_IS_INTERRUPTED = "subtask worker is interrupted";
+ "子任务 {} 已关闭,忽略异常";
+ public static final String SUBTASK_WORKER_IS_INTERRUPTED = "子任务 worker 被中断";
public static final String SUCCESSFULLY_PERSISTED_ALL_PIPE_S_INFO_TO =
- "成功 persisted all pipe's info to configNode。";
+ "已成功将所有 pipe 信息持久化到 ConfigNode。";
public static final String THE_EXECUTOR_AND_HAS_BEEN_SUCCESSFULLY_SHUTDOWN =
- "The executor {} and {} has been successfully shutdown.";
+ "执行器 {} 和 {} 已成功关闭。";
// ===================== EVENT =====================
public static final String DATABASENAMEFROMDATAREGION_IS_NULL = "databaseNameFromDataRegion 为空";
public static final String DECREASE_REFERENCE_COUNT_ERROR = "减少引用计数出错。";
public static final String DECREASE_REFERENCE_COUNT_FOR_MTREE_SNAPSHOT_OR =
- "Decrease reference count for mTree snapshot {} or tLog {} or attribute snapshot {} 出错。";
+ "减少 mTree 快照 {}、tLog {} 或属性快照 {} 的引用计数出错。";
public static final String DECREASE_REFERENCE_COUNT_FOR_TSFILE_ERROR =
- "Decrease reference count for TsFile {} 出错。";
+ "减少 TsFile {} 的引用计数出错。";
public static final String DO_NOT_HAS_A_COMPLETE_PAGE_BODY =
- "do not has a complete page body. Expected:";
+ "没有完整的 page body。期望:";
public static final String ERROR_WHILE_PARSING_TSFILE_INSERTION_EVENT =
- "Error while parsing tsfile insertion event";
+ "解析 TsFile 插入事件时出错";
public static final String EXCEPTION_OCCURRED_WHEN_DETERMINING_THE_EVENT_TIME =
- "determining the event time of PipeInsertNodeTabletInsertionEvent({}) overlaps with the "
- + "time range: [{}, {}]. Returning true to ensure data integrity 时发生异常";
+ "判断 PipeInsertNodeTabletInsertionEvent({}) 的事件时间是否与时间范围 [{}, {}] 重叠时发生异常。"
+ + "为保证数据完整性,将返回 true";
public static final String FAILED_TO_ALLOCATE_MEMORY_FOR_PARSING_TSFILE =
- "{}: failed to allocate memory for parsing TsFile {}, tablet event no. {}, retry count "
- + "is {}, will keep retrying.";
+ "{}:为解析 TsFile {} 分配内存失败,tablet event 序号 {},重试次数 {},将继续重试。";
public static final String FAILED_TO_BUILD_TABLET = "构建 tablet 失败";
- public static final String FAILED_TO_CHECK_NEXT = "check next 失败";
+ public static final String FAILED_TO_CHECK_NEXT = "检查 next 失败";
public static final String FAILED_TO_CLOSE_TSFILEREADER = "关闭 TsFileReader 失败";
public static final String FAILED_TO_CLOSE_TSFILESEQUENCEREADER = "关闭 TsFileSequenceReader 失败";
public static final String FAILED_TO_CREATE_TSFILEINSERTIONDATATABLETITERATOR =
"创建 TsFileInsertionDataTabletIterator 失败";
public static final String FAILED_TO_GET_NEXT_TABLET_INSERTION_EVENT =
- "获取 next tablet insertion event 失败。";
+ "获取下一个 tablet 插入事件失败。";
public static final String FAILED_TO_LOAD_MODIFICATIONS_FROM_TSFILE =
- "加载 modifications from TsFile: 失败";
+ "从 TsFile 加载 modifications 失败:";
public static final String FAILED_TO_READ_METADATA_FOR_DEVICEID_MEASUREMENT =
- "读取 metadata for deviceId: {}, measurement: {}, removing 失败";
+ "读取 deviceId:{}、measurement:{} 的元数据失败,正在移除";
public static final String FAILED_TO_RECORD_PARSE_END_TIME_FOR =
- "记录 parse end time for pipe {} 失败";
+ "记录 pipe {} 的解析结束时间失败";
public static final String FAILED_TO_RECORD_TABLET_METRICS_FOR_PIPE =
- "记录 tablet metrics for pipe {} 失败";
- public static final String FOUND_NULL_DEVICEID_REMOVING_ENTRY =
- "Found null deviceId, removing entry";
- public static final String INITIALIZE_DATA_CONTAINER_ERROR = "Initialize data container 出错。";
+ "记录 pipe {} 的 tablet 指标失败";
+ public static final String FOUND_NULL_DEVICEID_REMOVING_ENTRY = "发现空 deviceId,正在移除条目";
+ public static final String INITIALIZE_DATA_CONTAINER_ERROR = "初始化数据容器出错。";
public static final String INSERTNODE_HAS_BEEN_RELEASED = "InsertNode 已被释放";
public static final String INSERTROWNODE_IS_PARSED_TO_ZERO_ROWS_ACCORDING =
- "InsertRowNode({}) is parsed to zero rows according to the pattern({}) and time range "
- + "[{}, {}], the corresponding source event({}) will be ignored.";
+ "InsertRowNode({}) 根据 pattern({}) 和时间范围 [{}, {}] 被解析为 0 行,对应的源事件 ({}) 将被忽略。";
public static final String INSERTTABLETNODE_IS_PARSED_TO_ZERO_ROWS_ACCORDING =
- "InsertTabletNode({}) is parsed to zero rows according to the pattern({}) and time range "
- + "[{}, {}], the corresponding source event({}) will be ignored.";
- public static final String INVALID_EVENT_TYPE = "无效的 event type: ";
- public static final String INVALID_INPUT = "无效的 input: ";
+ "InsertTabletNode({}) 根据 pattern({}) 和时间范围 [{}, {}] 被解析为 0 行,对应的源事件 ({}) 将被忽略。";
+ public static final String INVALID_EVENT_TYPE = "无效的事件类型:";
+ public static final String INVALID_INPUT = "无效的输入:";
public static final String ISGENERATEDBYPIPE_IS_NOT_SUPPORTED =
- "isGeneratedByPipe() is not supported!";
+ "不支持 isGeneratedByPipe()!";
public static final String MAYEVENTPATHSOVERLAPPEDWITHPATTERN_IS_NOT_SUPPORTED =
- "mayEventPathsOverlappedWithPattern() is not supported!";
+ "不支持 mayEventPathsOverlappedWithPattern()!";
public static final String MAYEVENTTIMEOVERLAPPEDWITHTIMERANGE_IS_NOT_SUPPORTED =
- "mayEventTimeOverlappedWithTimeRange() is not supported!";
+ "不支持 mayEventTimeOverlappedWithTimeRange()!";
public static final String NO_COMMIT_IDS_FOUND_IN_PIPECOMPACTEDTSFILEINSERTIONEVENT =
- "No commit IDs found in PipeCompactedTsFileInsertionEvent.";
+ "PipeCompactedTsFileInsertionEvent 中未找到 commit ID。";
public static final String PIPECOMPACTEDTSFILEINSERTIONEVENT_DOES_NOT_SUPPORT_EQUALSINIOTCONSENSUSV2 =
"PipeCompactedTsFileInsertionEvent 不支持 equalsInIoTConsensusV2.";
public static final String PIPECOMPACTEDTSFILEINSERTIONEVENT_DOES_NOT_SUPPORT_GETREBOOTTIMES =
"PipeCompactedTsFileInsertionEvent 不支持 getRebootTimes.";
public static final String PIPE_FAILED_TO_GET_DEVICES_FROM_TSFILE =
- "Pipe {}:获取 devices from TsFile {}, extract it anyway 失败";
+ "Pipe {}:从 TsFile {} 获取 device 失败,仍将继续提取";
public static final String PIPE_SKIPPING_TEMPORARY_TSFILE_S_PARSING_WHICH =
- "Pipe skipping temporary TsFile's parsing which shouldn't be transferred: {}";
- public static final String ROW_CAN_NOT_BE_CUSTOMIZED = "Row can not be customized";
+ "Pipe 跳过不应传输的临时 TsFile 解析:{}";
+ public static final String ROW_CAN_NOT_BE_CUSTOMIZED = "Row 不能被自定义";
public static final String SHALLOWCOPYSELFANDBINDPIPETASKMETAFORPROGRESSREPORT_IS_NOT_SUPPORTED =
- "shallowCopySelfAndBindPipeTaskMetaForProgressReport() is not supported!";
+ "不支持 shallowCopySelfAndBindPipeTaskMetaForProgressReport()!";
public static final String SKIPPING_TEMPORARY_TSFILE_S_PROGRESSINDEX_WILL_REPORT =
- "跳过 temporary TsFile {}'s progressIndex, will report MinimumProgressIndex";
+ "跳过临时 TsFile {} 的 progressIndex,将上报 MinimumProgressIndex";
public static final String TABLEPATTERNPARSER_DOES_NOT_SUPPORT_ROW_BY_ROW =
- "TablePatternParser 不支持 row by row processing";
+ "TablePatternParser 不支持逐行处理";
public static final String TABLEPATTERNPARSER_DOES_NOT_SUPPORT_TABLET_PROCESSING =
"TablePatternParser 不支持 tablet processing";
public static final String TABLEPATTERNPARSER_DOES_NOT_SUPPORT_TABLET_PROCESSING_WITH =
- "TablePatternParser 不支持 tablet processing with collect";
+ "TablePatternParser 不支持带 collect 的 tablet processing";
public static final String TABLET_IS_PARSED_TO_ZERO_ROWS_ACCORDING =
- "Tablet({}) is parsed to zero rows according to the pattern({}) and time range [{}, {}], "
- + "the corresponding source event({}) will be ignored.";
+ "Tablet({}) 根据 pattern({}) 和时间范围 [{}, {}] 被解析为 0 行,对应的源事件 ({}) 将被忽略。";
public static final String TABLE_MODEL_TSFILE_PARSING_DOES_NOT_SUPPORT =
- "Table model tsfile parsing 不支持 this type of ChunkMeta";
+ "表模型 TsFile 解析不支持此类 ChunkMeta";
public static final String TEMPORARY_TSFILE_DETECTED_WILL_SKIP_ITS_TRANSFER =
- "Temporary tsFile {} detected, will skip its transfer.";
+ "检测到临时 TsFile {},将跳过传输。";
public static final String TSFILE_HAS_INITIALIZED_PIPENAME_CREATION_TIME_PATTERN =
- "TsFile {} has initialized {}, pipeName: {}, creation time: {}, pattern: {}, startTime: "
- + "{}, endTime: {}, withMod: {}";
+ "TsFile {} 已初始化 {},pipeName:{},创建时间:{},pattern:{},startTime:{},endTime:{},withMod:{}";
public static final String UNCOMPRESS_ERROR_UNCOMPRESS_SIZE =
- "Uncompress error! uncompress size: ";
+ "解压出错!解压大小:";
public static final String UNSUPPORTED = "不支持";
- public static final String UNSUPPORTED_NODE_TYPE = "不支持的 node type ";
+ public static final String UNSUPPORTED_NODE_TYPE = "不支持的节点类型 ";
public static final String WAIT_FOR_MEMORY_ENOUGH_FOR_PARSING_FOR =
- "等待 memory enough,已等待 parsing {} for {} 秒。";
+ "等待内存充足以解析 {},已等待 {} 秒。";
// ===================== PROCESSOR =====================
public static final String ABSTRACTSAMETYPENUMERICOPERATOR_DOES_NOT_SUPPORT_BINARY_INPUT =
- "AbstractSameTypeNumericOperator 不支持 binary input";
+ "AbstractSameTypeNumericOperator 不支持 binary 输入";
public static final String ABSTRACTSAMETYPENUMERICOPERATOR_DOES_NOT_SUPPORT_BOOLEAN_INPUT =
- "AbstractSameTypeNumericOperator 不支持 boolean input";
+ "AbstractSameTypeNumericOperator 不支持 boolean 输入";
public static final String ABSTRACTSAMETYPENUMERICOPERATOR_DOES_NOT_SUPPORT_DATE_INPUT =
- "AbstractSameTypeNumericOperator 不支持 date input";
+ "AbstractSameTypeNumericOperator 不支持 date 输入";
public static final String ABSTRACTSAMETYPENUMERICOPERATOR_DOES_NOT_SUPPORT_STRING_INPUT =
- "AbstractSameTypeNumericOperator 不支持 string input";
+ "AbstractSameTypeNumericOperator 不支持 string 输入";
public static final String CHANGINGVALUESAMPLINGPROCESSOR_IN_IS_INITIALIZED_WITH =
- "ChangingValueSamplingProcessor in {} is initialized with {}: {}, {}: {}, {}: {}.";
+ "{} 中的 ChangingValueSamplingProcessor 已初始化,参数为 {}:{},{}:{},{}:{}。";
public static final String CLEAN_OUTDATED_INCOMPLETE_COMBINER_PIPENAME_CREATIONTIME_COMBINEID =
- "清理 outdated incomplete combiner: pipeName={}, creationTime={}, combineId={}";
+ "清理过期且未完成的 combiner:pipeName={},creationTime={},combineId={}";
public static final String COMBINEHANDLER_NOT_FOUND_FOR_PIPEID =
- "CombineHandler not found for pipeId = ";
+ "未找到 CombineHandler,pipeId = ";
public static final String COMBINER_COMBINE_COMPLETED_REGIONID_STATE_RECEIVEDREGIONIDSET_EX =
- "Combiner combine completed: regionId: {}, state: {}, receivedRegionIdSet: {}, "
- + "expectedRegionIdSet: {}";
+ "Combiner combine 已完成:regionId:{},state:{},receivedRegionIdSet:{},expectedRegionIdSet:{}";
public static final String COMBINER_COMBINE_REGIONID_STATE_RECEIVEDREGIONIDSET_EXPECTEDREGI =
- "Combiner combine: regionId: {}, state: {}, receivedRegionIdSet: {}, expectedRegionIdSet: {}";
+ "Combiner combine:regionId:{},state:{},receivedRegionIdSet:{},expectedRegionIdSet:{}";
public static final String DATA_NODES_ENDPOINTS_FOR_TWO_STAGE_AGGREGATION =
- "Data nodes' endpoints for two-stage aggregation: {}";
+ "两阶段聚合的 DataNode 端点:{}";
public static final String DIFFERENT_DATA_TYPE_ENCOUNTERED_IN_ONE_WINDOW =
- "Different data type encountered in one window, will purge. Previous type: {}, now type: {}";
+ "一个窗口中遇到不同数据类型,将清除该窗口。之前类型:{},当前类型:{}";
public static final String ENCOUNTERED_EXCEPTION_WHEN_DESERIALIZING_FROM_PIPETASKMETA =
- "Encountered exception when deserializing from PipeTaskMeta";
+ "从 PipeTaskMeta 反序列化时遇到异常";
public static final String END_POINTS_FOR_TWO_STAGE_AGGREGATION_PIPE =
- "End points for two-stage aggregation pipe (pipeName={}, creationTime={}) were updated to {}";
+ "两阶段聚合 pipe(pipeName={},creationTime={})的端点已更新为 {}";
public static final String ERROR_OCCURRED_WHEN_CLOSING_COMBINEHANDLER_ID =
"closing CombineHandler(id = {}) 时发生错误";
- public static final String ERROR_OCCURS_WHEN_RECEIVING_REQUEST = "receiving request: {} 时发生错误";
+ public static final String ERROR_OCCURS_WHEN_RECEIVING_REQUEST = "接收请求 {} 时发生错误";
public static final String FAILED_TO_CLOSE_IOTDBSYNCCLIENT = "关闭 IoTDBSyncClient 失败";
- public static final String FAILED_TO_CLOSE_OLD_IOTDBSYNCCLIENT = "关闭 old IoTDBSyncClient 失败";
- public static final String FAILED_TO_COMBINE_COUNT = "combine count: 失败";
+ public static final String FAILED_TO_CLOSE_OLD_IOTDBSYNCCLIENT = "关闭旧 IoTDBSyncClient 失败";
+ public static final String FAILED_TO_COMBINE_COUNT = "合并 count 失败:";
public static final String FAILED_TO_CONSTRUCT_IOTDBSYNCCLIENT = "构造 IoTDBSyncClient 失败";
- public static final String FAILED_TO_FETCH_COMBINE_RESULT = "获取 combine result: 失败";
- public static final String FAILED_TO_FETCH_DATA_NODES = "获取 data nodes 失败";
- public static final String FAILED_TO_FETCH_DATA_REGION_IDS = "获取 data region ids 失败";
+ public static final String FAILED_TO_FETCH_COMBINE_RESULT = "获取 combine 结果失败:";
+ public static final String FAILED_TO_FETCH_DATA_NODES = "获取 DataNode 失败";
+ public static final String FAILED_TO_FETCH_DATA_REGION_IDS = "获取 data region ID 失败";
public static final String FAILED_TO_RECONSTRUCT_IOTDBSYNCCLIENT_AFTER_FAILURE_TO =
- "reconstruct IoTDBSyncClient {} after failure to send request {} (watermark = {}) 失败";
+ "重建 IoTDBSyncClient {} 失败,之前发送请求 {}(watermark = {})失败";
public static final String FAILED_TO_SEND_REQUEST_WATERMARK_TO =
- "发送 request {} (watermark = {}) to {} 失败";
+ "发送请求 {}(watermark = {})到 {} 失败";
public static final String FAILED_TO_TRIGGER_COMBINE_WATERMARK_COUNT_PROGRESSINDEX =
- "trigger combine. watermark={}, count={}, progressIndex={} 失败";
+ "触发 combine 失败。watermark={},count={},progressIndex={}";
public static final String FAILURE_OCCURRED_WHEN_TRYING_TO_COMMIT_PROGRESS =
- "Failure occurred when trying to commit progress index. timestamp={}, count={}, "
- + "progressIndex={}";
- public static final String FETCHED_DATA_REGION_IDS_AT = "Fetched data region ids {} at {}";
+ "提交进度索引时失败。timestamp={},count={},progressIndex={}";
+ public static final String FETCHED_DATA_REGION_IDS_AT = "已获取 data region ID {},时间:{}";
public static final String FRACTIONPOWEREDSUMOPERATOR_DOES_NOT_SUPPORT_BINARY_INPUT =
- "FractionPoweredSumOperator 不支持 binary input";
+ "FractionPoweredSumOperator 不支持 binary 输入";
public static final String FRACTIONPOWEREDSUMOPERATOR_DOES_NOT_SUPPORT_BOOLEAN_INPUT =
- "FractionPoweredSumOperator 不支持 boolean input";
+ "FractionPoweredSumOperator 不支持 boolean 输入";
public static final String FRACTIONPOWEREDSUMOPERATOR_DOES_NOT_SUPPORT_DATE_INPUT =
- "FractionPoweredSumOperator 不支持 date input";
+ "FractionPoweredSumOperator 不支持 date 输入";
public static final String FRACTIONPOWEREDSUMOPERATOR_DOES_NOT_SUPPORT_STRING_INPUT =
- "FractionPoweredSumOperator 不支持 string input";
+ "FractionPoweredSumOperator 不支持 string 输入";
public static final String GLOBAL_COUNT_IS_LESS_THAN_THE_LAST =
- "Global count is less than the last collected count: timestamp={}, count={}";
+ "全局 count 小于上次收集的 count:timestamp={},count={}";
public static final String IGNORED_TABLETINSERTIONEVENT_IS_NOT_AN_INSTANCE_OF =
- "已忽略 TabletInsertionEvent is not an instance of PipeInsertNodeTabletInsertionEvent or "
- + "PipeRawTabletInsertionEvent: {}";
+ "已忽略 TabletInsertionEvent,因为它不是 PipeInsertNodeTabletInsertionEvent 或 "
+ + "PipeRawTabletInsertionEvent 的实例:{}";
public static final String IGNORED_TSFILEINSERTIONEVENT_IS_EMPTY =
- "Ignored TsFileInsertionEvent 为空: {}";
+ "已忽略空 TsFileInsertionEvent:{}";
public static final String IGNORED_TSFILEINSERTIONEVENT_IS_NOT_AN_INSTANCE_OF =
- "已忽略 TsFileInsertionEvent is not an instance of PipeTsFileInsertionEvent: {}";
- public static final String ILLEGAL_OUTPUT_SERIES_PATH = "非法的 output series path: ";
- public static final String NO_DATA_NODES_ENDPOINTS_FETCHED = "No data nodes' endpoints fetched";
+ "已忽略 TsFileInsertionEvent,因为它不是 PipeTsFileInsertionEvent 的实例:{}";
+ public static final String ILLEGAL_OUTPUT_SERIES_PATH = "非法的输出序列路径:";
+ public static final String NO_DATA_NODES_ENDPOINTS_FETCHED = "未获取到 DataNode 端点";
public static final String NO_EXPECTED_REGION_ID_SET_FETCHED =
- "No expected region id set fetched";
+ "未获取到期望的 region ID 集合";
public static final String PARTIALPATHLASTOBJECTCACHE_ALLOCATEDMEMORYBLOCK_HAS_EXPANDED_FROM_TO =
- "PartialPathLastObjectCache.allocatedMemoryBlock has expanded from {} to {}.";
+ "PartialPathLastObjectCache.allocatedMemoryBlock 已从 {} 扩展到 {}。";
public static final String PARTIALPATHLASTOBJECTCACHE_ALLOCATEDMEMORYBLOCK_HAS_SHRUNK_FROM_TO =
- "PartialPathLastObjectCache.allocatedMemoryBlock has shrunk from {} to {}.";
- public static final String SENDING_REQUEST_WATERMARK_TO = "正在发送 request {} (watermark = {}) 到 {}";
+ "PartialPathLastObjectCache.allocatedMemoryBlock 已从 {} 收缩到 {}。";
+ public static final String SENDING_REQUEST_WATERMARK_TO = "正在发送请求 {}(watermark = {})到 {}";
public static final String SWINGINGDOORTRENDINGSAMPLINGPROCESSOR_IN_IS_INITIALIZED_WITH =
- "SwingingDoorTrendingSamplingProcessor in {} is initialized with {}: {}, {}: {}, {}: {}.";
+ "{} 中的 SwingingDoorTrendingSamplingProcessor 已初始化,参数为 {}:{},{}:{},{}:{}。";
public static final String THE_ABSTRACT_FORMAL_PROCESSOR_DOES_NOT_SUPPORT = "抽象形式处理器不支持处理事件";
public static final String TUMBLINGTIMESAMPLINGPROCESSOR_IN_IS_INITIALIZED_WITH_S =
- "TumblingTimeSamplingProcessor in {} is initialized with {}: {}s, {}: {}, {}: {}.";
+ "{} 中的 TumblingTimeSamplingProcessor 已初始化,参数为 {}:{}s,{}:{},{}:{}。";
public static final String TWOSTAGECOUNTPROCESSOR_CUSTOMIZED_BY_THREAD_PIPENAME_CREATIONTIME_RE =
- "TwoStageCountProcessor customized by thread {}: pipeName={}, creationTime={}, "
- + "regionId={}, outputSeries={}, localCommitProgressIndex={}, localCount={}";
+ "TwoStageCountProcessor 已由线程 {} 自定义:pipeName={},creationTime={},"
+ + "regionId={},outputSeries={},localCommitProgressIndex={},localCount={}";
public static final String TWO_STAGE_AGGREGATE_PIPE_PIPENAME_CREATIONTIME_RELATED =
- "Two stage aggregate pipe (pipeName={}, creationTime={}) related region ids {}";
+ "两阶段聚合 pipe(pipeName={},creationTime={})相关的 region ID:{}";
public static final String TWO_STAGE_AGGREGATE_RECEIVER_IS_EXITING =
- "Two stage aggregate receiver is exiting.";
+ "两阶段聚合接收器正在退出。";
public static final String TWO_STAGE_COMBINE_REGION_ID_COMBINE_ID =
- "Two stage combine (region id = {}, combine id = {}) incomplete: timestamp={}, count={}, "
- + "progressIndex={}";
+ "两阶段 combine(region id = {},combine id = {})未完成:timestamp={},count={},progressIndex={}";
public static final String TWO_STAGE_COMBINE_REGION_ID_COMBINE_ID_1 =
- "Two stage combine (region id = {}, combine id = {}) outdated: timestamp={}, count={}, "
- + "progressIndex={}";
+ "两阶段 combine(region id = {},combine id = {})已过期:timestamp={},count={},progressIndex={}";
public static final String TWO_STAGE_COMBINE_REGION_ID_COMBINE_ID_2 =
- "Two stage combine (region id = {}, combine id = {}) success: timestamp={}, count={}, "
- + "progressIndex={}, committed progressIndex={}";
- public static final String UNEXPECTED_STATE_CLASS = "Unexpected state class: ";
- public static final String UNKNOWN_COMBINE_RESULT_TYPE = "未知的 combine result type: ";
- public static final String UNKNOWN_REQUEST_TYPE = "未知的 request type {}: {}。";
+ "两阶段 combine(region id = {},combine id = {})成功:timestamp={},count={},"
+ + "progressIndex={},已提交 progressIndex={}";
+ public static final String UNEXPECTED_STATE_CLASS = "意外的状态类:";
+ public static final String UNKNOWN_COMBINE_RESULT_TYPE = "未知的 combine 结果类型:";
+ public static final String UNKNOWN_REQUEST_TYPE = "未知的请求类型 {}:{}。";
// ===================== SOURCE =====================
public static final String ALL_DATA_IN_TSFILEEPOCH_WAS_EXTRACTED =
- "All data in TsFileEpoch {} 已提取";
- public static final String BUFFERSIZE_MUST_BE_A_POWER_OF_2 = "bufferSize must be a power of 2";
+ "TsFileEpoch {} 中的所有数据均已提取";
+ public static final String BUFFERSIZE_MUST_BE_A_POWER_OF_2 = "bufferSize 必须是 2 的幂";
public static final String BUFFERSIZE_MUST_NOT_BE_LESS_THAN_1 =
- "bufferSize must not be less than 1";
+ "bufferSize 不能小于 1";
public static final String CAPTURE_TREE_AND_CAPTURE_TABLE_CAN_NOT =
"capture.tree 和 capture.table 不能同时设为 false";
public static final String DATABASE_NAME_IS_NULL_WHEN_MATCHING_SOURCES =
- "匹配表模型事件的 source 时数据库名称为空。";
+ "匹配表模型事件的 source 时数据库名为空。";
public static final String DATA_REGION_INJECTED_WATERMARK_EVENT_WITH_TIMESTAMP =
- "Data region {}: Injected watermark event with timestamp: {}";
+ "Data region {}:已注入时间戳为 {} 的水印事件";
public static final String DISCARD_TABLET_EVENT_BECAUSE_IT_IS_NOT =
- "Discard tablet event {} because it is not reliable anymore. Change the state of "
- + "TsFileEpoch to USING_BOTH.";
- public static final String DISRUPTOR_ALREADY_STARTED = "Disruptor already started";
+ "丢弃 tablet 事件 {},因为该事件已不再可靠。将 TsFileEpoch 的状态改为 USING_BOTH。";
+ public static final String DISRUPTOR_ALREADY_STARTED = "Disruptor 已启动";
public static final String DISRUPTOR_SHUTDOWN_COMPLETED = "Disruptor 关闭完成";
public static final String DISRUPTOR_STARTED_WITH_BUFFER_SIZE = "Disruptor 已启动,缓冲区大小:{}";
public static final String EXCEPTION_DURING_ONSHUTDOWN = "onShutdown() 期间发生异常";
public static final String EXCEPTION_DURING_ONSTART = "onStart() 期间发生异常";
public static final String EXCEPTION_ENCOUNTERED_WHEN_TRIGGERING_SCHEMA_REGION_SNAPSHOT =
- "Exception encountered when triggering schema region snapshot.";
+ "触发 schema region 快照时遇到异常。";
public static final String EXCEPTION_PROCESSING = "处理时发生异常:{} {}";
- public static final String FAILED_TO_LOAD_SNAPSHOT = "加载 snapshot {} 失败";
+ public static final String FAILED_TO_LOAD_SNAPSHOT = "加载快照 {} 失败";
public static final String FAILED_TO_LOAD_SNAPSHOT_FROM_BYTEBUFFER =
- "加载 snapshot from byteBuffer {} 失败。";
- public static final String FAILED_TO_START_SOURCES = "启动 sources 失败。";
+ "从 ByteBuffer {} 加载快照失败。";
+ public static final String FAILED_TO_START_SOURCES = "启动 source 失败。";
public static final String HEARTBEAT_EVENT_CAN_NOT_BE_SUPPLIED_BECAUSE =
- "Heartbeat Event {} can not be supplied because the reference count can not be increased";
+ "无法提供心跳事件 {},因为无法增加引用计数";
public static final String INTERRUPTED_WAITING_FOR_PROCESSOR_TO_STOP =
- "Interrupted waiting for processor to stop";
+ "等待 processor 停止时被中断";
public static final String IOTDBSCHEMAREGIONSOURCE_DOES_NOT_SUPPORT_TRANSFERRING_EVENTS_UNDER =
- "IoTDBSchemaRegionSource 不支持 transferring events under simple consensus";
- public static final String NOT_HAS_PRIVILEGE_TO_TRANSFER_EVENT = "没有权限 transfer event: ";
+ "IoTDBSchemaRegionSource 不支持在 simple consensus 下传输事件";
+ public static final String NOT_HAS_PRIVILEGE_TO_TRANSFER_EVENT = "没有权限传输事件:";
public static final String NOT_HAS_PRIVILEGE_TO_TRANSFER_PLAN = "没有权限传输计划:";
- public static final String NO_EVENT_HANDLER_CONFIGURED = "No event handler configured";
- public static final String N_MUST_BE_0 = "n must be > 0";
+ public static final String NO_EVENT_HANDLER_CONFIGURED = "未配置事件处理器";
+ public static final String N_MUST_BE_0 = "n 必须大于 0";
public static final String PIPEREALTIMEDATAREGIONEXTRACTOR_OBSERVED_DATA_REGION_TIME_PARTITION_GROWT =
- "PipeRealtimeDataRegionExtractor({}) observed data region {} time partition growth, "
- + "recording time partition id bound: {}.";
+ "PipeRealtimeDataRegionExtractor({}) 观察到 data region {} 的时间分区增长,记录时间分区 ID 边界:{}。";
public static final String PIPE_AND_IS_NOT_SET_USE_HYBRID =
- "Pipe:'{}' ('{}') and '{}' ('{}') is not set, use hybrid mode by default.";
+ "Pipe:未设置 '{}'('{}')和 '{}'('{}'),默认使用 hybrid 模式。";
public static final String PIPE_ASSIGNER_ON_DATA_REGION_SHUTDOWN_INTERNAL =
- "Pipe:Assigner on data region {} shutdown internal disruptor within {} ms";
+ "Pipe:data region {} 上的 assigner 已在 {} ms 内关闭内部 disruptor";
public static final String PIPE_FAILED_TO_GET_DEVICES_FROM_TSFILE_1 =
- "Pipe {}@{}:获取 devices from TsFile {}, extract it anyway 失败";
+ "Pipe {}@{}:从 TsFile {} 获取 device 失败,仍将继续提取";
public static final String PIPE_FAILED_TO_INCREASE_REFERENCE_COUNT_FOR =
- "Pipe {}@{}:增加 reference count for historical deletion event {}, will discard it 失败";
+ "Pipe {}@{}:增加历史删除事件 {} 的引用计数失败,将丢弃该事件";
public static final String PIPE_FAILED_TO_INCREASE_REFERENCE_COUNT_FOR_1 =
- "Pipe {}@{}:增加 reference count for historical tsfile event {}, will discard it 失败";
+ "Pipe {}@{}:增加历史 TsFile 事件 {} 的引用计数失败,将丢弃该事件";
public static final String PIPE_FAILED_TO_INCREASE_REFERENCE_COUNT_FOR_2 =
- "Pipe {}@{}:增加 reference count for terminate event, will resend it 失败";
+ "Pipe {}@{}:增加终止事件的引用计数失败,将重新发送该事件";
public static final String PIPE_FAILED_TO_PIN_TSFILERESOURCE = "Pipe:固定 TsFileResource {} 失败";
public static final String PIPE_FAILED_TO_START_TO_EXTRACT_HISTORICAL =
- "Pipe {}@{}:启动 to extract historical TsFile, storage engine is not ready. Will retry "
- + "later 失败。";
+ "Pipe {}@{}:启动历史 TsFile 提取失败,存储引擎尚未就绪。稍后将重试。";
public static final String PIPE_FAILED_TO_UNPIN_SKIPPED_HISTORICAL_TSFILERESOURCE =
- "Pipe {}@{}:unpin skipped historical TsFileResource, original path: {} 失败";
+ "Pipe {}@{}:取消固定已跳过的历史 TsFileResource 失败,原始路径:{}";
public static final String PIPE_FAILED_TO_UNPIN_TSFILERESOURCE_AFTER_CREATING =
- "Pipe {}@{}:unpin TsFileResource after creating event, original path: {} 失败";
+ "Pipe {}@{}:创建事件后取消固定 TsFileResource 失败,原始路径:{}";
public static final String PIPE_FAILED_TO_UNPIN_TSFILERESOURCE_AFTER_DROPPING =
- "Pipe {}@{}:unpin TsFileResource after dropping pipe, original path: {} 失败";
+ "Pipe {}@{}:删除 pipe 后取消固定 TsFileResource 失败,原始路径:{}";
public static final String PIPE_FINISH_TO_EXTRACT_DELETIONS_EXTRACT_DELETIONS =
- "Pipe {}@{}:finish to extract deletions, extract deletions count {}/{}, took {} ms";
+ "Pipe {}@{}:删除操作提取完成,已提取删除操作数 {}/{},耗时 {} ms";
public static final String PIPE_FINISH_TO_EXTRACT_HISTORICAL_TSFILE_EXTRACTED =
- "Pipe {}@{}:finish to extract historical TsFile, extracted sequence file count {}/{}, "
- + "extracted unsequence file count {}/{}, extracted file count {}/{}, took {} ms";
+ "Pipe {}@{}:历史 TsFile 提取完成,已提取顺序文件数 {}/{},已提取乱序文件数 {}/{},"
+ + "已提取文件总数 {}/{},耗时 {} ms";
public static final String PIPE_FINISH_TO_SORT_ALL_EXTRACTED_RESOURCES =
- "Pipe {}@{}:finish to sort all extracted resources, took {} ms";
+ "Pipe {}@{}:所有已提取资源排序完成,耗时 {} ms";
public static final String PIPE_HISTORICAL_DATA_EXTRACTION_TIME_RANGE_START =
- "Pipe {}@{}:historical data extraction time range, start time {}({}), end time {}({}), "
- + "sloppy pattern {}, sloppy time range {}, should transfer mod file {}, username: {}, "
- + "skip if no privileges: {}, is forwarding pipe requests: {}";
+ "Pipe {}@{}:历史数据提取时间范围,开始时间 {}({}),结束时间 {}({}),sloppy pattern {},"
+ + "sloppy time range {},是否传输 mod 文件 {},用户名:{},无权限时是否跳过:{},"
+ + "是否转发 pipe 请求:{}";
public static final String PIPE_IS_SET_TO_FALSE_USE_HEARTBEAT =
- "Pipe:'{}' ('{}') is set to false, use heartbeat realtime source.";
+ "Pipe:'{}'('{}')设为 false,使用 heartbeat realtime source。";
public static final String PIPE_ON_DATA_REGION_SKIP_COMMIT_OF =
- "Pipe {} on data region {} skip commit of event {} because it was flushed prematurely.";
+ "data region {} 上的 Pipe {} 跳过事件 {} 的提交,因为该事件过早刷盘。";
public static final String PIPE_REALTIME_DATA_REGION_SOURCE_IS_INITIALIZED =
- "Pipe {}@{}:realtime data region source is initialized with parameters: {}.";
+ "Pipe {}@{}:实时 data region source 已初始化,参数:{}。";
public static final String PIPE_RESOURCE_MEETS_MAYTSFILECONTAINUNPROCESSEDDATA_CONDITION_EXTRACT =
- "Pipe {}@{}:resource {} meets mayTsFileContainUnprocessedData condition, extractor "
- + "progressIndex: {}, resource ProgressIndex: {}";
+ "Pipe {}@{}:资源 {} 满足 mayTsFileContainUnprocessedData 条件,extractor progressIndex:{},"
+ + "resource ProgressIndex:{}";
public static final String PIPE_SET_WATERMARK_INJECTOR_WITH_INTERVAL_MS =
- "Pipe {}@{}:Set watermark injector with interval {} ms.";
+ "Pipe {}@{}:设置水印注入器,间隔 {} ms。";
public static final String PIPE_SKIP_HISTORICAL_TSFILE_BECAUSE_REALTIME_SOURCE =
- "Pipe {}@{}:skip historical tsfile {} because realtime source in current task {} has "
- + "already captured it.";
+ "Pipe {}@{}:跳过历史 TsFile {},因为当前任务 {} 中的 realtime source 已捕获该文件。";
public static final String PIPE_SNAPSHOT_MODE_IS_ENABLED_USE_HEARTBEAT =
- "Pipe:快照模式已启用,使用 heartbeat 实时 source。";
+ "Pipe:快照模式已启用,使用 heartbeat realtime source。";
public static final String PIPE_STARTED_HISTORICAL_SOURCE_AND_REALTIME_SOURCE =
- "Pipe {}@{}:在 {} ms 内成功启动 historical source {} and realtime source {}。";
+ "Pipe {}@{}:已在 {} ms 内成功启动 historical source {} 和 realtime source {}。";
public static final String PIPE_STARTING_HISTORICAL_SOURCE_AND_REALTIME_SOURCE =
- "Pipe {}@{}:Starting historical source {} and realtime source {}.";
+ "Pipe {}@{}:正在启动 historical source {} 和 realtime source {}。";
public static final String PIPE_START_HISTORICAL_SOURCE_AND_REALTIME_SOURCE =
- "Pipe {}@{}:Start historical source {} and realtime source {} 出错。";
- public static final String PIPE_START_TO_EXTRACT_DELETIONS = "Pipe {}@{}:开始提取 deletions";
+ "Pipe {}@{}:启动 historical source {} 和 realtime source {} 出错。";
+ public static final String PIPE_START_TO_EXTRACT_DELETIONS = "Pipe {}@{}:开始提取删除操作";
public static final String PIPE_START_TO_EXTRACT_HISTORICAL_TSFILE_ORIGINAL =
- "Pipe {}@{}:开始提取 historical TsFile, original sequence file count {}, original unSequence "
- + "file count {}, start progress index {}";
+ "Pipe {}@{}:开始提取历史 TsFile,原始顺序文件数 {},原始乱序文件数 {},起始进度索引 {}";
public static final String PIPE_START_TO_FLUSH_DATA_REGION = "Pipe {}@{}:开始刷新 data region";
public static final String PIPE_START_TO_SORT_ALL_EXTRACTED_RESOURCES =
- "Pipe {}@{}:开始排序 all extracted resources";
+ "Pipe {}@{}:开始排序所有已提取资源";
public static final String PIPE_TASK_CANNOTUSETABLETANYMORE_FOR_TSFILE_THE_MEMORY =
- "Pipe task {}@{} canNotUseTabletAnyMore for tsFile {}: The memory usage of the insert "
- + "node {} has reached the dangerous threshold of single pipe {}, event count: {}";
+ "Pipe 任务 {}@{} 对 TsFile {} 执行 canNotUseTabletAnyMore:InsertNode {} 的内存使用量已达到"
+ + "单个 pipe 的危险阈值 {},事件数:{}";
public static final String PIPE_UNEXPECTED_PROGRESSINDEX_TYPE_FALLBACK_TO_ORIGIN =
- "Pipe {}@{}:unexpected ProgressIndex type {}, fallback to origin {}.";
+ "Pipe {}@{}:意外的 ProgressIndex 类型 {},回退到原始值 {}。";
public static final String PIPE_UNSUPPORTED_SOURCE_REALTIME_MODE_CREATE_A =
- "Pipe:不支持的 source realtime mode: {}, create a hybrid source。";
+ "Pipe:不支持的 source realtime mode:{},将创建 hybrid source。";
public static final String PROCESSOR_INTERRUPTED = "处理器被中断";
public static final String PROCESSOR_STOPPED = "处理器已停止";
public static final String SET_FOR_HISTORICAL_DELETION_EVENT =
- "[{}]Set {} for historical deletion event {}";
- public static final String SET_FOR_HISTORICAL_EVENT = "[{}]Set {} for historical event {}";
- public static final String SET_FOR_REALTIME_EVENT = "[{}]Set {} for realtime event {}";
+ "[{}] 将 {} 设置到历史删除事件 {}";
+ public static final String SET_FOR_HISTORICAL_EVENT = "[{}] 将 {} 设置到历史事件 {}";
+ public static final String SET_FOR_REALTIME_EVENT = "[{}] 将 {} 设置到实时事件 {}";
public static final String SOURCES_FILTERED_BY_DATABASE_AND_TABLE_IS =
- "Sources filtered by database and table 为空 when matching sources for table model event.";
+ "匹配表模型事件的 source 时,按数据库和表过滤后的 source 为空。";
public static final String SOURCES_FILTERED_BY_DEVICE_IS_NULL_WHEN =
- "Sources filtered by device 为空 when matching sources for tree model event.";
- public static final String TAKE_SNAPSHOT_ERROR = "Take snapshot error: {}";
+ "匹配树模型事件的 source 时,按 device 过滤后的 source 为空。";
+ public static final String TAKE_SNAPSHOT_ERROR = "创建快照出错:{}";
public static final String THE_ASSIGNER_QUEUE_CONTENT_HAS_EXCEEDED_HALF =
- "The assigner queue content has exceeded half, it may be stuck and may block insertion. "
- + "regionId: {}, capacity: {}, bufferSize: {}";
+ "assigner 队列内容已超过一半,可能发生阻塞并阻碍写入。regionId:{},capacity:{},bufferSize:{}";
public static final String THE_PIPE_CANNOT_EXTRACT_TABLE_MODEL_DATA =
- "The pipe cannot extract table model data when sql dialect is set to tree.";
+ "当 SQL 方言设为 tree 时,pipe 无法提取表模型数据。";
public static final String THE_PIPE_CANNOT_EXTRACT_TREE_MODEL_DATA =
- "The pipe cannot extract tree model data when sql dialect is set to table.";
+ "当 SQL 方言设为 table 时,pipe 无法提取树模型数据。";
public static final String THE_PIPE_CANNOT_TRANSFER_DATA_WHEN_DATA =
- "The pipe cannot transfer data when data region is using ratis consensus.";
+ "当 data region 使用 Ratis 共识时,pipe 无法传输数据。";
public static final String THE_REFERENCE_COUNT_OF_THE_EVENT_CANNOT =
- "The reference count of the event {} cannot be increased, skipping it.";
+ "无法增加事件 {} 的引用计数,跳过该事件。";
public static final String THE_REFERENCE_COUNT_OF_THE_REALTIME_EVENT =
- "The reference count of the realtime event {} cannot be increased, skipping it.";
+ "无法增加实时事件 {} 的引用计数,跳过该事件。";
public static final String TIMED_OUT_WAITING_FOR_PROCESSOR_TO_STOP =
- "Timed out waiting for processor to stop";
+ "等待 processor 停止超时";
public static final String TSFILEEPOCH_NOT_FOUND_FOR_TSFILE_CREATING_A =
- "TsFileEpoch not found for TsFile {}, creating a new one";
+ "未找到 TsFile {} 对应的 TsFileEpoch,正在创建新的 TsFileEpoch";
public static final String WHEN_IS_SET_TO_FALSE_SPECIFYING_AND =
- "When '{}' ('{}') is set to false, specifying {} and {} is invalid.";
+ "当 '{}'('{}')设为 false 时,指定 {} 和 {} 是无效的。";
public static final String WHEN_IS_SET_TO_TRUE_SPECIFYING_AND =
- "When '{}' ('{}', '{}', '{}') is set to true, specifying {} and {} is invalid.";
+ "当 '{}'('{}'、'{}'、'{}')设为 true 时,指定 {} 和 {} 是无效的。";
public static final String WHEN_OR_IS_SPECIFIED_SPECIFYING_AND_IS =
- "When {}, {}, {} or {} is specified, specifying {}, {}, {}, {}, {} and {} is invalid.";
+ "当指定 {}、{}、{} 或 {} 时,再指定 {}、{}、{}、{}、{} 和 {} 是无效的。";
// ===================== SINK =====================
public static final String ACQUIRE_IOPCITEMMGT_SUCCESSFULLY_INTERFACE_ADDRESS =
- "成功获取 IOPCItemMgt! Interface address: {}";
+ "成功获取 IOPCItemMgt!接口地址:{}";
public static final String ACQUIRE_IOPCSYNCIO_SUCCESSFULLY_INTERFACE_ADDRESS =
- "成功获取 IOPCSyncIO! Interface address: {}";
- public static final String ADDED_EVENT_TO_RETRY_QUEUE = "已将 event {} 添加到 retry queue";
+ "成功获取 IOPCSyncIO!接口地址:{}";
+ public static final String ADDED_EVENT_TO_RETRY_QUEUE = "已将事件 {} 添加到重试队列";
public static final String BATCH_ID_CREATE_BATCH_DIR_SUCCESSFULLY_BATCH =
- "批次 id = {}:创建 batch dir successfully, batch file dir = {}.";
+ "批次 id = {}:创建批次目录成功,批次文件目录 = {}。";
public static final String BATCH_ID_DELETE_THE_TSFILE_AFTER_FAILED =
- "批次 id = {}:{} delete the tsfile {} after failed to write tablets into {}. {}";
+ "批次 id = {}:{} 删除 TsFile {},此前向 {} 写入 tablet 失败。{}";
public static final String BATCH_ID_FAILED_TO_BUILD_THE_TABLE =
- "批次 id = {}:构建 the table model TSFile. Please check whether the written Tablet has time "
- + "overlap and whether the Table Schema is correct 失败。";
+ "批次 id = {}:构建表模型 TsFile 失败。请检查写入的 Tablet 是否存在时间重叠,以及表 Schema 是否正确。";
public static final String BATCH_ID_FAILED_TO_CLOSE_THE_TSFILE =
- "批次 id = {}:关闭 the tsfile {} after failed to write tablets into 失败,原因:{}";
+ "批次 id = {}:写入 tablet 失败后关闭 TsFile {} 失败,原因:{}";
public static final String BATCH_ID_FAILED_TO_CLOSE_THE_TSFILE_1 =
- "批次 id = {}:关闭 the tsfile {} when trying to close batch 失败,原因:{}";
+ "批次 id = {}:尝试关闭批次时关闭 TsFile {} 失败,原因:{}";
public static final String BATCH_ID_FAILED_TO_CREATE_BATCH_FILE =
- "批次 id = {}:创建 batch file dir {} 失败。";
+ "批次 id = {}:创建批次文件目录 {} 失败。";
public static final String BATCH_ID_FAILED_TO_DELETE_THE_TSFILE =
- "批次 id = {}:删除 the tsfile {} when trying to close batch 失败,原因:{}";
+ "批次 id = {}:尝试关闭批次时删除 TsFile {} 失败,原因:{}";
public static final String BATCH_ID_FAILED_TO_WRITE_TABLETS_INTO =
- "批次 id = {}:写入 tablets into tsfile 失败,原因:{}";
- public static final String BATCH_ID_SEAL_TSFILE_SUCCESSFULLY = "批次 id = {}:成功封存 tsfile {}。";
+ "批次 id = {}:向 TsFile 写入 tablet 失败,原因:{}";
+ public static final String BATCH_ID_SEAL_TSFILE_SUCCESSFULLY = "批次 id = {}:成功封存 TsFile {}。";
public static final String BATCH_ID_UNSUPPORTED_EVENT_TYPE_WHEN_CONSTRUCTING =
- "批次 id = {}:不支持的 event {} type {} when constructing tsfile batch";
+ "批次 id = {}:构造 TsFile 批次时不支持事件 {} 的类型 {}";
public static final String CANNOT_INCREASE_REFERENCE_COUNT_FOR_EVENT_IGNORE =
- "无法增加 reference count for event: {}, ignore it in batch";
+ "无法增加事件 {} 的引用计数,将在批次中忽略该事件";
public static final String CANNOT_SERIALIZE_BOTH_TABLET_AND_STATEMENT_ARE =
- "Cannot serialize: both tablet and statement are null";
+ "无法序列化:tablet 和 statement 均为空";
public static final String CERTIFICATE_DIRECTORY_IS_PLEASE_MOVE_CERTIFICATES_FROM =
- "Certificate directory is: {}, Please move certificates from the reject dir to the "
- + "trusted directory to allow encrypted access";
+ "证书目录为:{},请将证书从 reject 目录移动到 trusted 目录以允许加密访问";
public static final String CLIENT_HAS_BEEN_RETURNED_TO_THE_POOL =
- "Client has been returned to the pool. Current handler status is {}. Will not transfer {}.";
+ "客户端已归还到池中。当前 handler 状态为 {},不会传输 {}。";
public static final String CLOSED_ASYNCPIPEDATATRANSFERSERVICECLIENTMANAGER_FOR_RECEIVER_ATTRIBUTES =
- "已关闭 AsyncPipeDataTransferServiceClientManager for receiver attributes: {}";
+ "已关闭 receiver attributes 为 {} 的 AsyncPipeDataTransferServiceClientManager";
public static final String CREATE_GROUP_SUCCESSFULLY_SERVER_HANDLE_UPDATE_RATE =
- "创建 group successfully! Server handle: {}, update rate: {} ms";
+ "创建 group 成功!Server handle:{},更新频率:{} ms";
public static final String DELETENODETRANSFER_NO_EVENT_SUCCESSFULLY_PROCESSED =
- "DeleteNodeTransfer: no.{} event successfully processed!";
+ "DeleteNodeTransfer:第 {} 个事件处理成功!";
public static final String DESERIALIZE_PIPEDATA_ERROR_BECAUSE_UNKNOWN_TYPE =
- "Deserialize PipeData error because Unknown type ";
+ "反序列化 PipeData 出错,原因:未知类型 ";
public static final String DESERIALIZE_PIPEDATA_ERROR_BECAUSE_UNKNOWN_TYPE_1 =
- "Deserialize PipeData error because Unknown type {}.";
- public static final String ERROR_GETTING_OPC_CLIENT = "Error getting opc client: ";
+ "反序列化 PipeData 出错,原因:未知类型 {}。";
+ public static final String ERROR_GETTING_OPC_CLIENT = "获取 OPC 客户端出错:";
public static final String ERROR_PROGID_IS_INVALID_OR_UNREGISTERED_HRESULT =
- "Error: ProgID is invalid or unregistered, (HRESULT=0x";
- public static final String ERROR_RUNNING_OPC_CLIENT = "Error running opc client: ";
+ "错误:ProgID 无效或未注册,(HRESULT=0x";
+ public static final String ERROR_RUNNING_OPC_CLIENT = "运行 OPC 客户端出错:";
public static final String EXCEPTION_OCCURRED_WHEN_PIPETABLEMODELTSFILEBUILDERV2_WRITING_TABLETS_TO =
- "PipeTableModelTsFileBuilderV2 writing tablets to tsfile, use fallback tsfile builder: "
- + "{} 时发生异常";
+ "PipeTableModelTsFileBuilderV2 向 TsFile 写入 tablet 时发生异常,将使用 fallback TsFile builder:{}";
public static final String EXCEPTION_OCCURRED_WHEN_PIPETREEMODELTSFILEBUILDERV2_WRITING_TABLETS_TO =
- "PipeTreeModelTsFileBuilderV2 writing tablets to tsfile, use fallback tsfile builder: {} "
- + "时发生异常";
+ "PipeTreeModelTsFileBuilderV2 向 TsFile 写入 tablet 时发生异常,将使用 fallback TsFile builder:{}";
public static final String EXECUTE_STATEMENT_TO_DATABASE_SKIP_BECAUSE_NO =
- "Execute statement {} to database {}, skip because no permission.";
+ "执行语句 {} 到数据库 {} 时因无权限而跳过。";
public static final String FAILED_TO_ACQUIRE_IOPCITEMMGT_ERROR_CODE_0X =
- "获取 IOPCItemMgt, error code: 0x 失败";
+ "获取 IOPCItemMgt 失败,错误码:0x";
public static final String FAILED_TO_ACQUIRE_IOPCSYNCIO_ERROR_CODE_0X =
- "获取 IOPCSyncIO, error code: 0x 失败";
- public static final String FAILED_TO_ADD_ITEM = "add item 失败";
- public static final String FAILED_TO_ADD_ITEM_WIN_ERROR_CODE = "add item, win error code: 0x 失败";
+ "获取 IOPCSyncIO 失败,错误码:0x";
+ public static final String FAILED_TO_ADD_ITEM = "添加 item 失败";
+ public static final String FAILED_TO_ADD_ITEM_WIN_ERROR_CODE = "添加 item 失败,Windows 错误码:0x";
public static final String FAILED_TO_ADJUST_TIMEOUT_WHEN_FAILED_TO =
- "adjust timeout when failed to transfer file 失败。";
+ "传输文件失败后调整超时时间失败。";
public static final String FAILED_TO_BORROW_CLIENT_FOR_CACHED_LEADER =
- "borrow client {}:{} for cached leader 失败。";
+ "为缓存的 leader 借用客户端 {}:{} 失败。";
public static final String FAILED_TO_BUILD_AND_STARTUP_OPCUASERVER =
- "构建 and startup OpcUaServer 失败";
+ "构建并启动 OpcUaServer 失败";
public static final String FAILED_TO_CLOSE_ASYNCPIPEDATATRANSFERSERVICECLIENTMANAGER_FOR_RECEIVER_ATTRIBUTE =
- "关闭 AsyncPipeDataTransferServiceClientManager for receiver attributes: {} 失败";
+ "关闭 receiver attributes 为 {} 的 AsyncPipeDataTransferServiceClientManager 失败";
public static final String FAILED_TO_CLOSE_CLIENT_AFTER_HANDSHAKE_FAILURE =
- "关闭 client {}:{} after handshake failure when the manager is closed 失败。";
- public static final String FAILED_TO_CLOSE_CLIENT_MANAGER = "关闭 client manager 失败。";
+ "manager 已关闭且握手失败后,关闭客户端 {}:{} 失败。";
+ public static final String FAILED_TO_CLOSE_CLIENT_MANAGER = "关闭客户端管理器失败。";
public static final String FAILED_TO_CLOSE_FILE_READER_OR_DELETE =
- "关闭 file reader or delete tsFile when failed to transfer file 失败。";
+ "传输文件失败后关闭文件读取器或删除 TsFile 失败。";
public static final String FAILED_TO_CLOSE_FILE_READER_OR_DELETE_1 =
- "关闭 file reader or delete tsFile when successfully transferred file 失败。";
+ "成功传输文件后关闭文件读取器或删除 TsFile 失败。";
public static final String FAILED_TO_CLOSE_FILE_READER_WHEN_SUCCESSFULLY =
- "关闭 file reader when successfully transferred mod file 失败。";
+ "成功传输 mod 文件后关闭文件读取器失败。";
public static final String FAILED_TO_CLOSE_OR_INVALIDATE_CLIENT_WHEN =
- "关闭 or invalidate client when connector is closed. Client: {}, Exception: {} 失败";
+ "connector 关闭时关闭或失效客户端失败。客户端:{},异常:{}";
public static final String FAILED_TO_CLOSE_TRUSTLISTMANAGER_BECAUSE =
- "关闭 trustListManager 失败,原因:{}.";
+ "关闭 trustListManager 失败,原因:{}。";
public static final String FAILED_TO_CONNECT_TO_SERVER_ERROR_CODE =
- "连接 to server, error code: 0x 失败";
- public static final String FAILED_TO_CONVERT_STATEMENT_TO_TABLET = "转换 statement to tablet 失败。";
+ "连接服务器失败,错误码:0x";
+ public static final String FAILED_TO_CONVERT_STATEMENT_TO_TABLET = "将 statement 转换为 tablet 失败。";
public static final String FAILED_TO_CONVERT_STATEMENT_TO_TABLET_FOR =
- "转换 statement to tablet for serialization 失败";
- public static final String FAILED_TO_CREATE_GROUP_ERROR_CODE_0X = "创建 group,error code: 0x 失败";
+ "为序列化将 statement 转换为 tablet 失败";
+ public static final String FAILED_TO_CREATE_GROUP_ERROR_CODE_0X = "创建 group 失败,错误码:0x";
public static final String FAILED_TO_CREATE_NODES_AFTER_TRANSFER_DATA =
- "创建 nodes after transfer data value, creation status: 失败";
+ "传输 data value 后创建 node 失败,创建状态:";
public static final String FAILED_TO_DELETE_BATCH_FILE_THIS_FILE =
- "删除 batch file {}, this file should be deleted manually later 失败";
+ "删除批次文件 {} 失败,该文件稍后需要手动删除";
public static final String FAILED_TO_GET_THE_SIZE_OF_PIPETRANSFERBATCHREQBUILDER =
- "获取 the size of PipeTransferBatchReqBuilder, return 0. Exception: {} 失败";
- public static final String FAILED_TO_HANDSHAKE = "Failed to handshake.";
+ "获取 PipeTransferBatchReqBuilder 大小失败,返回 0。异常:{}";
+ public static final String FAILED_TO_HANDSHAKE = "握手失败。";
public static final String FAILED_TO_LOG_ERROR_WHEN_FAILED_TO =
- "log error when failed to transfer file 失败。";
+ "传输文件失败后记录错误日志失败。";
public static final String FAILED_TO_PUSH_VALUE_CHANGE_TO_CLIENT =
- "push value change to client, nodeId={} 失败";
+ "向客户端推送值变更失败,nodeId={}";
public static final String FAILED_TO_SEND_INITIAL_VALUE_TO_NEW =
- "发送 initial value to new subscription, nodeId={} 失败";
- public static final String FAILED_TO_SERIALIZE_PROGRESS_INDEX = "序列化 progress index {} 失败";
- public static final String FAILED_TO_SHUTDOWN_EXECUTOR = "关闭 executor {} 失败。";
+ "向新订阅发送初始值失败,nodeId={}";
+ public static final String FAILED_TO_SERIALIZE_PROGRESS_INDEX = "序列化进度索引 {} 失败";
+ public static final String FAILED_TO_SHUTDOWN_EXECUTOR = "关闭执行器 {} 失败。";
public static final String FAILED_TO_TRANSFER_DATAVALUE = "传输 dataValue 失败";
public static final String FAILED_TO_TRANSFER_DATAVALUE_AFTER_SUCCESSFULLY_CREATED =
- "传输 dataValue after successfully created nodes 失败";
+ "成功创建 node 后传输 dataValue 失败";
public static final String FAILED_TO_TRANSFER_PIPEDELETENODEEVENT_COMMITTER_KEY_REPLICATE =
- "传输 PipeDeleteNodeEvent {} (committer key={}, replicate index={}) 失败。";
+ "传输 PipeDeleteNodeEvent {}(committer key={},replicate index={})失败。";
public static final String FAILED_TO_TRANSFER_TABLETINSERTIONEVENT_COMMITTER_KEY_REPLICATE =
- "传输 TabletInsertionEvent {} (committer key={}, replicate index={}) 失败。";
- public static final String FAILED_TO_TRANSFER_TSFILE_BATCH = "传输 tsfile batch ({}) 失败。";
+ "传输 TabletInsertionEvent {}(committer key={},replicate index={})失败。";
+ public static final String FAILED_TO_TRANSFER_TSFILE_BATCH = "传输 TsFile 批次({})失败。";
public static final String FAILED_TO_TRANSFER_TSFILE_EVENT_ASYNCHRONOUSLY =
- "传输 tsfile event {} asynchronously 失败。";
+ "异步传输 TsFile 事件 {} 失败。";
public static final String FAILED_TO_UPDATE_LEADER_CACHE_FOR_DEVICE =
- "更新 leader cache for device {} with endpoint {}:{} 失败。";
- public static final String FAILED_TO_WRITE = "Failed to write ";
+ "更新 device {} 的 leader cache 到端点 {}:{} 失败。";
+ public static final String FAILED_TO_WRITE = "写入失败 ";
public static final String FAILED_TO_WRITE_WIN_ERROR_CODE_0X =
- "Failed to write, win error code: 0x";
+ "写入失败,Windows 错误码:0x";
public static final String GENERATE_STATEMENT_FROM_TABLET_ERROR = "从 tablet {} 生成 Statement 出错。";
- public static final String GOT_AN_ERROR_FROM = "Got an error \\\"{}\\\" from {}:{}.";
+ public static final String GOT_AN_ERROR_FROM = "收到错误 \\\"{}\\\",来源 {}:{}。";
public static final String GOT_AN_ERROR_FROM_AN_UNKNOWN_CLIENT =
- "Got an error \\\"{}\\\" from an unknown client.";
+ "从未知客户端收到错误 \\\"{}\\\"。";
public static final String HANDSHAKE_SUCCESSFULLY_WITH_RECEIVER =
- "握手 successfully with receiver {}:{}.";
+ "与接收端 {}:{} 握手成功。";
public static final String ILLEGAL_STATE_WHEN_RETURN_THE_CLIENT_TO =
- "非法的 state when return the client to object pool, maybe the pool is already cleared. "
- + "Will ignore。";
+ "将客户端归还对象池时状态非法,可能对象池已清空。将忽略。";
public static final String INSERTNODETRANSFER_NO_EVENT_SUCCESSFULLY_PROCESSED =
- "InsertNodeTransfer: no.{} event successfully processed!";
+ "InsertNodeTransfer:第 {} 个事件处理成功!";
public static final String INTERRUPTED_WHILE_WAITING_FOR_HANDSHAKE_RESPONSE =
- "waiting for handshake response 时被中断。";
+ "等待握手响应时被中断。";
public static final String IOTCONSENSUSV2ASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTConsensusV2AsyncConnector 不支持 transferring generic event: {}.";
+ "IoTConsensusV2AsyncConnector 不支持传输通用事件:{}。";
public static final String IOTCONSENSUSV2ASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFER_GENERIC_EVENT =
- "IoTConsensusV2AsyncConnector 不支持 transfer generic event: {}.";
+ "IoTConsensusV2AsyncConnector 不支持传输通用事件:{}。";
public static final String IOTCONSENSUSV2ASYNCCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_CURRENT_EVEN =
- "IoTConsensusV2AsyncConnector only support PipeTsFileInsertionEvent. Current event: {}.";
+ "IoTConsensusV2AsyncConnector 仅支持 PipeTsFileInsertionEvent。当前事件:{}。";
public static final String IOTCONSENSUSV2CONNECTOR_TRANSFERBUFFER_QUEUE_OFFER_IS_INTERRUPTED =
- "IoTConsensusV2Connector transferBuffer queue offer is interrupted.";
+ "IoTConsensusV2Connector 写入 transferBuffer 队列时被中断。";
public static final String IOTCONSENSUSV2TRANSFERBATCHREQBUILDER_THE_MAX_BATCH_SIZE_IS_ADJUSTED =
- "IoTConsensusV2TransferBatchReqBuilder: the max batch size is adjusted from {} to {} due "
- + "to the memory restriction";
+ "IoTConsensusV2TransferBatchReqBuilder:最大批次大小因内存限制从 {} 调整为 {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_EVENT_NOT_FOUND_IN_TRANSFERBUFFER =
- "IoTConsensusV2-ConsensusGroup-{}: event-{} not found in transferBuffer, skip removing. "
- + "queue size = {}";
+ "IoTConsensusV2-ConsensusGroup-{}:transferBuffer 中未找到事件-{},跳过移除。队列大小 = {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_EVENT_REPLICATE_INDEX_TRANSFER_FAILED =
- "IoTConsensusV2-ConsensusGroup-{}: Event {} replicate index {} transfer failed, added to "
- + "retry queue failed, this event will be ignored.";
+ "IoTConsensusV2-ConsensusGroup-{}:事件 {}(复制索引 {})传输失败,且加入重试队列失败,"
+ + "该事件将被忽略。";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_EVENT_REPLICATE_INDEX_TRANSFER_FAILED_1 =
- "IoTConsensusV2-ConsensusGroup-{}: Event {} replicate index {} transfer failed, will be "
- + "added to retry queue.";
+ "IoTConsensusV2-ConsensusGroup-{}:事件 {}(复制索引 {})传输失败,将加入重试队列。";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_NO_EVENT_ADDED_TO_CONNECTOR =
- "IoTConsensusV2-ConsensusGroup-{}: no.{} event-{} added to connector buffer";
+ "IoTConsensusV2-ConsensusGroup-{}:第 {} 个事件-{} 已添加到连接器缓冲区";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_ONE_EVENT_SUCCESSFULLY_RECEIVED_BY =
- "IoTConsensusV2-ConsensusGroup-{}: one event-{} successfully received by the follower, "
- + "will be removed from queue, queue size = {}, limit size = {}";
+ "IoTConsensusV2-ConsensusGroup-{}:事件-{} 已被从节点成功接收,将从队列移除,"
+ + "队列大小 = {},限制大小 = {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_RETRYEVENTQUEUE_IS_NOT_EMPTY_AFTER =
- "IoTConsensusV2-ConsensusGroup-{}: retryEventQueue is not empty after 20 seconds. "
- + "retryQueue size: {}";
+ "IoTConsensusV2-ConsensusGroup-{}:20 秒后重试事件队列仍不为空。重试队列大小:{}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_RETRY_WITH_INTERVAL_FOR_INDEX =
- "IoTConsensusV2-ConsensusGroup-{}: retry with interval {} for index {} {}";
+ "IoTConsensusV2-ConsensusGroup-{}:以间隔 {} 重试索引 {} {}";
public static final String IOTCONSENSUSV2_CONSENSUSGROUP_TRY_TO_REMOVE_EVENT_AFTER =
- "IoTConsensusV2-ConsensusGroup-{}: try to remove event-{} after "
- + "iotConsensusV2AsyncConnector being closed. Ignore it.";
+ "IoTConsensusV2-ConsensusGroup-{}:连接器已关闭后尝试移除事件-{},将忽略。";
public static final String IOTCONSENSUSV2_FAILED_TO_CLOSE_FILE_READER_WHEN =
- "IoTConsensusV2-{}:关闭 file reader when failed to transfer file 失败。";
+ "IoTConsensusV2-{}:传输文件失败后关闭文件读取器失败。";
public static final String IOTCONSENSUSV2_FAILED_TO_CLOSE_FILE_READER_WHEN_1 =
- "IoTConsensusV2-{}:关闭 file reader when successfully transferred file 失败。";
+ "IoTConsensusV2-{}:成功传输文件后关闭文件读取器失败。";
public static final String IOTCONSENSUSV2_FAILED_TO_CLOSE_FILE_READER_WHEN_2 =
- "IoTConsensusV2-{}:关闭 file reader when successfully transferred mod file 失败。";
+ "IoTConsensusV2-{}:成功传输 mod 文件后关闭文件读取器失败。";
public static final String IOTCONSENSUSV2_FAILED_TO_TRANSFER_TABLETINSERTIONEVENT_BATCH_TOTAL =
- "IoTConsensusV2:传输 TabletInsertionEvent batch. Total failed events: {}, related pipe "
- + "names: {} 失败";
+ "IoTConsensusV2:传输 TabletInsertionEvent 批次失败。失败事件总数:{},相关 Pipe 名称:{}";
public static final String IOTCONSENSUSV2_FAILED_TO_TRANSFER_TSFILEINSERTIONEVENT_COMMITTER_KEY =
- "IoTConsensusV2-{}:传输 TsFileInsertionEvent {} (committer key {}, replicate index {}) 失败。";
+ "IoTConsensusV2-{}:传输 TsFileInsertionEvent {}(提交器键 {},复制索引 {})失败。";
public static final String IOTCONSENSUSV2_REDIRECT_FILE_POSITION_TO =
- "IoTConsensusV2-{}:Redirect file position to {}.";
+ "IoTConsensusV2-{}:将文件位置重定向到 {}。";
public static final String IOTCONSENSUSV2_SUCCESSFULLY_TRANSFERRED_FILE_COMMITTER_KEY_REPLICATE =
- "IoTConsensusV2-{}:成功 transferred file {} (committer key={}, replicate index={})。";
+ "IoTConsensusV2-{}:成功传输文件 {}(提交器键={},复制索引={})。";
public static final String IOTDBCDCCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTAB =
- "IoTDBCDCConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent.";
+ "IoTDBCDCConnector 仅支持 PipeInsertNodeTabletInsertionEvent 和 PipeRawTabletInsertionEvent。";
public static final String IOTDBDATAREGIONAIRGAPCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBDataRegionAirGapConnector 不支持 transferring generic event: {}.";
+ "IoTDBDataRegionAirGapConnector 不支持传输通用事件:{}。";
public static final String IOTDBDATAREGIONAIRGAPCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_A =
- "IoTDBDataRegionAirGapConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "IoTDBDataRegionAirGapConnector 仅支持 PipeInsertNodeTabletInsertionEvent 和 "
+ + "PipeRawTabletInsertionEvent。忽略 {}。";
public static final String IOTDBDATAREGIONAIRGAPCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_IGNORE =
- "IoTDBDataRegionAirGapConnector only support PipeTsFileInsertionEvent. Ignore {}.";
+ "IoTDBDataRegionAirGapConnector 仅支持 PipeTsFileInsertionEvent。忽略 {}。";
public static final String IOTDBLEGACYPIPECONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBLegacyPipeConnector 不支持 transferring generic event: {}.";
+ "IoTDBLegacyPipeConnector 不支持传输通用事件:{}。";
public static final String IOTDBLEGACYPIPECONNECTOR_ONLY_SUPPORT_PIPEINSERTNODEINSERTIONEVENT_AND_PIPETABLE =
- "IoTDBLegacyPipeConnector only support PipeInsertNodeInsertionEvent and "
- + "PipeTabletInsertionEvent.";
+ "IoTDBLegacyPipeConnector 仅支持 PipeInsertNodeTabletInsertionEvent 和 "
+ + "PipeRawTabletInsertionEvent。";
public static final String IOTDBLEGACYPIPECONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT =
- "IoTDBLegacyPipeConnector only support PipeTsFileInsertionEvent.";
+ "IoTDBLegacyPipeConnector 仅支持 PipeTsFileInsertionEvent。";
public static final String IOTDBSCHEMAREGIONAIRGAPSINK_CAN_T_TRANSFER_TABLETINSERTIONEVENT =
- "IoTDBSchemaRegionAirGapSink can't transfer TabletInsertionEvent.";
+ "IoTDBSchemaRegionAirGapSink 无法传输 TabletInsertionEvent。";
public static final String IOTDBSCHEMAREGIONAIRGAPSINK_CAN_T_TRANSFER_TSFILEINSERTIONEVENT =
- "IoTDBSchemaRegionAirGapSink can't transfer TsFileInsertionEvent.";
+ "IoTDBSchemaRegionAirGapSink 无法传输 TsFileInsertionEvent。";
public static final String IOTDBSCHEMAREGIONAIRGAPSINK_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBSchemaRegionAirGapSink 不支持 transferring generic event: {}.";
+ "IoTDBSchemaRegionAirGapSink 不支持传输通用事件:{}。";
public static final String IOTDBSCHEMAREGIONCONNECTOR_CAN_T_TRANSFER_TABLETINSERTIONEVENT =
- "IoTDBSchemaRegionConnector can't transfer TabletInsertionEvent.";
+ "IoTDBSchemaRegionConnector 无法传输 TabletInsertionEvent。";
public static final String IOTDBSCHEMAREGIONCONNECTOR_CAN_T_TRANSFER_TSFILEINSERTIONEVENT =
- "IoTDBSchemaRegionConnector can't transfer TsFileInsertionEvent.";
+ "IoTDBSchemaRegionConnector 无法传输 TsFileInsertionEvent。";
public static final String IOTDBSCHEMAREGIONCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBSchemaRegionConnector 不支持 transferring generic event: {}.";
+ "IoTDBSchemaRegionConnector 不支持传输通用事件:{}。";
public static final String IOTDBTHRIFTASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBThriftAsyncConnector 不支持 transferring generic event: {}.";
+ "IoTDBThriftAsyncConnector 不支持传输通用事件:{}。";
public static final String IOTDBTHRIFTASYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFER_GENERIC_EVENT =
- "IoTDBThriftAsyncConnector 不支持 transfer generic event: {}.";
+ "IoTDBThriftAsyncConnector 不支持传输通用事件:{}。";
public static final String IOTDBTHRIFTASYNCCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PI =
- "IoTDBThriftAsyncConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Current event: {}.";
+ "IoTDBThriftAsyncConnector 仅支持 PipeInsertNodeTabletInsertionEvent 和 "
+ + "PipeRawTabletInsertionEvent。当前事件:{}。";
public static final String IOTDBTHRIFTASYNCCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_CURRENT_EVENT =
- "IoTDBThriftAsyncConnector only support PipeTsFileInsertionEvent. Current event: {}.";
+ "IoTDBThriftAsyncConnector 仅支持 PipeTsFileInsertionEvent。当前事件:{}。";
public static final String IOTDBTHRIFTSYNCCONNECTOR_DOES_NOT_SUPPORT_TRANSFERRING_GENERIC_EVENT =
- "IoTDBThriftSyncConnector 不支持 transferring generic event: {}.";
+ "IoTDBThriftSyncConnector 不支持传输通用事件:{}。";
public static final String IOTDBTHRIFTSYNCCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIP =
- "IoTDBThriftSyncConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "IoTDBThriftSyncConnector 仅支持 PipeInsertNodeTabletInsertionEvent 和 "
+ + "PipeRawTabletInsertionEvent。忽略 {}。";
public static final String IOTDBTHRIFTSYNCCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_IGNORE =
- "IoTDBThriftSyncConnector only support PipeTsFileInsertionEvent. Ignore {}.";
+ "IoTDBThriftSyncConnector 仅支持 PipeTsFileInsertionEvent。忽略 {}。";
public static final String LEADERCACHEMANAGER_ALLOCATEDMEMORYBLOCK_HAS_EXPANDED_FROM_TO =
- "LeaderCacheManager.allocatedMemoryBlock has expanded from {} to {}.";
+ "LeaderCacheManager.allocatedMemoryBlock 已从 {} 扩展到 {}。";
public static final String LEADERCACHEMANAGER_ALLOCATEDMEMORYBLOCK_HAS_SHRUNK_FROM_TO =
- "LeaderCacheManager.allocatedMemoryBlock has shrunk from {} to {}.";
+ "LeaderCacheManager.allocatedMemoryBlock 已从 {} 收缩到 {}。";
public static final String LOADING_KEYSTORE_AT = "正在从 {} 加载 KeyStore";
- public static final String LOADING_KEYSTORE_AT_1 = "正在从 {}. 加载 KeyStore";
+ public static final String LOADING_KEYSTORE_AT_1 = "正在从 {} 加载 KeyStore";
public static final String LOAD_KEYSTORE_FAILED_THE_EXISTING_KEYSTORE_MAY =
- "Load keyStore failed, the existing keyStore may be stale, re-constructing...";
+ "加载 KeyStore 失败。现有 KeyStore 可能已过期,将重新构建。";
public static final String NO_OPC_CLIENT_OR_SERVER_IS_SPECIFIED =
- "No OPC client or server is specified when transferring tablet";
+ "传输 tablet 时未指定 OPC 客户端或服务器";
public static final String OPC_DA_SINK_MUST_RUN_ON_WINDOWS = "opc-da-sink 必须在 Windows 系统上运行。";
public static final String PIPETABLEMODETSFILEBUILDERV2_DOES_NOT_SUPPORT_TREE_MODEL_TABLET =
- "PipeTableModeTsFileBuilderV2 不支持 tree model tablet to build TSFile";
+ "PipeTableModeTsFileBuilderV2 不支持使用树模型 tablet 构建 TSFile";
public static final String PIPETABLEMODETSFILEBUILDER_DOES_NOT_SUPPORT_TREE_MODEL_TABLET =
- "PipeTableModeTsFileBuilder 不支持 tree model tablet to build TSFile";
+ "PipeTableModeTsFileBuilder 不支持使用树模型 tablet 构建 TSFile";
public static final String PIPETREEMODELTSFILEBUILDERV2_DOES_NOT_SUPPORT_TABLE_MODEL_TABLET =
- "PipeTreeModelTsFileBuilderV2 不支持 table model tablet to build TSFile";
+ "PipeTreeModelTsFileBuilderV2 不支持使用表模型 tablet 构建 TSFile";
public static final String PIPETREEMODELTSFILEBUILDER_DOES_NOT_SUPPORT_TABLE_MODEL_TABLET =
- "PipeTreeModelTsFileBuilder 不支持 table model tablet to build TSFile";
- public static final String POLLED_EVENT_FROM_RETRY_QUEUE = "Polled event {} from retry queue.";
+ "PipeTreeModelTsFileBuilder 不支持使用表模型 tablet 构建 TSFile";
+ public static final String POLLED_EVENT_FROM_RETRY_QUEUE = "已从重试队列取出事件 {}。";
public static final String RECEIVED_AN_ERROR_MESSAGE_FROM =
- "Received an error message {} from {}:{}";
+ "收到错误消息 {},来源 {}:{}";
public static final String RECEIVED_AN_UNKNOWN_MESSAGE_FROM =
- "Received an unknown message {} from {}:{}";
- public static final String RECEIVED_A_ACK_MESSAGE_FROM = "Received a ack message from {}:{}";
- public static final String RECEIVED_A_BIND_MESSAGE_FROM = "Received a bind message from {}:{}";
- public static final String REDIRECT_FILE_POSITION_TO = "Redirect file position to {}.";
+ "收到未知消息 {},来源 {}:{}";
+ public static final String RECEIVED_A_ACK_MESSAGE_FROM = "从 {}:{} 收到 ack 消息";
+ public static final String RECEIVED_A_BIND_MESSAGE_FROM = "从 {}:{} 收到 bind 消息";
+ public static final String REDIRECT_FILE_POSITION_TO = "将文件位置重定向到 {}。";
public static final String REDIRECT_TO_POSITION_IN_TRANSFERRING_TSFILE =
- "Redirect to position {} in transferring tsFile {}.";
- public static final String SECURITY_DIR = "security dir: {}";
- public static final String SECURITY_PKI_DIR = "security pki dir: {}";
- public static final String SUCCESSFULLY_ADDED_ITEM = "成功 added item {}。";
+ "重定向到位置 {},正在传输的 TsFile:{}。";
+ public static final String SECURITY_DIR = "安全目录:{}";
+ public static final String SECURITY_PKI_DIR = "安全 PKI 目录:{}";
+ public static final String SUCCESSFULLY_ADDED_ITEM = "成功添加 item {}。";
public static final String SUCCESSFULLY_CONVERTED_PROGID_TO_CLSID =
- "成功 converted progID {} to CLSID: {{}}";
- public static final String SUCCESSFULLY_SHUTDOWN_EXECUTOR = "成功 shutdown executor {}。";
+ "成功将 progID {} 转换为 CLSID:{{}}";
+ public static final String SUCCESSFULLY_SHUTDOWN_EXECUTOR = "成功关闭执行器 {}。";
public static final String SUCCESSFULLY_TRANSFERRED_DELETION_EVENT =
- "成功 transferred deletion event {}。";
- public static final String SUCCESSFULLY_TRANSFERRED_FILE = "成功 transferred file {}。";
+ "成功传输删除事件 {}。";
+ public static final String SUCCESSFULLY_TRANSFERRED_FILE = "成功传输文件 {}。";
public static final String SUCCESSFULLY_TRANSFERRED_FILE_AND =
- "成功 transferred file {}, {} and {}。";
+ "成功传输文件 {}、{} 和 {}。";
public static final String SUCCESSFULLY_TRANSFERRED_FILE_BATCHED_TABLEINSERTIONEVENTS_REFERENCE_COUNT =
- "成功 transferred file {} (batched TableInsertionEvents, reference count={})。";
+ "成功传输文件 {}(批量 TableInsertionEvent,引用计数={})。";
public static final String SUCCESSFULLY_TRANSFERRED_FILE_COMMITTER_KEY_COMMIT_ID =
- "成功 transferred file {} (committer key={}, commit id={}, reference count={})。";
+ "成功传输文件 {}(committer key={},commit id={},引用计数={})。";
public static final String SUCCESSFULLY_TRANSFERRED_SCHEMA_EVENT =
- "成功 transferred schema event {}。";
+ "成功传输 schema 事件 {}。";
public static final String SUCCESSFULLY_TRANSFERRED_SCHEMA_REGION_SNAPSHOT_AND =
- "成功 transferred schema region snapshot {}, {} and {}。";
+ "成功传输 schema region 快照 {}、{} 和 {}。";
public static final String THE_BATCH_SIZE_LIMIT_HAS_EXPANDED_FROM =
- "The batch size limit has expanded from {} to {}.";
+ "批次大小限制已从 {} 扩展到 {}。";
public static final String THE_BATCH_SIZE_LIMIT_HAS_SHRUNK_FROM =
- "The batch size limit has shrunk from {} to {}.";
+ "批次大小限制已从 {} 收缩到 {}。";
public static final String THE_DEFAULT_QUALITY_CAN_ONLY_BE_GOOD =
- "The default quality can only be 'GOOD', 'BAD' or 'UNCERTAIN'.";
- public static final String THE_EVENT_ACK_IS_NOT_FOUND = "The event ack {} is not found.";
+ "默认质量只能是 'GOOD'、'BAD' 或 'UNCERTAIN'。";
+ public static final String THE_EVENT_ACK_IS_NOT_FOUND = "未找到事件 ack {}。";
public static final String THE_EVENT_CAN_T_BE_TRANSFERRED_TO =
- "The event {} can't be transferred to client, it will be retried later.";
+ "事件 {} 无法传输到客户端,稍后将重试。";
public static final String THE_EVENT_IN_ERROR_IS_NOT_FOUND =
- "The event in error {} is not found.";
+ "未找到错误中的事件 {}。";
public static final String THE_EVENT_POLLED_FROM_THE_QUEUE_IS =
- "The event polled from the queue is not the same as the event peeked from the queue. "
- + "Peeked event: {}, polled event: {}.";
+ "从队列 poll 出的事件与 peek 到的事件不一致。peek 事件:{},poll 事件:{}。";
public static final String THE_FILE_IS_NOT_FOUND_MAY_ALREADY =
- "The file {} is not found, may already be deleted.";
+ "未找到文件 {},可能已被删除。";
public static final String THE_PIPE_WAS_DROPPED_SO_THE_EVENT =
- "The pipe {} was dropped so the event ack {} will be ignored.";
+ "pipe {} 已被删除,事件 ack {} 将被忽略。";
public static final String THE_PIPE_WAS_DROPPED_SO_THE_EVENT_1 =
- "The pipe {} was dropped so the event in error {} will be ignored.";
+ "pipe {} 已被删除,错误中的事件 {} 将被忽略。";
public static final String THE_PIPE_WAS_DROPPED_SO_THE_EVENT_2 =
- "The pipe {} was dropped so the event {} will be dropped.";
+ "pipe {} 已被删除,事件 {} 将被丢弃。";
public static final String THE_QUALITY_VALUE_ONLY_SUPPORTS_BOOLEAN_TYPE =
- "The quality value only supports boolean type, while true == GOOD and false == BAD.";
+ "quality 值仅支持 boolean 类型,其中 true == GOOD,false == BAD。";
public static final String THE_SCHEMA_REGION_AIR_GAP_CONNECTOR_DOES =
- "The schema region air gap connector 不支持 transferring single file piece bytes.";
+ "schema region air gap connector 不支持传输单个文件片段字节。";
public static final String THE_SCHEMA_REGION_CONNECTOR_DOES_NOT_SUPPORT =
- "The schema region connector 不支持 transferring single file piece req.";
+ "schema region connector 不支持传输单个文件片段请求。";
public static final String THE_SECURITY_POLICY_CANNOT_BE_EMPTY =
- "The security policy cannot be empty.";
+ "安全策略不能为空。";
public static final String THE_SECURITY_POLICY_CAN_ONLY_BE_NONE =
- "The security policy can only be 'None', 'Basic128Rsa15', 'Basic256', 'Basic256Sha256', "
- + "'Aes128_Sha256_RsaOaep' or 'Aes256_Sha256_RsaPss'.";
+ "安全策略只能是 'None'、'Basic128Rsa15'、'Basic256'、'Basic256Sha256'、"
+ + "'Aes128_Sha256_RsaOaep' 或 'Aes256_Sha256_RsaPss'。";
public static final String THE_SEGMENTS_OF_TABLETS_MUST_EXIST =
- "The segments of tablets must exist";
+ "tablet 的 segment 必须存在";
public static final String THE_TABLET_OF_COMMITID_CAN_T_BE =
- "The tablet of commitId: {} can't be parsed by client, it will be retried later.";
+ "commitId 为 {} 的 tablet 无法被客户端解析,稍后将重试。";
public static final String THE_TRANSFER_THREAD_IS_INTERRUPTED = "传输线程被中断。";
public static final String THE_WEBSOCKET_CONNECTION_FROM_CLIENT_HAS_BEEN =
- "The websocket connection from client 已关闭!The code is {}. The reason is {}. Is it closed "
- + "by remote? {}";
+ "来自客户端的 WebSocket 连接已关闭!code 为 {},原因:{},是否由远端关闭:{}";
public static final String THE_WEBSOCKET_CONNECTION_FROM_CLIENT_HAS_BEEN_1 =
- "The websocket connection from client {}:{} 已关闭! The code is {}. The reason is {}. Is it "
- + "closed by remote? {}";
+ "来自客户端 {}:{} 的 WebSocket 连接已关闭!code 为 {},原因:{},是否由远端关闭:{}";
public static final String THE_WEBSOCKET_CONNECTION_FROM_CLIENT_HAS_BEEN_2 =
- "The websocket connection from client {}:{} has been opened!";
+ "来自客户端 {}:{} 的 WebSocket 连接已打开!";
public static final String THE_WEBSOCKET_CONNECTION_FROM_HAS_BEEN_CLOSED =
- "The websocket connection from {}:{} 已关闭, but the ack message of commitId: {} is received.";
+ "来自 {}:{} 的 WebSocket 连接已关闭,但收到了 commitId 为 {} 的 ack 消息。";
public static final String THE_WEBSOCKET_CONNECTION_FROM_HAS_BEEN_CLOSED_1 =
- "The websocket connection from {}:{} 已关闭, but the error message of commitId: {} is received.";
+ "来自 {}:{} 的 WebSocket 连接已关闭,但收到了 commitId 为 {} 的错误消息。";
public static final String THE_WEBSOCKET_SERVER_HAS_BEEN_STARTED =
- "The websocket server {}:{} 已启动!";
+ "WebSocket 服务器 {}:{} 已启动!";
public static final String THE_WRITTEN_TABLET_TIME_MAY_OVERLAP_OR =
- "The written Tablet time may overlap or the Schema may be incorrect";
+ "写入的 Tablet 时间可能重叠,或 Schema 可能不正确";
public static final String THIS_CONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTABLET =
- "This Connector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "该 Connector 仅支持 PipeInsertNodeTabletInsertionEvent 和 PipeRawTabletInsertionEvent。忽略 {}。";
public static final String TIMED_OUT_WHEN_WAITING_FOR_CLIENT_HANDSHAKE =
- "Timed out when waiting for client handshake finish.";
+ "等待客户端握手完成超时。";
public static final String TIOTCONSENSUSV2BATCHTRANSFERRESP_IS_NULL =
"TIoTConsensusV2BatchTransferResp 为空";
public static final String TIOTCONSENSUSV2TRANSFERRESP_IS_NULL = "TIoTConsensusV2TransferResp 为空";
public static final String TPIPETRANSFERRESP_IS_NULL = "TPipeTransferResp 为空";
public static final String TRANSFER_TSFILE_EVENT_ASYNCHRONOUSLY_WAS_INTERRUPTED =
- "Transfer tsfile event {} asynchronously was interrupted.";
- public static final String UNABLE_TO_CREATE_SECURITY_DIR = "无法创建 security dir: ";
+ "异步传输 TsFile 事件 {} 被中断。";
+ public static final String UNABLE_TO_CREATE_SECURITY_DIR = "无法创建安全目录:";
public static final String UNKNOWN_LOAD_BALANCE_STRATEGY_USE_ROUND_ROBIN =
- "未知的 load balance strategy: {}, use round-robin strategy instead。";
- public static final String UNSUPPORTED_BATCH_TYPE = "不支持的 batch type {}。";
+ "未知的负载均衡策略:{},将使用轮询策略替代。";
+ public static final String UNSUPPORTED_BATCH_TYPE = "不支持的批次类型 {}。";
public static final String UNSUPPORTED_BATCH_TYPE_WHEN_TRANSFERRING_TABLET_INSERTION =
- "不支持的 batch type {} when transferring tablet insertion event。";
- public static final String UNSUPPORTED_DATATYPE = "不支持的 dataType ";
+ "传输 tablet 插入事件时不支持批次类型 {}。";
+ public static final String UNSUPPORTED_DATATYPE = "不支持的数据类型 ";
public static final String UNSUPPORTED_EVENT_TYPE_WHEN_BUILDING_TRANSFER_REQUEST =
- "不支持的 event {} type {} when building transfer request";
+ "构建传输请求时不支持事件 {} 的类型 {}";
public static final String WAIT_FOR_RESOURCE_ENOUGH_FOR_SLICING_TSFILE =
- "等待 resource enough,已等待 slicing tsfile {} for {} 秒。";
+ "等待资源充足以切片 TsFile {},已等待 {} 秒。";
public static final String WEBSOCKETCONNECTOR_FAILED_TO_INCREASE_THE_REFERENCE_COUNT =
- "WebsocketConnector failed to increase the reference count of the event. Ignore it. "
- + "Current event: {}.";
+ "WebSocketConnector 增加事件引用计数失败,将忽略该事件。当前事件:{}。";
public static final String WEBSOCKETCONNECTOR_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTA =
- "WebsocketConnector only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Current event: {}.";
+ "WebSocketConnector 仅支持 PipeInsertNodeTabletInsertionEvent 和 "
+ + "PipeRawTabletInsertionEvent。当前事件:{}。";
public static final String WEBSOCKETCONNECTOR_ONLY_SUPPORT_PIPETSFILEINSERTIONEVENT_CURRENT_EVENT =
- "WebsocketConnector only support PipeTsFileInsertionEvent. Current event: {}.";
+ "WebSocketConnector 仅支持 PipeTsFileInsertionEvent。当前事件:{}。";
public static final String WHEN_THE_OPC_UA_SINK_POINTS_TO =
- "When the OPC UA sink points to an outer server, the table model data is not supported.";
+ "当 OPC UA sink 指向外部服务器时,不支持表模型数据。";
public static final String WHEN_THE_OPC_UA_SINK_SETS_WITH =
- "When the OPC UA sink sets 'with-quality' to true, the table model data is not supported.";
+ "当 OPC UA sink 将 'with-quality' 设为 true 时,不支持表模型数据。";
public static final String WRITEBACKSINK_ONLY_SUPPORT_PIPEINSERTNODETABLETINSERTIONEVENT_AND_PIPERAWTABLETI =
- "WriteBackSink only support PipeInsertNodeTabletInsertionEvent and "
- + "PipeRawTabletInsertionEvent. Ignore {}.";
+ "WriteBackSink 仅支持 PipeInsertNodeTabletInsertionEvent 和 PipeRawTabletInsertionEvent。忽略 {}。";
// ===================== RECEIVER =====================
public static final String ALL_RECEIVERS_RELATED_TO_ARE_RELEASED =
- "All Receivers related to {} are released.";
- public static final String AUTO_CREATE_DATABASE_FAILED_BECAUSE = "自动创建 database failed because: ";
+ "与 {} 相关的所有接收器均已释放。";
+ public static final String AUTO_CREATE_DATABASE_FAILED_BECAUSE = "自动创建数据库失败,原因:";
public static final String CREATE_DATABASE_ERROR_STATEMENT_RESULT_STATUS =
- "创建 Database error, statement: {}, result status : {}.";
+ "创建数据库出错,语句:{},结果状态:{}。";
public static final String DATABASE_NAME_IS_UNEXPECTEDLY_NULL_FOR_LOADTSFILESTATEMENT =
- "Database name is unexpectedly null for LoadTsFileStatement: {}. Skip data type conversion.";
+ "LoadTsFileStatement 的数据库名意外为空:{}。跳过数据类型转换。";
public static final String DATABASE_NAME_IS_UNEXPECTEDLY_NULL_FOR_STATEMENT =
- "Database name is unexpectedly null for statement: {}. Skip data type conversion.";
+ "statement 的数据库名意外为空:{}。跳过数据类型转换。";
public static final String DATA_TYPE_CONVERSION_FOR_LOADTSFILESTATEMENT_IS_SUCCESSFUL =
- "Data type conversion for LoadTsFileStatement {} is successful.";
+ "LoadTsFileStatement {} 的数据类型转换成功。";
public static final String DATA_TYPE_MISMATCH_DETECTED_TSSTATUS_FOR_LOADTSFILESTATEMENT =
- "Data type mismatch detected (TSStatus: {}) for LoadTsFileStatement: {}. Start data type "
- + "conversion.";
- public static final String DELETE_ERROR_STATEMENT = "Delete {} error, statement: {}.";
- public static final String DELETE_RESULT_STATUS = "Delete result status : {}.";
+ "检测到 LoadTsFileStatement 的数据类型不匹配(TSStatus:{}):{}。开始数据类型转换。";
+ public static final String DELETE_ERROR_STATEMENT = "删除 {} 出错,语句:{}。";
+ public static final String DELETE_RESULT_STATUS = "删除结果状态:{}。";
public static final String FAILED_TO_CLOSE_IOTDBAIRGAPRECEIVERAGENT_S_SERVER_SOCKET =
- "关闭 IoTDBAirGapReceiverAgent's server socket 失败";
+ "关闭 IoTDBAirGapReceiverAgent 的 server socket 失败";
public static final String FAILED_TO_CONVERT_DATA_TYPE_FOR_LOADTSFILESTATEMENT =
- "转换 data type for LoadTsFileStatement: {} 失败。";
+ "转换 LoadTsFileStatement {} 的数据类型失败。";
public static final String FAILED_TO_EXECUTE_STATEMENT_AFTER_DATA_TYPE =
- "execute statement after data type conversion 失败。";
+ "数据类型转换后执行语句失败。";
public static final String FAILED_TO_HANDLE_CONFIG_CLIENT_ID_EXIT =
- "处理 config client (id = {}) exit 失败";
+ "处理 config client(id = {})退出失败";
public static final String FAIL_TO_CREATE_IOTCONSENSUSV2_RECEIVER_FILE_FOLDERS =
- "创建 iotConsensusV2 receiver file folders allocation strategy 失败,原因:all disks of folders "
- + "are full.";
+ "创建 IoTConsensusV2 接收文件目录分配策略失败,原因:所有目录所在磁盘均已满。";
public static final String FAIL_TO_CREATE_PIPE_RECEIVER_FILE_FOLDERS =
- "创建 pipe receiver file folders allocation strategy 失败,原因:all disks of folders are full.";
+ "创建 pipe 接收文件目录分配策略失败,原因:所有目录所在磁盘均已满。";
public static final String FAIL_TO_INITIATE_FILE_BUFFER_FOLDER_ERROR =
- "初始化 file buffer folder, Error msg: {} 失败";
+ "初始化文件缓冲目录失败,错误消息:{}";
public static final String FAIL_TO_LOAD_PIPEDATA_BECAUSE = "加载 pipeData 失败,原因:{}.";
- public static final String FAIL_TO_RENAME_FILE_TO = "rename file {} to {} 失败";
+ public static final String FAIL_TO_RENAME_FILE_TO = "将文件 {} 重命名为 {} 失败";
public static final String INVOKE_HANDSHAKE_METHOD_FROM_CLIENT_IP =
- "Invoke handshake method from client ip = {}";
+ "调用来自客户端 ip = {} 的 handshake 方法";
public static final String INVOKE_TRANSPORTDATA_METHOD_FROM_CLIENT_IP =
- "Invoke transportData method from client ip = {}";
+ "调用来自客户端 ip = {} 的 transportData 方法";
public static final String INVOKE_TRANSPORTPIPEDATA_METHOD_FROM_CLIENT_IP =
- "Invoke transportPipeData method from client ip = {}";
+ "调用来自客户端 ip = {} 的 transportPipeData 方法";
public static final String IOTCONSENSUSV2RECEIVER_THREAD_IS_INTERRUPTED_WHEN_WAITING_FOR =
- "IoTConsensusV2Receiver thread is interrupted when waiting for receiver get initiated, "
- + "may because system exit.";
+ "IoTConsensusV2Receiver 线程在等待接收器初始化时被中断,可能是系统正在退出。";
public static final String IOTCONSENSUSV2_PIPENAME = "IoTConsensusV2-PipeName-{}:{}";
public static final String IOTCONSENSUSV2_PIPENAME_CURRENT_WAITING_IS_INTERRUPTED_ONSYNCEDCOMMITINDEX =
- "IoTConsensusV2-PipeName-{}:current waiting is interrupted. onSyncedCommitIndex: {}. "
- + "Exception: ";
+ "IoTConsensusV2-PipeName-{}:当前等待被中断。onSyncedCommitIndex:{}。异常:";
public static final String IOTCONSENSUSV2_PIPENAME_CURRENT_WRITING_FILE_WRITER_IS =
- "IoTConsensusV2-PipeName-{}:Current writing file writer 为空,无需关闭。";
+ "IoTConsensusV2-PipeName-{}:当前写入文件的 writer 为空,无需关闭。";
public static final String IOTCONSENSUSV2_PIPENAME_CURRENT_WRITING_FILE_WRITER_WAS =
- "IoTConsensusV2-PipeName-{}:Current writing file writer {} 已关闭.";
+ "IoTConsensusV2-PipeName-{}:当前写入文件的 writer {} 已关闭。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CLOSE_CURRENT_WRITING =
- "IoTConsensusV2-PipeName-{}:关闭 current writing file writer {} 失败,原因:{}.";
+ "IoTConsensusV2-PipeName-{}:关闭当前写入文件的 writer {} 失败,原因:{}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_FILE =
- "IoTConsensusV2-PipeName-{}:创建 receiver file dir {} 失败。";
+ "IoTConsensusV2-PipeName-{}:创建接收文件目录 {} 失败。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_FILE_1 =
- "IoTConsensusV2-PipeName-{}:创建 receiver file dir {}. Because parent system dir have been "
- + "deleted due to system concurrently exit 失败。";
+ "IoTConsensusV2-PipeName-{}:创建接收文件目录 {} 失败,原因:系统并发退出导致父系统目录已被删除。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_FILE_2 =
- "IoTConsensusV2-PipeName-{}:创建 receiver file dir {}. May 失败,原因:authority or dir already "
- + "exists etc.";
+ "IoTConsensusV2-PipeName-{}:创建接收文件目录 {} 失败,可能原因:权限不足或目录已存在等。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_CREATE_RECEIVER_TSFILEWRITER =
- "IoTConsensusV2-PipeName-{}:创建 receiver tsFileWriter-{} file dir {} 失败";
+ "IoTConsensusV2-PipeName-{}:创建接收端 TsFileWriter-{} 的文件目录 {} 失败";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_DELETE_BECAUSE =
- "IoTConsensusV2-PipeName-{}:{} Failed to delete {}, because {}.";
+ "IoTConsensusV2-PipeName-{}:{} 删除 {} 失败,原因:{}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_GET_BASE_DIRECTORY =
- "IoTConsensusV2-PipeName-{}:获取 base directory 失败";
+ "IoTConsensusV2-PipeName-{}:获取基础目录失败";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_LOAD_FILE_FROM =
- "IoTConsensusV2-PipeName-{}:加载 file {} from req {} 失败。";
+ "IoTConsensusV2-PipeName-{}:加载文件 {}(来自请求 {})失败。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_READ_TSFILE_WHEN =
- "IoTConsensusV2-PipeName-{}:读取 TsFile when counting points: {} 失败。";
+ "IoTConsensusV2-PipeName-{}:统计点数时读取 TsFile 失败:{}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_RETURN_TSFILEWRITER =
- "IoTConsensusV2-PipeName-{}:return tsFileWriter {} 失败。";
+ "IoTConsensusV2-PipeName-{}:归还 TsFileWriter {} 失败。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_BECAUSE =
- "IoTConsensusV2-PipeName-{}:封存 file {} 失败,原因:the file does not exist.";
+ "IoTConsensusV2-PipeName-{}:封存文件 {} 失败,原因:文件不存在。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_BECAUSE_1 =
- "IoTConsensusV2-PipeName-{}:封存 file {} 失败,原因:writing file is {}.";
+ "IoTConsensusV2-PipeName-{}:封存文件 {} 失败,原因:当前写入文件为 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_BECAUSE_2 =
- "IoTConsensusV2-PipeName-{}:封存 file {} 失败,原因:{}.";
+ "IoTConsensusV2-PipeName-{}:封存文件 {} 失败,原因:{}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_FROM =
- "IoTConsensusV2-PipeName-{}:封存 file {} from req {} 失败。";
+ "IoTConsensusV2-PipeName-{}:封存文件 {}(来自请求 {})失败。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_STATUS =
- "IoTConsensusV2-PipeName-{}:封存 file {}, status is {} 失败。";
+ "IoTConsensusV2-PipeName-{}:封存文件 {} 失败,状态为 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_WHEN =
- "IoTConsensusV2-PipeName-{}:封存 file {} when check final seal file 失败,原因:the length of "
- + "file is not correct. The original file has length {}, but receiver file has length {}.";
+ "IoTConsensusV2-PipeName-{}:检查最终封存文件时封存文件 {} 失败,原因:文件长度不正确。"
+ + "原始文件长度为 {},接收文件长度为 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_SEAL_FILE_WHEN_1 =
- "IoTConsensusV2-PipeName-{}:封存 file {} when check non final seal 失败,原因:the length of "
- + "file is not correct. The original file has length {}, but receiver file has length {}.";
+ "IoTConsensusV2-PipeName-{}:检查非最终封存时封存文件 {} 失败,原因:文件长度不正确。"
+ + "原始文件长度为 {},接收文件长度为 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_FAILED_TO_WRITE_FILE_PIECE =
- "IoTConsensusV2-PipeName-{}:写入 file piece from req {} 失败。";
+ "IoTConsensusV2-PipeName-{}:从请求 {} 写入文件片段失败。";
public static final String IOTCONSENSUSV2_PIPENAME_FILE_OFFSET_RESET_REQUESTED_BY =
- "IoTConsensusV2-PipeName-{}:File offset reset requested by receiver, response status = {}.";
+ "IoTConsensusV2-PipeName-{}:接收端请求重置文件偏移量,响应状态 = {}。";
public static final String IOTCONSENSUSV2_PIPENAME_ILLEGAL_FILE_NAME_WHEN_CHECKING =
- "IoTConsensusV2-PipeName-{}:非法的 file name {} when checking writing file。";
+ "IoTConsensusV2-PipeName-{}:检查写入文件时发现非法文件名 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_IS_NOT_EXISTED_NO_NEED =
"IoTConsensusV2-PipeName-{}:{} {} 不存在,无需删除。";
public static final String IOTCONSENSUSV2_PIPENAME_NO_EVENT_GET_EXECUTED_AFTER =
- "IoTConsensusV2-PipeName-{}:no.{} event get executed after awaiting timeout, current "
- + "receiver syncIndex: {}";
+ "IoTConsensusV2-PipeName-{}:等待超时后执行第 {} 个事件,当前接收端同步索引:{}";
public static final String IOTCONSENSUSV2_PIPENAME_NO_EVENT_GET_EXECUTED_BECAUSE =
- "IoTConsensusV2-PipeName-{}:no.{} event get executed because receiver buffer's len >= "
- + "pipeline, current receiver syncIndex {}, current buffer len {}";
+ "IoTConsensusV2-PipeName-{}:执行第 {} 个事件,原因:接收端缓冲区长度已达到 pipeline 阈值,"
+ + "当前接收端同步索引 {},当前缓冲区长度 {}";
public static final String IOTCONSENSUSV2_PIPENAME_PATH_TRAVERSAL_ATTEMPT_DETECTED_FILENAME =
- "IoTConsensusV2-PipeName-{}:Path traversal attempt detected! Filename: {}";
+ "IoTConsensusV2-PipeName-{}:检测到路径遍历尝试!文件名:{}";
public static final String IOTCONSENSUSV2_PIPENAME_PROCESS_NO_EVENT_SUCCESSFULLY =
- "IoTConsensusV2-PipeName-{}:process no.{} event successfully!";
+ "IoTConsensusV2-PipeName-{}:处理第 {} 个事件成功。";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVED_A_DEPRECATED_REQUEST_WHICH =
- "IoTConsensusV2-PipeName-{}:received a deprecated request-{}, which may because {}. ";
+ "IoTConsensusV2-PipeName-{}:收到已弃用的请求-{},可能原因:{}。";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_DETECTED_AN_NEWER_PIPETASKRESTARTTIMES =
- "IoTConsensusV2-PipeName-{}:receiver detected an newer pipeTaskRestartTimes, which "
- + "indicates the pipe task has restarted. receiver will reset all its data.";
+ "IoTConsensusV2-PipeName-{}:接收端检测到更新的 pipeTaskRestartTimes,表示 pipe 任务已重启。"
+ + "接收端将重置其所有数据。";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_DETECTED_AN_NEWER_REBOOTTIMES =
- "IoTConsensusV2-PipeName-{}:receiver detected an newer rebootTimes, which indicates the "
- + "leader has rebooted. receiver will reset all its data.";
+ "IoTConsensusV2-PipeName-{}:接收端检测到更新的 rebootTimes,表示主节点已重启。接收端将重置其所有数据。";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_FILE_DIR_WAS_CREATED =
- "IoTConsensusV2-PipeName-{}:Receiver file dir {} 已创建.";
+ "IoTConsensusV2-PipeName-{}:接收文件目录 {} 已创建。";
public static final String IOTCONSENSUSV2_PIPENAME_RECEIVER_THREAD_GET_INTERRUPTED_WHEN =
- "IoTConsensusV2-PipeName-{}:receiver thread get interrupted when exiting.";
+ "IoTConsensusV2-PipeName-{}:接收线程退出时被中断。";
public static final String IOTCONSENSUSV2_PIPENAME_SEAL_FILE_SUCCESSFULLY =
- "IoTConsensusV2-PipeName-{}:成功封存 file {}。";
+ "IoTConsensusV2-PipeName-{}:成功封存文件 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_SEAL_FILE_WITH_MODS_SUCCESSFULLY =
- "IoTConsensusV2-PipeName-{}:成功封存 file with mods {}。";
+ "IoTConsensusV2-PipeName-{}:成功封存包含 mods 的文件 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_SKIP_LOAD_TSFILE_WHEN_SEALING =
- "IoTConsensusV2-PipeName-{}:skip load tsfile-{} when sealing, because this region has "
- + "been removed or migrated.";
+ "IoTConsensusV2-PipeName-{}:封存时跳过加载 TsFile-{},因为该 Region 已被移除或迁移。";
public static final String IOTCONSENSUSV2_PIPENAME_STARTING_TO_RECEIVE_TSFILE_PIECES =
- "IoTConsensusV2-PipeName-{}:开始接收 tsFile pieces";
+ "IoTConsensusV2-PipeName-{}:开始接收 TsFile 片段";
public static final String IOTCONSENSUSV2_PIPENAME_STARTING_TO_RECEIVE_TSFILE_SEAL =
- "IoTConsensusV2-PipeName-{}:开始接收 tsFile seal";
+ "IoTConsensusV2-PipeName-{}:开始接收 TsFile 封存请求";
public static final String IOTCONSENSUSV2_PIPENAME_STARTING_TO_RECEIVE_TSFILE_SEAL_1 =
- "IoTConsensusV2-PipeName-{}:开始接收 tsFile seal with mods";
+ "IoTConsensusV2-PipeName-{}:开始接收带 mods 的 TsFile 封存请求";
public static final String IOTCONSENSUSV2_PIPENAME_START_TO_RECEIVE_NO_EVENT =
- "IoTConsensusV2-PipeName-{}:开始接收 no.{} event";
+ "IoTConsensusV2-PipeName-{}:开始接收第 {} 个事件";
public static final String IOTCONSENSUSV2_PIPENAME_THE_POINT_COUNT_OF_TSFILE =
- "IoTConsensusV2-PipeName-{}:The point count of TsFile {} is not given by sender, will "
- + "read actual point count from TsFile.";
+ "IoTConsensusV2-PipeName-{}:发送端未给出 TsFile {} 的点数,将从 TsFile 读取实际点数。";
public static final String IOTCONSENSUSV2_PIPENAME_TSFILEWRITER_RETURNED_SELF =
- "IoTConsensusV2-PipeName-{}:tsFileWriter-{} returned self";
+ "IoTConsensusV2-PipeName-{}:TsFileWriter-{} 已归还自身";
public static final String IOTCONSENSUSV2_PIPENAME_TSFILEWRITER_ROLL_TO_WRITING_PATH =
- "IoTConsensusV2-PipeName-{}:tsfileWriter-{} roll to writing path {}";
+ "IoTConsensusV2-PipeName-{}:TsFileWriter-{} 已切换至写入路径 {}";
public static final String IOTCONSENSUSV2_PIPENAME_TSFILE_WRITER_IS_CLEANED_UP =
- "IoTConsensusV2-PipeName-{}:tsfile writer-{} is cleaned up because no new requests were "
- + "received for too long.";
+ "IoTConsensusV2-PipeName-{}:TsFileWriter-{} 已被清理,原因:长时间未收到新请求。";
public static final String IOTCONSENSUSV2_PIPENAME_UNKNOWN_PIPEREQUESTTYPE_RESPONSE_STATUS =
- "IoTConsensusV2-PipeName-{}:未知的 PipeRequestType, response status = {}。";
+ "IoTConsensusV2-PipeName-{}:未知的 PipeRequestType,响应状态 = {}。";
public static final String IOTCONSENSUSV2_PIPENAME_WAS_DELETED =
- "IoTConsensusV2-PipeName-{}:{} {} 已删除.";
+ "IoTConsensusV2-PipeName-{}:{} {} 已删除。";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_IS_NOT_AVAILABLE =
- "IoTConsensusV2-PipeName-{}:Writing file {} 不可用. Writing file is null: {}, writing file "
- + "exists: {}, writing file writer is null: {}.";
+ "IoTConsensusV2-PipeName-{}:写入文件 {} 不可用。写入文件为空:{},写入文件存在:{},"
+ + "写入文件的 writer 为空:{}。";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_IS_NOT_EXISTED =
- "IoTConsensusV2-PipeName-{}:Writing file {} 不存在或名称不正确,尝试创建。Current writing file is {}.";
+ "IoTConsensusV2-PipeName-{}:写入文件 {} 不存在或名称不正确,尝试创建。当前写入文件为 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_S_OFFSET_IS =
- "IoTConsensusV2-PipeName-{}:Writing file {}'s offset is {}, but request sender's offset "
- + "is {}.";
+ "IoTConsensusV2-PipeName-{}:写入文件 {} 的偏移量为 {},但请求发送端的偏移量为 {}。";
public static final String IOTCONSENSUSV2_PIPENAME_WRITING_FILE_WAS_CREATED_READY =
- "IoTConsensusV2-PipeName-{}:Writing file {} 已创建. Ready to write file pieces.";
+ "IoTConsensusV2-PipeName-{}:写入文件 {} 已创建。准备写入文件片段。";
public static final String IOTCONSENSUSV2_RECEIVE_ON_THE_FLY_NO_EVENT =
- "IoTConsensusV2-{}:receive on-the-fly no.{} event after data region 已删除, discard it";
+ "IoTConsensusV2-{}:DataRegion 已删除后收到实时传输的第 {} 个事件,将丢弃该事件";
public static final String IOTCONSENSUSV2_TRANSFER_BATCH_HASN_T_BEEN_IMPLEMENTED =
- "IoTConsensusV2 transfer batch hasn't been implemented yet.";
+ "IoTConsensusV2 批量传输尚未实现。";
public static final String IOTCONSENSUSV2_TSFILEWRITER_SET_NULL_WRITING_FILE =
- "IoTConsensusV2-{}:TsFileWriter-{} set null writing file";
+ "IoTConsensusV2-{}:TsFileWriter-{} 将写入文件设为空";
public static final String IOTCONSENSUSV2_TSFILEWRITER_SET_NULL_WRITING_FILE_WRITER =
- "IoTConsensusV2-{}:TsFileWriter-{} set null writing file writer";
+ "IoTConsensusV2-{}:TsFileWriter-{} 将写入文件的 writer 设为空";
public static final String IOTCONSENSUSV2_UNKNOWN_IOTCONSENSUSV2REQUESTVERSION_RESPONSE_STATUS =
- "IoTConsensusV2:未知的 IoTConsensusV2RequestVersion, response status = {}。";
+ "IoTConsensusV2:未知的 IoTConsensusV2RequestVersion,响应状态 = {}。";
public static final String IOTCONSENSUSV2_UNKNOWN_PIPEREQUESTTYPE_RESPONSE_STATUS =
- "IoTConsensusV2 Unknown PipeRequestType, response status = {}.";
+ "IoTConsensusV2:未知的 PipeRequestType,响应状态 = {}。";
public static final String IOTCONSENSUSV2_WAITING_FOR_THE_PREVIOUS_EVENT_TIMES =
- "IoTConsensusV2-{}:等待 the previous event times out, current peek {}, current id {}";
+ "IoTConsensusV2-{}:等待上一个事件超时,当前队首元素:{},当前 ID:{}";
public static final String IOTDBAIRGAPRECEIVERAGENT_STARTED =
- "IoTDBAirGapReceiverAgent {} started.";
+ "IoTDBAirGapReceiverAgent {} 已启动。";
public static final String IOTDBAIRGAPRECEIVERAGENT_STOPPED =
- "IoTDBAirGapReceiverAgent {} stopped.";
+ "IoTDBAirGapReceiverAgent {} 已停止。";
public static final String LOAD_ACTIVE_LISTENING_PIPE_DIR_IS_NOT =
- "Load active listening pipe dir is not set.";
+ "未设置加载 active listening pipe 目录。";
public static final String LOAD_PIPEDATA_WITH_SERIALIZE_NUMBER_SUCCESSFULLY =
- "Load pipeData with serialize number {} successfully.";
- public static final String LOAD_TSFILE_ERROR_STATEMENT = "Load TsFile {} error, statement: {}.";
- public static final String LOAD_TSFILE_RESULT_STATUS = "Load TsFile result status : {}.";
- public static final String PARSE_DATABASE_PARTIALPATH_ERROR = "Parse database PartialPath {} 出错。";
+ "成功加载序列号为 {} 的 pipeData。";
+ public static final String LOAD_TSFILE_ERROR_STATEMENT = "加载 TsFile {} 出错,语句:{}。";
+ public static final String LOAD_TSFILE_RESULT_STATUS = "加载 TsFile 结果状态:{}。";
+ public static final String PARSE_DATABASE_PARTIALPATH_ERROR = "解析数据库 PartialPath {} 出错。";
public static final String PIPE_AIR_GAP_RECEIVER_CHECKSUM_FAILED_EXPECTED =
- "Pipe air gap receiver {}: checksum failed, expected: {}, actual: {}";
+ "Pipe air gap receiver {}:校验和校验失败,期望值:{},实际值:{}";
public static final String PIPE_AIR_GAP_RECEIVER_CLOSED_BECAUSE_OF =
- "Pipe air gap receiver {} closed because of checksum failed. Socket: {}";
+ "Pipe air gap receiver {} 因校验和校验失败而关闭。Socket:{}";
public static final String PIPE_AIR_GAP_RECEIVER_CLOSED_BECAUSE_OF_1 =
- "Pipe air gap receiver {} closed because of exception. Socket: {}";
+ "Pipe air gap receiver {} 因异常而关闭。Socket:{}";
public static final String PIPE_AIR_GAP_RECEIVER_CLOSED_BECAUSE_SOCKET =
- "Pipe air gap receiver {} closed because socket 已关闭. Socket: {}";
+ "Pipe air gap receiver {} 因 socket 已关闭而关闭。Socket:{}";
public static final String PIPE_AIR_GAP_RECEIVER_EXCEPTION_DURING_HANDLING =
- "Pipe air gap receiver {}: Exception during handling receiving. Socket: {}";
+ "Pipe air gap receiver {}:处理接收数据时发生异常。Socket:{}";
public static final String PIPE_AIR_GAP_RECEIVER_HANDLE_DATA_FAILED =
- "Pipe air gap receiver {}: Handle data failed, status: {}, req: {}";
+ "Pipe air gap receiver {}:处理数据失败,状态:{},请求:{}";
public static final String PIPE_AIR_GAP_RECEIVER_SOCKET_CLOSED_WHEN =
- "Pipe air gap receiver {}: Socket {} closed when listening to data. Because: {}";
+ "Pipe air gap receiver {}:监听数据时 Socket {} 关闭。原因:{}";
public static final String PIPE_AIR_GAP_RECEIVER_STARTED_SOCKET =
- "Pipe air gap receiver {} started. Socket: {}";
+ "Pipe air gap receiver {} 已启动。Socket:{}";
public static final String PIPE_AIR_GAP_RECEIVER_TEMPORARY_UNAVAILABLE_RETRY =
- "Pipe air gap receiver {}: Temporary unavailable retry timed out, returning FAIL to sender.";
+ "Pipe air gap receiver {}:临时不可用重试超时,向发送端返回 FAIL。";
public static final String PIPE_AIR_GAP_RECEIVER_TSSTATUS_IS_ENCOUNTERED =
- "Pipe air gap receiver {}: TSStatus {} is encountered at the air gap receiver, will ignore.";
- public static final String PIPE_DATA_TRANSPORT_ERROR = "Pipe data transport error, {}";
+ "Pipe air gap receiver {}:air gap receiver 遇到 TSStatus {},将忽略。";
+ public static final String PIPE_DATA_TRANSPORT_ERROR = "Pipe 数据传输错误,{}";
public static final String PIPE_INSERTING_TABLET_TO_CASTING_TYPE_FROM =
- "Pipe:Inserting tablet to {}.{}. Casting type from {} to {}.";
- public static final String RECEIVERS_EXECUTOR_IS_CLOSED = "Receivers-{}' executor 已关闭.";
- public static final String RECEIVER_EXIT_SUCCESSFULLY = "Receiver-{} exit successfully.";
+ "Pipe:正在向 {}.{} 插入 tablet。将类型从 {} 转换为 {}。";
+ public static final String RECEIVERS_EXECUTOR_IS_CLOSED = "Receivers-{} 的执行器已关闭。";
+ public static final String RECEIVER_EXIT_SUCCESSFULLY = "Receiver-{} 退出成功。";
public static final String RECEIVER_ID = "接收器 id = {}:{}";
public static final String RECEIVER_ID_THE_NUMBER_OF_DEVICE_PATHS =
- "接收器 id = {}:The number of device paths is not equal to sub-status in statement {}: {}.";
+ "接收器 id = {}:device path 数量与语句 {} 中的 sub-status 数量不相等:{}。";
public static final String RECEIVER_ID_UNKNOWN_PIPEREQUESTTYPE_RESPONSE_STATUS =
- "接收器 id = {}:未知的 PipeRequestType, response status = {}。";
+ "接收器 id = {}:未知的 PipeRequestType,响应状态 = {}。";
public static final String RECEIVER_ID_UNSUPPORTED_STATEMENT_TYPE_FOR_REDIRECTION =
- "接收器 id = {}:不支持的 statement type {} for redirection。";
- public static final String RECEIVER_IS_READY = "Receiver-{} is ready";
+ "接收器 id = {}:不支持用于重定向的 statement 类型 {}。";
+ public static final String RECEIVER_IS_READY = "Receiver-{} 已就绪";
public static final String REGISTER_WITH_INTERVAL_IN_SECONDS_SUCCESSFULLY =
- "Register {} with interval in seconds {} successfully.";
+ "成功注册 {},间隔为 {} 秒。";
public static final String SOCKET_CLOSED_WHEN_EXECUTING_READTILLFULL =
- "Socket closed when executing readTillFull.";
+ "执行 readTillFull 时 Socket 已关闭。";
public static final String SOCKET_CLOSED_WHEN_EXECUTING_SKIPTILLENOUGH =
- "Socket closed when executing skipTillEnough.";
+ "执行 skipTillEnough 时 Socket 已关闭。";
public static final String START_LOAD_PIPEDATA_WITH_SERIALIZE_NUMBER_AND =
- "Start load pipeData with serialize number {} and type {},value={}";
- public static final String STORAGE_ENGINE_READONLY = "storage engine readonly";
- public static final String SYNC_START_AT_TO_IS_DONE = "Sync {} start at {} to {} is done.";
+ "开始加载序列号为 {}、类型为 {}、值为 {} 的 pipeData";
+ public static final String STORAGE_ENGINE_READONLY = "存储引擎只读";
+ public static final String SYNC_START_AT_TO_IS_DONE = "同步 {} 从 {} 到 {} 已完成。";
public static final String TEMPORARY_UNAVAILABLE_EXCEPTION_ENCOUNTERED_AT_AIR_GAP =
- "Temporary unavailable exception encountered at air gap receiver, will retry locally.";
+ "air gap receiver 遇到临时不可用异常,将在本地重试。";
public static final String THE_IOTCONSENSUSV2_REQUEST_VERSION_IS_DIFFERENT_FROM =
- "The iotConsensusV2 request version {} is different from the sender request version {}, "
- + "the receiver will be reset to the sender request version.";
+ "IoTConsensusV2 请求版本 {} 与发送端请求版本 {} 不同,接收端将重置为发送端请求版本。";
public static final String THE_START_INDEX_OF_DATA_SYNC_IS =
- "The start index {} of data sync is not valid. The file is not exist and start index "
- + "should equal to 0).";
+ "数据同步起始索引 {} 无效。文件不存在,起始索引应等于 0。";
public static final String THE_START_INDEX_OF_DATA_SYNC_IS_1 =
- "The start index {} of data sync is not valid. The start index of the file should equal "
- + "to {}.";
+ "数据同步起始索引 {} 无效。文件的起始索引应等于 {}。";
public static final String THRIFT_CONNECTION_IS_NOT_ALIVE = "Thrift 连接已断开。";
public static final String TSFILECHECKER_DID_NOT_TERMINATE_WITHIN_S =
- "TsFileChecker did not terminate within {}s";
+ "TsFileChecker 未在 {} 秒内终止";
public static final String TSFILECHECKER_THREAD_STILL_DOESN_T_EXIT_AFTER =
- "TsFileChecker Thread {} still doesn't exit after 30s";
+ "TsFileChecker 线程 {} 在 30 秒后仍未退出";
public static final String UNHANDLED_EXCEPTION_DURING_PIPE_AIR_GAP_RECEIVER =
- "Unhandled exception during pipe air gap receiver listening";
- public static final String UNSUPPORTED_DATA_TYPE = "不支持的 data type: ";
+ "pipe air gap receiver 监听期间发生未处理异常";
+ public static final String UNSUPPORTED_DATA_TYPE = "不支持的数据类型:";
// ===================== RESOURCE =====================
public static final String CANNOT_GET_DATA_REGION_IDS_USE_DEFAULT =
- "无法获取 data region ids, use default lock segment size: {}";
+ "无法获取 data region ID,使用默认锁分段大小:{}";
public static final String EXPAND_CALLBACK_IS_NOT_SUPPORTED_IN_PIPEFIXEDMEMORYBLOCK =
- "Expand callback is not supported in PipeFixedMemoryBlock";
+ "PipeFixedMemoryBlock 不支持扩展回调";
public static final String EXPAND_METHOD_IS_NOT_SUPPORTED_IN_PIPEFIXEDMEMORYBLOCK =
- "Expand method is not supported in PipeFixedMemoryBlock";
+ "PipeFixedMemoryBlock 不支持扩展方法";
public static final String FAILED_TO_CACHEDEVICEISALIGNEDMAPIFABSENT_FOR_TSFILE_BECAUSE_MEMORY =
- "cacheDeviceIsAlignedMapIfAbsent for tsfile {} 失败,原因:memory usage is high";
+ "对 TsFile {} 执行 cacheDeviceIsAlignedMapIfAbsent 失败,原因:内存使用率过高";
public static final String FAILED_TO_CACHEOBJECTSIFABSENT_FOR_TSFILE_BECAUSE_MEMORY =
- "cacheObjectsIfAbsent for tsfile {} 失败,原因:memory usage is high";
+ "对 TsFile {} 执行 cacheObjectsIfAbsent 失败,原因:内存使用率过高";
public static final String FAILED_TO_ESTIMATE_SIZE_FOR_INSERTNODE =
- "estimate size for InsertNode: {} 失败";
+ "估算 InsertNode 大小失败:{}";
public static final String FAILED_TO_EXECUTE_THE_EXPAND_CALLBACK =
- "execute the expand callback 失败。";
+ "执行扩展回调失败。";
public static final String FAILED_TO_EXECUTE_THE_SHRINK_CALLBACK =
- "execute the shrink callback 失败。";
+ "执行收缩回调失败。";
public static final String FAILED_TO_GET_FILE_SIZE_OF_LINKED =
- "获取 file size of linked TsFile {}: 失败";
+ "获取链接 TsFile {} 的文件大小失败:";
public static final String FORCEALLOCATEWITHRETRY_INTERRUPTED_WHILE_WAITING_FOR_AVAILABLE_MEMORY =
"forceAllocateWithRetry:等待可用内存时被中断";
public static final String FORCEALLOCATE_INTERRUPTED_WHILE_WAITING_FOR_AVAILABLE_MEMORY =
- "forceAllocate: interrupted while waiting for available memory";
+ "forceAllocate:等待可用内存时被中断";
public static final String FORCERESIZE_CANNOT_RESIZE_A_NULL_OR_RELEASED =
- "forceResize: cannot resize a null or released memory block";
+ "forceResize:不能 resize 空内存块或已释放内存块";
public static final String FORCERESIZE_INTERRUPTED_WHILE_WAITING_FOR_AVAILABLE_MEMORY =
- "forceResize: interrupted while waiting for available memory";
- public static final String INTERRUPTED_WHILE_WAITING_FOR_THE_LOCK = "waiting for the lock 时被中断。";
+ "forceResize:等待可用内存时被中断";
+ public static final String 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.";
+ "PipePeriodicalLogReducer 已分配 {} 字节。";
public static final String PIPETSFILERESOURCE_CACHED_DEVICEISALIGNEDMAP_FOR_TSFILE =
- "PipeTsFileResource: Cached deviceIsAlignedMap for tsfile {}.";
+ "PipeTsFileResource:已为 TsFile {} 缓存 deviceIsAlignedMap。";
public static final String PIPETSFILERESOURCE_CACHED_OBJECTS_FOR_TSFILE =
- "PipeTsFileResource: Cached objects for tsfile {}.";
+ "PipeTsFileResource:已为 TsFile {} 缓存对象。";
public static final String PIPETSFILERESOURCE_CLOSED_TSFILE_AND_CLEANED_UP =
- "PipeTsFileResource: Closed tsfile {} and cleaned up.";
+ "PipeTsFileResource:已关闭 TsFile {} 并完成清理。";
public static final String PIPETSFILERESOURCE_FAILED_TO_CACHE_OBJECTS_FOR_TSFILE =
- "PipeTsFileResource: Failed to cache objects for tsfile {} in cache, because memory "
- + "usage is high";
+ "PipeTsFileResource:将 TsFile {} 的对象写入缓存失败,原因:内存使用率过高";
public static final String PIPETSFILERESOURCE_FAILED_TO_DELETE_TSFILE_WHEN_CLOSING =
- "PipeTsFileResource: Failed to delete tsfile {} when closing, because {}. Please "
- + "MANUALLY delete it.";
+ "PipeTsFileResource:关闭时删除 TsFile {} 失败,原因:{}。请手动删除该文件。";
public static final String PIPETSFILERESOURCE_S_REFERENCE_COUNT_IS_DECREASED_TO =
- "PipeTsFileResource's reference count is decreased to below 0.";
+ "PipeTsFileResource 的引用计数已减少到 0 以下。";
public static final String PIPE_HARDLINK_DIR_FOUND_DELETING_IT_RESULT =
- "Pipe hardlink dir found, deleting it: {}, result: {}";
+ "发现 Pipe 硬链接目录,正在删除:{},结果:{}";
public static final String PIPE_SNAPSHOT_DIR_FOUND_DELETING_IT =
- "Pipe snapshot dir found, deleting it: {},";
+ "发现 Pipe 快照目录,正在删除:{},";
public static final String SHRINK_CALLBACK_IS_NOT_SUPPORTED_IN_PIPEFIXEDMEMORYBLOCK =
- "Shrink callback is not supported in PipeFixedMemoryBlock";
+ "PipeFixedMemoryBlock 不支持收缩回调";
public static final String SHRINK_METHOD_IS_NOT_SUPPORTED_IN_PIPEFIXEDMEMORYBLOCK =
- "Shrink method is not supported in PipeFixedMemoryBlock";
+ "PipeFixedMemoryBlock 不支持收缩方法";
public static final String THE_MEMORY_BLOCK_HAS_BEEN_RELEASED = "内存块已被释放";
public static final String THE_MULTIPLE_N_MUST_BE_GREATER_THAN =
- "The multiple n must be greater than 0";
+ "倍数 n 必须大于 0";
public static final String TRYALLOCATE_ALLOCATED_MEMORY_TOTAL_MEMORY_SIZE_BYTES =
- "tryAllocate: allocated memory, total memory size {} bytes, used memory size {} bytes, "
- + "original requested memory size {} bytes, actual requested memory size {} bytes";
+ "tryAllocate:已分配内存,总内存大小 {} 字节,已用内存大小 {} 字节,"
+ + "原始请求内存大小 {} 字节,实际请求内存大小 {} 字节";
public static final String TRYALLOCATE_FAILED_TO_ALLOCATE_MEMORY_TOTAL_MEMORY =
- "tryAllocate: failed to allocate memory, total memory size {} bytes, used memory size {} "
- + "bytes, requested memory size {} bytes";
+ "tryAllocate:分配内存失败,总内存大小 {} 字节,已用内存大小 {} 字节,请求内存大小 {} 字节";
public static final String TRYEXPANDALLANDCHECKCONSISTENCY_MEMORY_USAGE_IS_NOT_CONSISTENT_WITH =
- "tryExpandAllAndCheckConsistency: memory usage is not consistent with allocated blocks, "
- + "usedMemorySizeInBytes is {} but sum of all blocks is {}";
+ "tryExpandAllAndCheckConsistency:内存使用量与已分配块不一致,usedMemorySizeInBytes 为 {},"
+ + "但所有块的总和为 {}";
public static final String TRYEXPANDALLANDCHECKCONSISTENCY_MEMORY_USAGE_OF_TABLETS_IS_NOT =
- "tryExpandAllAndCheckConsistency: memory usage of tablets is not consistent with "
- + "allocated blocks, usedMemorySizeInBytesOfTablets is {} but sum of all tablet blocks is "
- + "{}";
+ "tryExpandAllAndCheckConsistency:tablet 内存使用量与已分配块不一致,"
+ + "usedMemorySizeInBytesOfTablets 为 {},但所有 tablet 块的总和为 {}";
public static final String TRYEXPANDALLANDCHECKCONSISTENCY_MEMORY_USAGE_OF_TSFILES_IS_NOT =
- "tryExpandAllAndCheckConsistency: memory usage of tsfiles is not consistent with "
- + "allocated blocks, usedMemorySizeInBytesOfTsFiles is {} but sum of all tsfile blocks is "
- + "{}";
+ "tryExpandAllAndCheckConsistency:TsFile 内存使用量与已分配块不一致,"
+ + "usedMemorySizeInBytesOfTsFiles 为 {},但所有 TsFile 块的总和为 {}";
// ===================== METRIC =====================
public static final String FAILED_TO_DEREGISTER_PIPE_ASSIGNER_METRICS_PIPEDATAREGIONASSIGNER =
- "注销 pipe assigner metrics, PipeDataRegionAssigner({}) does not exist 失败";
+ "注销 pipe assigner 指标失败,PipeDataRegionAssigner({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_DATA_REGION_EXTRACTOR =
- "注销 pipe data region extractor metrics, IoTDBDataRegionExtractor({}) does not exist 失败";
+ "注销 pipe data region extractor 指标失败,IoTDBDataRegionExtractor({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_DATA_REGION_SINK =
- "注销 pipe data region sink metrics, PipeSinkSubtask({}) does not exist 失败";
+ "注销 pipe data region sink 指标失败,PipeSinkSubtask({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_REMAINING_EVENT_AND =
- "注销 pipe remaining event and time metrics, RemainingEventAndTimeOperator({}) does not "
- + "exist 失败";
+ "注销 pipe remaining event and time 指标失败,RemainingEventAndTimeOperator({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_SCHEMA_REGION_CONNECTOR =
- "注销 pipe schema region connector metrics, PipeConnectorSubtask({}) does not exist 失败";
+ "注销 pipe schema region connector 指标失败,PipeConnectorSubtask({}) 不存在";
public static final String FAILED_TO_DEREGISTER_PIPE_SCHEMA_REGION_SOURCE =
- "注销 pipe schema region source metrics, IoTDBSchemaRegionSource({}) does not exist 失败";
+ "注销 pipe schema region source 指标失败,IoTDBSchemaRegionSource({}) 不存在";
public static final String SKIP_DEREGISTER_PIPE_TSFILE_TO_TABLETS =
- "跳过注销 pipe tsfile to tablets metrics,因为 pipeID({}) 未注册";
+ "跳过注销 pipe tsfile to tablets 指标,因为 pipeID({}) 未注册";
public static final String FAILED_TO_DEREGISTER_SCHEMA_REGION_LISTENER_METRICS =
- "注销 schema region listener metrics, SchemaRegionListeningQueue({}) does not exist 失败";
+ "注销 schema region listener 指标失败,SchemaRegionListeningQueue({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_DATA_REGION_EXTRACTOR =
- "mark pipe data region extractor heartbeat event, IoTDBDataRegionExtractor({}) does not "
- + "exist 失败";
+ "标记 pipe data region extractor 心跳事件失败,IoTDBDataRegionExtractor({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_DATA_REGION_EXTRACTOR_1 =
- "mark pipe data region extractor tablet event, IoTDBDataRegionExtractor({}) does not "
- + "exist 失败";
+ "标记 pipe data region extractor tablet 事件失败,IoTDBDataRegionExtractor({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_DATA_REGION_EXTRACTOR_2 =
- "mark pipe data region extractor tsfile event, IoTDBDataRegionExtractor({}) does not "
- + "exist 失败";
+ "标记 pipe data region extractor TsFile 事件失败,IoTDBDataRegionExtractor({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_DATA_REGION_SINK =
- "mark pipe data region sink tablet event, PipeSinkSubtask({}) does not exist 失败";
+ "标记 pipe data region sink tablet 事件失败,PipeSinkSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_DATA_REGION_SINK_1 =
- "mark pipe data region sink tsfile event, PipeSinkSubtask({}) does not exist 失败";
+ "标记 pipe data region sink TsFile 事件失败,PipeSinkSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_PROCESSOR_HEARTBEAT_EVENT =
- "mark pipe processor heartbeat event, PipeProcessorSubtask({}) does not exist 失败";
+ "标记 pipe processor 心跳事件失败,PipeProcessorSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_PROCESSOR_TABLET_EVENT =
- "mark pipe processor tablet event, PipeProcessorSubtask({}) does not exist 失败";
+ "标记 pipe processor tablet 事件失败,PipeProcessorSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_PROCESSOR_TSFILE_EVENT =
- "mark pipe processor tsfile event, PipeProcessorSubtask({}) does not exist 失败";
+ "标记 pipe processor TsFile 事件失败,PipeProcessorSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_REGION_COMMIT_REMAININGEVENTANDTIMEOPERATOR =
- "mark pipe region commit, RemainingEventAndTimeOperator({}) does not exist 失败";
+ "标记 pipe region commit 失败,RemainingEventAndTimeOperator({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_SCHEMA_REGION_WRITE =
- "mark pipe schema region write plan event, PipeConnectorSubtask({}) does not exist 失败";
+ "标记 pipe schema region write plan 事件失败,PipeConnectorSubtask({}) 不存在";
public static final String FAILED_TO_MARK_PIPE_TSFILE_TO_TABLETS =
- "mark pipe tsfile to tablets invocation, pipeID({}) does not exist 失败";
+ "标记 pipe tsfile to tablets 调用失败,pipeID({}) 不存在";
public static final String FAILED_TO_RECORD_PIPE_TSFILE_TO_TABLETS =
- "记录 pipe tsfile to tablets time, pipeID({}) does not exist 失败";
+ "记录 pipe tsfile to tablets 耗时失败,pipeID({}) 不存在";
public static final String FAILED_TO_RECORD_TABLET_GENERATED_PIPEID_DOES =
- "记录 tablet generated, pipeID({}) does not exist 失败";
+ "记录 tablet generated 失败,pipeID({}) 不存在";
public static final String FAILED_TO_SET_RECENT_PROCESSED_TSFILE_EPOCH =
- "设置 recent processed tsfile epoch state, PipeRealtimeDataRegionExtractor({}) does not "
- + "exist 失败";
+ "设置最近处理的 TsFile epoch 状态失败,PipeRealtimeDataRegionExtractor({}) 不存在";
public static final String FAILED_TO_UNBIND_FROM_PIPE_ASSIGNER_METRICS =
- "解绑 from pipe assigner metrics, assigner map not empty 失败";
+ "从 pipe assigner 指标解绑失败,assigner map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_DATA_REGION =
- "解绑 from pipe data region sink metrics, sink map not empty 失败";
+ "从 pipe data region sink 指标解绑失败,sink map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_EXTRACTOR_METRICS =
- "解绑 from pipe extractor metrics, extractor map not empty 失败";
+ "从 pipe extractor 指标解绑失败,extractor map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_PROCESSOR_METRICS =
- "解绑 from pipe processor metrics, processor map not empty 失败";
+ "从 pipe processor 指标解绑失败,processor map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_REMAINING_EVENT =
- "解绑 from pipe remaining event and time metrics, RemainingEventAndTimeOperator map not "
- + "empty 失败";
+ "从 pipe remaining event and time 指标解绑失败,RemainingEventAndTimeOperator map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_SCHEMA_REGION =
- "解绑 from pipe schema region connector metrics, connector map not empty 失败";
+ "从 pipe schema region connector 指标解绑失败,connector map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_SCHEMA_REGION_1 =
- "解绑 from pipe schema region extractor metrics, extractor map not empty 失败";
+ "从 pipe schema region extractor 指标解绑失败,extractor map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_SCHEMA_REGION_2 =
- "解绑 from pipe schema region listener metrics, listening queue map not empty 失败";
+ "从 pipe schema region listener 指标解绑失败,listening queue map 非空";
public static final String FAILED_TO_UNBIND_FROM_PIPE_TSFILE_TO =
- "解绑 from pipe tsfile to tablets metrics, pipe map is not empty, pipe: {} 失败";
+ "从 pipe tsfile to tablets 指标解绑失败,pipe map 非空,pipe:{}";
// ---------------------------------------------------------------------------
// pipe – AbstractSameTypeNumericOperator
diff --git a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java
index a6d0e50f8c0c7..ec305ae6f12f0 100644
--- a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java
+++ b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/DataNodeQueryMessages.java
@@ -306,6 +306,56 @@ public final class DataNodeQueryMessages {
"未找到表 {} 的标签列映射";
public static final String AUTO_CREATE_DATABASE_FAILED_BECAUSE =
"自动创建数据库失败,原因:";
+ public static final String LOAD_AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_WHEN_EXECUTING_STATEMENT =
+ "执行语句 %s 时自动创建或验证 schema 出错。详情:%s。";
+ public static final String TSFILE_ENCRYPTION_ENABLED_LOAD_DISABLED =
+ "TsFile 加密已启用,加载 TsFile 功能已禁用";
+ public static final String LOAD_DATANODE_READ_ONLY_CONVERT_TO_TABLETS =
+ "LoadTsFileAnalyzer:当前 DataNode 为只读模式。将尝试转换为 Tablet 后再插入。";
+ public static final String LOAD_ANALYSIS_STAGE_PROGRESS =
+ "加载 - 分析阶段:已分析 {}/{} 个 TsFile,进度:{}%";
+ public static final String FILE_IS_NOT_VALID_TSFILE_CHECK_INPUT =
+ "文件 {} 不是有效的 TsFile,请检查输入文件。";
+ public static final String FILE_IS_NOT_VALID_TSFILE_CHECK_INPUT_S =
+ "文件 %s 不是有效的 TsFile,请检查输入文件。";
+ public static final String LOADING_FILE_FAILED_DETAIL =
+ "加载文件 %s 失败。详情:%s";
+ public static final String TSFILE_MODEL_FILE =
+ "TsFile {} 是{}模型文件。";
+ public static final String TSFILE_TABLE_MODEL = "表";
+ public static final String TSFILE_TREE_MODEL = "树";
+ public static final String FAILED_CONVERT_MINI_TSFILE_TO_TABLETS =
+ "加载:无法将小 TsFile {} 从语句 {} 转换为 Tablet。状态:{}。";
+ public static final String FAILED_CONVERT_TO_TABLETS_READ_MODEL_INFO =
+ "加载:无法将语句 {} 转换为 Tablet,因为读取文件模型信息失败,消息:{}。";
+ public static final String FAILED_CONVERT_TO_TABLETS_STATUS_NULL =
+ "加载:无法将语句 {} 转换为 Tablet。状态为 null。";
+ public static final String FAILED_CONVERT_TO_TABLETS_STATUS =
+ "加载:无法将语句 {} 转换为 Tablet。状态:{}";
+ public static final String FAILED_CONVERT_TO_TABLETS_EXCEPTION =
+ "加载:无法将语句 {} 转换为 Tablet,异常:{}";
+ public static final String SKIP_FAILED_TABLE_SCHEMA_CHECK =
+ "检查表 schema 失败,但 skipFailedTableSchemaCheck 为 true,将跳过。消息:{}";
+ public static final String FAILED_CHECK_DEVICE_DELETED_BY_MODS =
+ "检查设备 {} 是否被 mods 删除失败,按未删除处理。";
+ public static final String FAILED_CHECK_TIMESERIES_DELETED_BY_MODS =
+ "检查设备 {} 的时间序列 {} 是否被 mods 删除失败,按未删除处理。";
+ public static final String AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_DETAIL =
+ "自动创建或验证 schema 出错。详情:%s。";
+ public static final String DATA_TYPE_MISMATCH_FOR_COLUMN =
+ "列 {} 在表 {} 中的数据类型不匹配,TsFile 中类型:{},IoTDB 中类型:{}";
+ public static final String CREATE_DATABASE_ERROR =
+ "创建数据库失败,语句:{},结果状态:{}";
+ public static final String CREATE_DATABASE_ERROR_S =
+ "创建数据库失败,语句:%s,结果状态:%s";
+ public static final String MEASUREMENT_DATATYPE_NOT_MATCH =
+ "测点 {}{}{} 的数据类型不匹配,TsFile 中类型:{},IoTDB 中类型:{}";
+ public static final String ENCODING_TYPE_NOT_MATCH =
+ "编码类型不匹配,测点:{}{}{},TsFile 编码:{},IoTDB 编码:{}";
+ public static final String COMPRESSOR_NOT_MATCH =
+ "压缩器不匹配,测点:{}{}{},TsFile 压缩器:{},IoTDB 压缩器:{}";
+ public static final String DEVICE_NOT_IN_TSFILE_DEVICE_IS_ALIGNED_CACHE =
+ "设备 {} 不在 tsFileDevice2IsAligned 缓存 {} 中。";
// --- Plan / Execution ---
@@ -959,13 +1009,61 @@ public final class DataNodeQueryMessages {
"开始本地加载 TsFile {}。";
public static final String LOAD_ALL_FAILED_TSFILES_ARE_CONVERTED_TO_TABLETS =
"加载:所有失败的 TsFile 已转换为 Tablet 并插入。";
+ public static final String LOAD_REGION_MIGRATION_DETECTED_CONVERT_TO_INSERTION =
+ "LoadTsFileScheduler:加载 TsFile {} 期间检测到 Region 迁移。将转换为插入以避免数据丢失。";
+ public static final String LOAD_TSFILE_SUCCESSFULLY_PROCESS =
+ "成功加载 TsFile {},加载进度 [{}/{}]";
+ public static final String CANNOT_LOAD_TSFILE_PROCESS =
+ "无法加载 TsFile {},加载进度 [{}/{}]";
+ public static final String LOAD_TSFILES_FAILED_TRY_CONVERT_TO_TABLETS =
+ "加载 TsFile 失败。将尝试转换为 Tablet 后插入。失败的 TsFile:{}";
+ public static final String DISPATCH_TSFILE_DATA_ERROR_WHEN_PARSING =
+ "解析 TsFile %s 时分发 TsFileData 出错。";
+ public static final String PARSE_OR_SEND_TSFILE_ERROR =
+ "解析或发送 TsFile %s 出错。";
+ public static final String DISPATCH_ONE_PIECE_ERROR =
+ "向副本集 {} 分发分片失败。结果状态码:{}。结果状态消息:{}。失败的分片节点:%n{}";
+ public static final String SUB_STATUS_CODE_MESSAGE =
+ "子状态码:{}。子状态消息:{}。";
+ public static final String LOAD_PIECE_ERROR_FIRST_PHASE =
+ "加载 %s 的分片在第一阶段出错。原因:";
+ public static final String WAIT_FOR_LOADING_TIMEOUT =
+ "等待加载 %s 超时。";
+ public static final String SERIALIZE_PROGRESS_INDEX_ERROR =
+ "序列化 ProgressIndex 失败,isFirstPhaseSuccess:%s,uuid:%s,TsFile:%s";
+ public static final String DISPATCH_LOAD_COMMAND_ERROR =
+ "分发加载命令 {}(TsFile {},副本集 {})失败。结果状态码:{}。结果状态消息:{}。";
+ public static final String LOAD_TSFILE_ERROR_SECOND_PHASE =
+ "加载 %s 在第二阶段出错。原因:%s,第一阶段状态:%s";
+ public static final String LOAD_FIRST_PHASE_SUCCESS = "成功";
+ public static final String LOAD_FIRST_PHASE_FAILED = "失败";
+ public static final String DISPATCH_TSFILE_TO_LOCAL_ERROR =
+ "向本地分发 TsFile %s 失败。结果状态码:%s。结果状态消息:%s。";
+ public static final String SUCCESS_CONVERT_TSFILE_TO_TABLETS =
+ "加载:已成功将 TsFile {} 转换为 Tablet 并插入。";
+ public static final String FAILED_CONVERT_TSFILE_TO_TABLETS_STATUS =
+ "加载:无法将 TsFile {} 转换为 Tablet。状态:{}";
+ public static final String FAILED_CONVERT_TSFILE_TO_TABLETS_EXCEPTION =
+ "加载:无法将 TsFile {} 转换为 Tablet。异常:{}";
+ public static final String FAILED_LOAD_BY_CONVERTING_TO_TABLETS =
+ "加载:部分 TsFile 转换为 Tablet 后仍加载失败。失败的 TsFile:%s";
+ public static final String DISPATCH_PIECE_NODE_OF_TSFILE_ERROR =
+ "分发分片节点 {}(TsFile {})出错。";
+ public static final String FAILED_DISPATCH_LOAD_COMMAND_TO_NODE =
+ "向节点分发加载命令 %s 失败,目标节点:%s,异常:%s";
+ public static final String CANNOT_DISPATCH_LOAD_COMMAND =
+ "无法为加载操作分发 LoadCommand {}";
+ public static final String SERIALIZE_TSFILE_DATA_ERROR_SKIP =
+ "序列化 TsFile {} 的数据出错,跳过 TsFileData {}";
+ public static final String LOAD_RPC_CONNECTION_TIMEOUT_ADJUSTED =
+ "Load 远程过程调用连接超时时间已调整为 {} 毫秒({} 分钟)";
// --- Plan / Statement ---
public static final String METHOD_NOT_IMPLEMENTED_YET =
"方法尚未实现";
public static final String INSERTION_CONTAINS_DUPLICATED_MEASUREMENT =
- "插入操作包含重复的测量值:";
+ "插入操作包含重复的测点:";
public static final String UNSUPPORTED_DATA_TYPE =
"不支持的数据类型:";
public static final String FAILED_TO_CONVERT_INSERTTABLETSTATEMENT_TO_TABLET =
@@ -1330,7 +1428,7 @@ public final class DataNodeQueryMessages {
public static final String SERIES_SCAN_UTIL_PAGE_READER_IS_MODIFIED =
"[SeriesScanUtil] pageReader.isModified() 为 {}";
public static final String GET_ALL_SATISFIED_PAGE_DATA_TSBLOCK =
- "[getAllSatisfiedPageData] TsBlock:{}";
+ "[获取满足条件的所有页数据] TsBlock:{}";
// --- Plan / Relational / Metadata (additional debug) ---
@@ -1403,9 +1501,9 @@ public final class DataNodeQueryMessages {
public static final String PRINT_FI_STATE =
"[PrintFIState] 状态为 {}";
public static final String START_FETCH_SCHEMA =
- "[StartFetchSchema]";
+ "[开始获取 Schema]";
public static final String END_FETCH_SCHEMA =
- "[EndFetchSchema]";
+ "[结束获取 Schema]";
public static final String CACHE_HIT =
"[{} Cache] 命中";
public static final String PARTITION_CACHE_INVALID =
@@ -1413,7 +1511,7 @@ public final class DataNodeQueryMessages {
public static final String PARTITION_CACHE_IS_INVALID =
"[Partition Cache] 无效:{}";
public static final String CANCEL_FI =
- "[CancelFI]";
+ "[取消 FragmentInstance]";
public static final String RENAME_VIEW_NOT_SUPPORT_WILDCARD =
"重命名视图不支持带通配符的路径模式。";
public static final String REMOVE_CONFIG_NODE_FAILED =
diff --git a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/StorageEngineMessages.java b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/StorageEngineMessages.java
index 281d21453f32b..6d5f2a3685117 100644
--- a/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/StorageEngineMessages.java
+++ b/iotdb-core/datanode/src/main/i18n/zh/org/apache/iotdb/db/i18n/StorageEngineMessages.java
@@ -100,8 +100,8 @@ private StorageEngineMessages() {}
public static final String FAIL_TO_CLOSE_TSFILE_WHEN_RECOVERING = "恢复过程中关闭 TsFile {} 失败";
public static final String FAIL_TO_RECOVER_SEALED_TSFILE_SKIP = "恢复已封闭的 TsFile {} 失败,跳过该文件。";
public static final String DATA_INCONSISTENT_NOT_TRIGGER_TWICE = "数据不一致异常不应被触发两次";
- public static final String INSERT_TO_TSFILE_PROCESSOR_REJECTED = "写入 TsFileProcessor 被拒绝, {}";
- public static final String INSERT_TO_TSFILE_PROCESSOR_ERROR = "写入 TsFileProcessor 出错 ";
+ public static final String INSERT_TO_TSFILE_PROCESSOR_REJECTED = "写入 TsFileProcessor 被拒绝,{}";
+ public static final String INSERT_TO_TSFILE_PROCESSOR_ERROR = "写入 TsFileProcessor 时出错";
public static final String IOEXCEPTION_CREATING_TSFILE_PROCESSOR_RETRY = "创建 TsFileProcessor 时遇到 IOException,正在重试";
public static final String CANNOT_CLOSE_TSFILE_RESOURCE = "无法关闭 TsFileResource {}";
public static final String CANNOT_REMOVE_MOD_FILE = "无法删除修改文件 {}";
@@ -236,9 +236,9 @@ private StorageEngineMessages() {}
public static final String DELETION_WRITTEN_WHEN_FLUSH = "[Deletion] flush memtable 时写入删除: {}";
public static final String FSYNC_MEMTABLE_TO_DISK_ERROR = "将 memtable 数据同步到磁盘出错,";
public static final String FLUSHING_MEMTABLES_CLEAR = "{} 的 flushing memtable 已清空";
- public static final String START_TO_END_FILE = "开始结束文件 {}";
- public static final String ENDED_FILE = "已结束文件 {}";
- public static final String START_TO_END_EMPTY_FILE = "开始结束空文件 {}";
+ public static final String START_TO_END_FILE = "开始封闭文件 {}";
+ public static final String ENDED_FILE = "已封闭文件 {}";
+ public static final String START_TO_END_EMPTY_FILE = "开始封闭空文件 {}";
public static final String TIME_CHUNK_METADATA_SHOULD_NOT_BE_EMPTY = "对齐设备中的 TimeChunkMetadata 不应为空";
public static final String WRITABLE_MEM_CHUNK_UNSUPPORTED_TYPE = "WritableMemChunk 不支持数据类型: {}";
@@ -345,16 +345,16 @@ private StorageEngineMessages() {}
// ======================== Read ========================
public static final String MEM_CHUNK_READER_NOT_SUPPORT_METHOD = "内存 Chunk 读取器不支持此方法";
- public static final String MEM_ALIGNED_PAGE_READER_TSBLOCK = "[memAlignedPageReader] TsBlock:{}";
+ public static final String MEM_ALIGNED_PAGE_READER_TSBLOCK = "[内存对齐页读取器] TsBlock:{}";
public static final String AFTER_FILTER_CHUNK_METADATA_LIST = "按过滤器移除后的 Chunk 元数据列表: ";
public static final String AFTER_MODIFICATION_CHUNK_METADATA_LIST = "修改后的 Chunk 元数据列表: ";
public static final String TIME_DATA_SIZE_NOT_MATCH = "时间数据大小不匹配";
public static final String QUERY_OPENED_FILES = "查询已打开 {} 个文件!";
public static final String CANNOT_CLOSE_TSFILE_SEQUENCE_READER = "无法关闭 TsFileSequenceReader {}!";
- public static final String QUERY_SEALED_FILE_INFO = "[Query Sealed File Info]\n";
- public static final String QUERY_ID_FORMAT = "\t[queryId: {}]\n";
+ public static final String QUERY_SEALED_FILE_INFO = "[已封闭文件查询信息]\n";
+ public static final String QUERY_ID_FORMAT = "\t[查询 ID: {}]\n";
public static final String QUERY_FILE_PATH_FORMAT = "\t\t{}\n";
- public static final String QUERY_UNSEALED_FILE_INFO = "[Query Unsealed File Info]\n";
+ public static final String QUERY_UNSEALED_FILE_INFO = "[未封闭文件查询信息]\n";
// ======================== Snapshot ========================
@@ -399,7 +399,7 @@ private StorageEngineMessages() {}
public static final String FAILED_TO_GET_SHARED_MOD_FILE = "获取共享修改文件失败";
public static final String UPGRADING_MOD_FILE_INTERRUPTED = "升级修改文件被中断";
public static final String CANNOT_UPGRADE_MOD_FILE = "无法升级修改文件";
- public static final String TIME_INDEX_VALUE = "TimeIndex = {}";
+ public static final String TIME_INDEX_VALUE = "时间索引 = {}";
public static final String RESOURCE_FILE_NOT_FOUND = "资源文件未找到";
public static final String CANNOT_BUILD_DEVICE_TIME_INDEX = "无法从资源文件构建 DeviceTimeIndex: ";
public static final String TSFILE_CANNOT_BE_DELETED = "TsFile {} 无法删除: {}";
@@ -439,7 +439,7 @@ private StorageEngineMessages() {}
public static final String EXCEPTION_APPLY_TABLE_DISK_USAGE_INDEX = "应用 TableDiskUsageIndex 操作时遇到异常。";
public static final String FAILED_RECOVER_TABLE_DISK_USAGE_INDEX = "恢复 TableDiskUsageIndex 失败";
public static final String FAILED_SYNC_TABLE_SIZE_INDEX = "同步 TsFile 表大小索引失败。";
- public static final String WRITE_OBJECT_DELTA = "writeObjectDelta";
+ public static final String WRITE_OBJECT_DELTA = "写入对象增量";
public static final String EXCEPTION_REMOVE_TABLE_DISK_USAGE_INDEX = "移除 TableDiskUsageIndex 时遇到异常。";
public static final String INTERRUPTED_ADDING_OP_TO_QUEUE = "将操作 {} 添加到队列时被中断。";
public static final String FAILED_TO_MOVE_FILE = "移动 {} 到 {} 失败";
@@ -469,7 +469,7 @@ private StorageEngineMessages() {}
public static final String EXCEED_TOTAL_MEMORY_SIZE = "{} 已超出总内存大小";
public static final String REDUCE_MEMORY_USAGE_TO_NEGATIVE = "{} 的内存使用量已降为负数";
public static final String FORCE_ALLOCATE_INTERRUPTED = "forceAllocate: 等待可用内存时被中断";
- public static final String LOAD_ALLOCATED_MEMORY_BLOCK = "Load: 从查询引擎分配内存块,大小: {}";
+ public static final String LOAD_ALLOCATED_MEMORY_BLOCK = "加载:从查询引擎分配内存块,大小:{}";
public static final String RELEASE_DATA_CACHE_MEMORY_BLOCK = "释放数据缓存内存块 {}";
public static final String START_DATA_TYPE_CONVERSION_DOT = "开始对 LoadTsFileStatement: {} 进行数据类型转换。";
public static final String START_DATA_TYPE_CONVERSION = "开始对 LoadTsFileStatement: {} 进行数据类型转换";
@@ -507,6 +507,85 @@ private StorageEngineMessages() {}
public static final String ACTIVE_LOAD_EXECUTOR_STOPPED = "Active 加载定期任务执行器已成功停止。";
public static final String ERROR_MOVING_FILE_TO_FAIL_DIR = "将文件 {} 移动到失败目录时发生错误。";
public static final String FAILED_COUNT_FILES_IN_FAIL_DIR = "统计失败目录中的失败文件数量失败。";
+ public static final String NEXT_LOAD_CLEANUP_TASK_NOT_READY =
+ "下一个加载清理任务 {} 尚未就绪,至少等待 {} 毫秒({} 秒)。";
+ public static final String WRITER_MANAGER_HAS_BEEN_CLOSED =
+ "%s 对应的 TsFileWriterManager 已关闭。";
+ public static final String FAILED_TO_DELETE_LOAD_TASK_DIR = "删除加载任务目录 {} 失败。";
+ public static final String WRITER_ALREADY_WRITING_CHUNK_GROUP =
+ "写入器 {} 已经在为分区 {} 写入设备 {} 的 ChunkGroup,但上一个设备是 {}。";
+ public static final String CANNOT_CREATE_MODIFICATION_FILE_FOR_WRITING =
+ "无法创建 ModificationFile {} 用于写入。";
+ public static final String ACTIVE_LOAD_CREATE_FAIL_DIR_ERROR =
+ "为 Active 加载创建失败目录 {} 时发生错误。";
+ public static final String ACTIVE_LOAD_TSFILE_SUCCESS =
+ "成功自动加载 TsFile {}(isGeneratedByPipe = {})";
+ public static final String ACTIVE_LOAD_TSFILE_FAILED_STATUS_MOVE_FAIL_DIR =
+ "自动加载 TsFile {} 失败(isGeneratedByPipe = {}),状态:{}。文件将移动到失败目录。";
+ public static final String ACTIVE_LOAD_TSFILE_FILE_NOT_FOUND_SKIP =
+ "自动加载 TsFile {} 失败(isGeneratedByPipe = {}),原因是文件不存在。将跳过该文件。";
+ public static final String ACTIVE_LOAD_TSFILE_UNEXPECTED_EXCEPTION_MOVE_FAIL_DIR =
+ "自动加载 TsFile {} 失败(isGeneratedByPipe = {}),发生意外异常。文件将移动到失败目录。";
+ public static final String ACTIVE_LOAD_REJECT_MEMORY =
+ "因内存受限拒绝自动加载 TsFile {}(isGeneratedByPipe = {})。稍后重试。";
+ public static final String ACTIVE_LOAD_REJECT_READ_ONLY =
+ "因系统处于只读模式拒绝自动加载 TsFile {}(isGeneratedByPipe = {})。稍后重试。";
+ public static final String ACTIVE_LOAD_REJECT_PROCEDURE_RETURN_TIMEOUT =
+ "因等待 procedure 返回超时拒绝自动加载 TsFile {}(isGeneratedByPipe = {})。稍后重试。";
+ public static final String ACTIVE_LOAD_REJECT_DATANODE_NOT_ENOUGH =
+ "因 DataNode 数量不足拒绝自动加载 TsFile {}(isGeneratedByPipe = {})。稍后重试。";
+ public static final String ACTIVE_LOAD_REJECT_CONFIG_NODE_CONNECTION =
+ "因无法连接任意 ConfigNode 拒绝自动加载 TsFile {}(isGeneratedByPipe = {})。稍后重试。";
+ public static final String ACTIVE_LOAD_REJECT_QUERY_TIMEOUT =
+ "因当前查询超时拒绝自动加载 TsFile {}(isGeneratedByPipe = {})。稍后重试。";
+ public static final String ACTIVE_LOAD_DIR_NOT_READABLE =
+ "当前目录路径不可读:{}。跳过扫描该目录,请检查权限。";
+ public static final String ACTIVE_LOAD_DIR_NOT_WRITABLE =
+ "当前目录路径不可写:{}。跳过扫描该目录,请检查权限。";
+ public static final String ACTIVE_LOAD_CHECK_DIR_PERMISSION_ERROR =
+ "检查目录读写权限时发生错误:{}。跳过扫描该目录。";
+ public static final String ACTIVE_LOAD_HOT_RELOAD_DIRS_ERROR =
+ "热加载 Active 加载目录时发生错误。当前 Active 加载监听目录:{}。";
+ public static final String FAILED_FIND_MOUNT_POINT =
+ "未找到 {} 的挂载点,跳过注册";
+ public static final String EXCEPTION_READING_DATA_DIR_MOUNT_POINT =
+ "读取数据目录的挂载点 {} 时发生异常";
+ public static final String EXCEPTION_READING_TARGET_FILE_MOUNT_POINT =
+ "读取目标文件的挂载点 {} 时发生异常";
+ public static final String RELEASE_MORE_MEMORY_THAN_ALLOCATED =
+ "加载:尝试释放的内存 ({}) 超过已分配内存 ({})";
+ public static final String ALLOCATED_MEMORY_BLOCK_FROM_DATA_CACHE =
+ "加载:查询引擎内存不足,已从 DataCacheMemoryBlock 分配 MemoryBlock,大小:{}";
+ public static final String RESIZE_MEMORY_BLOCK_FAILED =
+ "加载:无法将内存块 {} 的总内存大小设置为 {} 字节,当前内存使用量为 {} 字节";
+ public static final String FORCE_RESIZED_MEMORY_BLOCK_FROM_QUERY =
+ "加载:使用查询引擎内存强制扩容 LoadTsFileMemoryBlock,新增大小:{},新大小:{}";
+ public static final String FORCE_RESIZED_MEMORY_BLOCK_FROM_DATA_CACHE =
+ "加载:查询引擎内存不足,使用 DataCacheMemoryBlock 强制扩容 LoadTsFileMemoryBlock,新增大小:{},新大小:{}";
+ public static final String CREATE_DATA_CACHE_MEMORY_BLOCK =
+ "已创建数据缓存内存块 {},分配内存 {}";
+ public static final String RELEASE_MEMORY_BLOCK_WITH_USAGE =
+ "尝试释放内存块 {},但该内存块尚未释放全部内存";
+ public static final String SHRINK_NEGATIVE_MEMORY =
+ "尝试收缩负数大小的内存 {},内存块 {}";
+ public static final String CAST_TABLET_TYPE =
+ "加载:向 {}.{} 插入 Tablet,将类型从 {} 转换为 {}。";
+ public static final String DATABASE_NAME_NULL_SKIP_DATA_TYPE_CONVERSION =
+ "LoadTsFileStatement 的数据库名称意外为 null:%s。跳过数据类型转换。";
+ public static final String FAILED_CONVERT_DATA_TYPE_FOR_LOAD_TSFILE_STATEMENT =
+ "转换 LoadTsFileStatement 的数据类型失败:{}。";
+ public static final String DATA_TYPE_CONVERSION_SUCCESS =
+ "LoadTsFileStatement {} 的数据类型转换成功。";
+ public static final String FAILED_CONVERT_DATA_TYPE_STATUS_CODE =
+ "转换 LoadTsFileStatement 的数据类型失败:{},状态码:{}。";
+ public static final String FAILED_CONVERT_DATA_TYPES_FOR_TABLE_MODEL =
+ "转换表模型语句 {} 的数据类型失败。";
+ public static final String FAILED_CONVERT_DATA_TYPES_FOR_TREE_MODEL =
+ "转换树模型语句 {} 的数据类型失败。";
+ public static final String TRY_LOAD_TSFILE_V3_TO_CURRENT_V4 =
+ "尝试将 TsFile V3 加载到当前版本(V4),文件路径:{}";
+ public static final String FILE_VERSION_HIGHER_THAN_CURRENT =
+ "文件版本号高于当前版本,文件路径:{}";
public static final String STRING_NOT_LEGAL_REPAIR_LOG = "字符串 '%s' 不是合法的修复日志";
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskProcessorStage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskProcessorStage.java
index 2373495c8ebd8..0e5ac7f465a8b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskProcessorStage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskProcessorStage.java
@@ -36,9 +36,9 @@
import org.apache.iotdb.db.pipe.agent.task.subtask.processor.PipeProcessorSubtask;
import org.apache.iotdb.db.storageengine.StorageEngine;
import org.apache.iotdb.db.storageengine.dataregion.DataRegion;
-import org.apache.iotdb.pipe.api.PipeConnector;
-import org.apache.iotdb.pipe.api.PipeExtractor;
import org.apache.iotdb.pipe.api.PipeProcessor;
+import org.apache.iotdb.pipe.api.PipeSink;
+import org.apache.iotdb.pipe.api.PipeSource;
import org.apache.iotdb.pipe.api.customizer.configuration.PipeProcessorRuntimeConfiguration;
import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameterValidator;
import org.apache.iotdb.pipe.api.customizer.parameter.PipeParameters;
@@ -56,8 +56,8 @@ public class PipeTaskProcessorStage extends PipeTaskStage {
* @param creationTime pipe creation time
* @param pipeProcessorParameters used to create {@link PipeProcessor}
* @param regionId {@link DataRegion} id
- * @param pipeSourceInputEventSupplier used to input {@link Event}s from {@link PipeExtractor}
- * @param pipeSinkOutputPendingQueue used to output {@link Event}s to {@link PipeConnector}
+ * @param pipeSourceInputEventSupplier used to input {@link Event}s from {@link PipeSource}
+ * @param pipeSinkOutputPendingQueue used to output {@link Event}s to {@link PipeSink}
* @throws PipeException if failed to {@link PipeProcessor#validate(PipeParameterValidator)} or
* {@link PipeProcessor#customize(PipeParameters, PipeProcessorRuntimeConfiguration)}}
*/
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskSourceStage.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskSourceStage.java
index 5f774ceb379b7..aa579d6ce5796 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskSourceStage.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/stage/PipeTaskSourceStage.java
@@ -93,7 +93,7 @@ public void startSubtask() throws PipeException {
@Override
public void stopSubtask() throws PipeException {
- // Extractor continuously extracts data, so do nothing in stop
+ // Source continuously supplies data, so do nothing in stop
}
@Override
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtask.java
index 560512521e756..6ef2bd29ec582 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtask.java
@@ -61,10 +61,9 @@ public class PipeSinkSubtask extends PipeAbstractSinkSubtask {
private final String attributeSortedString;
private final int sinkIndex;
- // Now parallel connectors run the same time, thus the heartbeat events are not sure
- // to trigger the general event transfer function, causing potentially such as
- // the random delay of the batch transmission. Therefore, here we inject cron events
- // when no event can be pulled.
+ // Parallel sinks run at the same time, so heartbeat events may not trigger generic event
+ // transfer in time. This can delay batch transmission, so inject cron events when no event can be
+ // pulled.
public static final PipeHeartbeatEvent CRON_HEARTBEAT_EVENT = new PipeHeartbeatEvent(-1, false);
public PipeSinkSubtask(
@@ -142,7 +141,7 @@ protected boolean executeOnce() {
}
private void transferHeartbeatEvent(final PipeHeartbeatEvent event) {
- // DO NOT call heartbeat or transfer after closed, or will cause connection leak
+ // Do not call heartbeat or transfer after close, otherwise connections may leak.
if (isClosed.get()) {
return;
}
@@ -192,14 +191,14 @@ public void close() {
} finally {
inputPendingQueue.discardAllEvents();
- // Should be called after outputPipeConnector.close()
+ // Should be called after outputPipeSink.close()
super.close();
}
}
/**
- * When a pipe is dropped, the connector maybe reused and will not be closed. So we just discard
- * its queued events in the output pipe connector.
+ * When a pipe is dropped, the sink may be reused and will not be closed. Discard its queued
+ * events in the output pipe sink.
*/
public void discardEventsOfPipe(
final String pipeNameToDrop, final long creationTimeToDrop, final int regionId) {
@@ -214,8 +213,8 @@ public void discardEventsOfPipe(
// Here we discard the last event, and re-submit the pipe task to avoid that the pipe task
// has stopped submission but will not be stopped by critical exceptions, because when it
// acquires lock, the pipe is already dropped, thus it will do nothing. Note that since we
- // use a new thread to stop all the pipes, we will not encounter deadlock here. Or else we
- // will.
+ // use a new thread to stop all the pipes, we will not encounter deadlock here. Calling this
+ // from the same thread that stops all pipes could deadlock.
if (lastEvent instanceof EnrichedEvent
&& pipeNameToDrop.equals(((EnrichedEvent) lastEvent).getPipeName())
&& creationTimeToDrop == ((EnrichedEvent) lastEvent).getCreationTime()
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtaskManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtaskManager.java
index 367b92104062d..dc929d2e506f6 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtaskManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/agent/task/subtask/sink/PipeSinkSubtaskManager.java
@@ -58,7 +58,7 @@ public class PipeSinkSubtaskManager {
private static final Logger LOGGER = LoggerFactory.getLogger(PipeSinkSubtaskManager.class);
private static final String FAILED_TO_DEREGISTER_EXCEPTION_MESSAGE =
- "Failed to deregister PipeConnectorSubtask. No such subtask: ";
+ "Failed to deregister PipeSinkSubtask. No such subtask: ";
private final Map>
attributeSortedString2SubtaskLifeCycleMap = new HashMap<>();
@@ -114,7 +114,7 @@ public synchronized String register(
PipeSinkConstant.CONNECTOR_REALTIME_FIRST_DEFAULT_VALUE);
attributeSortedString = "data_" + attributeSortedString;
} else {
- // Do not allow parallel tasks for schema region connectors
+ // Do not allow parallel tasks for schema region sinks
// to avoid the potential disorder of the schema region data transfer
sinkNum = 1;
attributeSortedString = "schema_" + attributeSortedString;
@@ -141,7 +141,7 @@ public synchronized String register(
isDataRegionSink
? PipeDataNodeAgent.plugin().dataRegion().reflectSink(pipeSinkParameters)
: PipeDataNodeAgent.plugin().schemaRegion().reflectSink(pipeSinkParameters);
- // 1. Construct, validate and customize PipeConnector, and then handshake (create
+ // 1. Construct, validate and customize PipeSink, and then handshake (create
// connection) with the target
try {
if (pipeSink instanceof IoTDBDataRegionAsyncSink) {
@@ -164,7 +164,7 @@ public synchronized String register(
e);
}
- // 2. Construct PipeConnectorSubtaskLifeCycle to manage PipeConnectorSubtask's life cycle
+ // 2. Construct PipeSinkSubtaskLifeCycle to manage PipeSinkSubtask's life cycle
final PipeSinkSubtask pipeSinkSubtask =
new PipeSinkSubtask(
String.format(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResource.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResource.java
index 051f224890cc5..6312475dab2a7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResource.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResource.java
@@ -43,8 +43,8 @@
/**
* DeletionResource is designed for IoTConsensusV2 to manage the lifecycle of all deletion
- * operations including realtime deletion and historical deletion. In order to be compatible with
- * user pipe framework, IoTConsensusV2 will use {@link PipeDeleteDataNodeEvent}
+ * operations including real-time deletion and historical deletion. In order to be compatible with
+ * the user pipe framework, IoTConsensusV2 will use {@link PipeDeleteDataNodeEvent}.
*/
public class DeletionResource implements PersistentResource {
private static final Logger LOGGER = LoggerFactory.getLogger(DeletionResource.class);
@@ -54,7 +54,7 @@ public class DeletionResource implements PersistentResource {
private final ConsensusGroupId consensusGroupId;
private volatile Status currentStatus;
- // it's safe to use volatile here to make this reference thread-safe.
+ // It is safe to use volatile here to make this reference thread-safe.
@SuppressWarnings("squid:S3077")
private volatile Exception cause;
@@ -119,8 +119,8 @@ public ProgressIndex getProgressIndex() {
}
/**
- * Only the default implementation is provided here, which will not be called in practice, but is
- * only used to implement the interface
+ * This default implementation is provided only to implement the interface and should not be
+ * called in practice.
*/
@Override
public long getFileStartTime() {
@@ -128,8 +128,8 @@ public long getFileStartTime() {
}
/**
- * Only the default implementation is provided here, which will not be called in practice, but is
- * only used to implement the interface
+ * This default implementation is provided only to implement the interface and should not be
+ * called in practice.
*/
@Override
public long getFileEndTime() {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResourceManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResourceManager.java
index d2292dae0ad27..d54b5e52b4563 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResourceManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/DeletionResourceManager.java
@@ -88,7 +88,7 @@ private void initAndRecover() throws IOException {
recoverLock.lock();
try {
if (!storageDir.exists()) {
- // Init
+ // Initialize the storage directory.
if (!storageDir.mkdirs()) {
LOGGER.warn(
DataNodePipeMessages.UNABLE_TO_CREATE_IOTCONSENSUSV2_DELETION_DIR_AT, storageDir);
@@ -142,7 +142,7 @@ public DeletionResource registerDeletionResource(AbstractDeleteDataNode deleteDa
deleteDataNode,
key ->
new DeletionResource(deleteDataNode, this::removeDeletionResource, dataRegionId));
- // register a persist task for current deletionResource
+ // Register a persist task for the current DeletionResource.
deletionBuffer.registerDeletionResource(deletionResource);
return deletionResource;
}
@@ -208,11 +208,11 @@ private synchronized void removeDeletionResource(DeletionResource deletionResour
path.getFileName().toString(), currentProgressIndex))
.sorted(this::compareFileProgressIndex)
.toArray(Path[]::new);
- // File name represents the max progressIndex in its previous file. If currentProgressIndex is
- // larger than a fileName's progressIndex, it means that the file before this file has been
- // fully synchronized and can be deleted.
- // So here we cannot guarantee that the last file can be deleted, we can only guarantee that
- // the first n-1 files can be deleted (if the length of deletionPaths is n)
+ // The file name represents the max ProgressIndex in the previous file. If
+ // currentProgressIndex is larger than a file name's ProgressIndex, the file before this file
+ // has been fully synchronized and can be deleted.
+ // The last file is not guaranteed to be deletable here, so only the first n - 1 files can be
+ // deleted when deletionPaths has n entries.
for (int i = 0; i < deletionPaths.length - 1; i++) {
File fileToDelete = deletionPaths[i].toFile();
FileUtils.deleteFileOrDirectory(fileToDelete);
@@ -225,7 +225,8 @@ private synchronized void removeDeletionResource(DeletionResource deletionResour
LOGGER.warn(
DataNodePipeMessages.DELETIONMANAGER_FAILED_TO_DELETE_FILE_IN_DIR,
dataRegionId,
- storageDir);
+ storageDir,
+ e);
}
}
@@ -235,7 +236,7 @@ private int compareFileProgressIndex(Path file1, Path file2) {
String fileName2 = file2.getFileName().toString();
Matcher matcher1 = pattern.matcher(fileName1);
Matcher matcher2 = pattern.matcher(fileName2);
- // Definitely match. Because upper caller has filtered fileNames.
+ // Must match because the caller has filtered file names.
if (matcher1.matches() && matcher2.matches()) {
int fileRebootTimes1 = Integer.parseInt(matcher1.group(REBOOT_TIME));
long fileMemTableFlushOrderId1 = Long.parseLong(matcher1.group(MEM_TABLE_FLUSH_ORDER));
@@ -260,7 +261,7 @@ private boolean isFileProgressCoveredByGivenProgress(
Pattern pattern = Pattern.compile(DELETION_FILE_NAME_PATTERN);
Matcher matcher = pattern.matcher(fileName);
- // Definitely match. Because upper caller has filtered fileNames.
+ // Must match because the caller has filtered file names.
if (matcher.matches()) {
int fileRebootTimes = Integer.parseInt(matcher.group(REBOOT_TIME));
long fileMemTableFlushOrderId = Long.parseLong(matcher.group(MEM_TABLE_FLUSH_ORDER));
@@ -302,7 +303,7 @@ public static DeletionResourceManager getInstance(int groupId) {
});
}
- // Only when consensus protocol is IoTConsensusV2, will this class be initialized.
+ // This class is initialized only when the consensus protocol is IoTConsensusV2.
public static void build() {
if (DataRegionConsensusImpl.getInstance() instanceof IoTConsensusV2) {
DeletionResourceManagerHolder.build();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/persist/PageCacheDeletionBuffer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/persist/PageCacheDeletionBuffer.java
index 8b7946998ac1a..0b4900d31fd49 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/persist/PageCacheDeletionBuffer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/persist/PageCacheDeletionBuffer.java
@@ -53,9 +53,9 @@
import java.util.concurrent.locks.ReentrantLock;
/**
- * The core idea of this buffer is to write deletion to the Page cache and fsync them to disk when
- * certain conditions are met. This design does not decouple serialization and writing, but provides
- * an easier way to maintain and understand.
+ * This buffer writes deletions to the page cache and fsyncs them to disk when certain conditions
+ * are met. This design does not decouple serialization and writing, but it is easier to maintain
+ * and understand.
*/
public class PageCacheDeletionBuffer implements DeletionBuffer {
private static final Logger LOGGER = LoggerFactory.getLogger(PageCacheDeletionBuffer.class);
@@ -64,10 +64,10 @@ public class PageCacheDeletionBuffer implements DeletionBuffer {
private static final int QUEUE_CAPACITY = config.getDeletionAheadLogBufferQueueCapacity();
private static final long MAX_WAIT_CLOSE_TIME_IN_MS = 10000;
- // Buffer config keep consistent with WAL.
+ // Keep the buffer config consistent with WAL.
public static int DAL_BUFFER_SIZE = config.getWalBufferSize() / 3;
- // DeletionResources received from storage engine, which is waiting to be persisted.
+ // DeletionResources received from the storage engine and waiting to be persisted.
private final BlockingQueue deletionResources =
new PriorityBlockingQueue<>(
QUEUE_CAPACITY,
@@ -77,21 +77,21 @@ public class PageCacheDeletionBuffer implements DeletionBuffer {
: (o1.getProgressIndex().isAfter(o2.getProgressIndex()) ? 1 : -1));
// Data region id
private final int dataRegionId;
- // directory to store .deletion files
+ // Directory for storing .deletion files.
private final String baseDirectory;
- // single thread to serialize WALEntry to workingBuffer
+ // Single thread for serializing deletions to the buffer.
private final ExecutorService persistThread;
private final Lock buffersLock = new ReentrantLock();
// Total size of this batch.
private final AtomicInteger totalSize = new AtomicInteger(0);
- // All deletions that will be handled in a single persist task
+ // All deletions that will be handled in a single persist task.
private final List pendingDeletionsInOneTask = new CopyOnWriteArrayList<>();
- // whether close method is called
+ // Whether the close method is called.
private volatile boolean isClosed = false;
- // Serialize buffer in current persist task
+ // Serialization buffer in the current persist task.
private volatile ByteBuffer serializeBuffer;
- // Current Logging file.
+ // Current logging file.
private volatile File logFile;
private volatile FileOutputStream logStream;
private volatile FileChannel logChannel;
@@ -116,14 +116,14 @@ public PageCacheDeletionBuffer(int dataRegionId, String baseDirectory) {
public void start() {
persistThread.submit(new PersistTask());
try {
- // initial file is the minimumProgressIndex
+ // The initial file uses the minimum ProgressIndex.
this.logFile =
new File(
baseDirectory,
String.format("_%d-%d%s", 0, 0, DeletionResourceManager.DELETION_FILE_SUFFIX));
this.logStream = new FileOutputStream(logFile, true);
this.logChannel = logStream.getChannel();
- // Create file && write magic string
+ // Create the file and write the magic string.
if (!logFile.exists() || logFile.length() == 0) {
this.logChannel.write(
ByteBuffer.wrap(
@@ -185,7 +185,7 @@ private void fsyncCurrentLoggingFile() throws IOException {
private void closeCurrentLoggingFile(boolean notifySuccess) throws IOException {
LOGGER.info(DataNodePipeMessages.DELETION_PERSIST_CURRENT_FILE_HAS_BEEN_CLOSED, dataRegionId);
- // Close old resource to fsync.
+ // Close the current file handles.
if (this.logStream != null) {
this.logStream.close();
}
@@ -245,7 +245,7 @@ private void switchLoggingFile() throws IOException {
DeletionResourceManager.DELETION_FILE_SUFFIX));
this.logStream = new FileOutputStream(logFile, true);
this.logChannel = logStream.getChannel();
- // Create file && write magic string
+ // Create the file and write the magic string.
if (!logFile.exists() || logFile.length() == 0) {
this.logChannel.write(
ByteBuffer.wrap(
@@ -262,7 +262,7 @@ private void switchLoggingFile() throws IOException {
public void close() {
isClosed = true;
// Force sync existing data in memory to disk.
- // first waiting serialize and sync tasks finished, then release all resources
+ // First wait for serialization and sync tasks to finish, then release resources.
waitUntilFlushAllDeletionsOrTimeOut();
if (persistThread != null) {
persistThread.shutdownNow();
@@ -271,17 +271,18 @@ public void close() {
LOGGER.warn(DataNodePipeMessages.PERSISTTHREAD_DID_NOT_TERMINATE_WITHIN_S, 30);
}
} catch (InterruptedException e) {
- LOGGER.warn(DataNodePipeMessages.DAL_THREAD_STILL_DOESN_T_EXIT_AFTER, dataRegionId);
+ LOGGER.warn(
+ DataNodePipeMessages.INTERRUPTED_WHILE_WAITING_FOR_DAL_THREAD_TO_EXIT, dataRegionId, e);
Thread.currentThread().interrupt();
}
}
- // close file handler
+ // Close file handles.
try {
closeCurrentLoggingFile(false);
} catch (IOException e) {
LOGGER.error(DataNodePipeMessages.FAIL_TO_CLOSE_CURRENT_LOGGING_FILE_WHEN, e);
}
- // clean buffer
+ // Clean buffer.
MmapUtil.clean(serializeBuffer);
serializeBuffer = null;
}
@@ -293,7 +294,7 @@ private void waitUntilFlushAllDeletionsOrTimeOut() {
try {
Thread.sleep(50);
} catch (InterruptedException e) {
- LOGGER.error(DataNodePipeMessages.INTERRUPTED_WHEN_WAITING_FOR_ALL_DELETIONS_FLUSHED);
+ LOGGER.error(DataNodePipeMessages.INTERRUPTED_WHEN_WAITING_FOR_ALL_DELETIONS_FLUSHED, e);
Thread.currentThread().interrupt();
}
}
@@ -325,7 +326,7 @@ private boolean serializeDeletionToBatchBuffer(DeletionResource deletionResource
dataRegionId,
deletionResource);
ByteBuffer buffer = deletionResource.serialize();
- // if working buffer doesn't have enough space
+ // If the serialization buffer does not have enough space.
if (buffer.position() > serializeBuffer.remaining()) {
return false;
}
@@ -339,8 +340,7 @@ private void persistDeletion() throws IOException {
// For first deletion we use blocking take() method.
try {
DeletionResource firstDeletionResource = deletionResources.take();
- // Serialize deletion. The first serialization cannot fail because a deletion cannot exceed
- // size of serializeBuffer.
+ // A single deletion is expected not to exceed the serialization buffer.
serializeDeletionToBatchBuffer(firstDeletionResource);
pendingDeletionsInOneTask.add(firstDeletionResource);
maxProgressIndexInCurrentFile =
@@ -352,21 +352,21 @@ private void persistDeletion() throws IOException {
return;
}
- // For further deletion, we use non-blocking poll() method to persist existing deletion of
- // current batch in time.
+ // For subsequent deletions, use non-blocking poll() to persist the current batch in time.
while (totalSize.get() < DAL_BUFFER_SIZE * FSYNC_BUFFER_RATIO) {
DeletionResource deletionResource = null;
try {
- // Timeout config keep consistent with WAL async mode.
+ // Keep the timeout config consistent with WAL async mode.
deletionResource =
deletionResources.poll(config.getWalAsyncModeFsyncDelayInMs(), TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
- LOGGER.warn(DataNodePipeMessages.INTERRUPTED_WHEN_WAITING_FOR_TAKING_WALENTRY_FROM);
+ LOGGER.warn(
+ DataNodePipeMessages.INTERRUPTED_WHEN_WAITING_FOR_POLLING_DELETIONRESOURCE_FROM);
Thread.currentThread().interrupt();
}
// If timeout, flush deletions to disk.
if (deletionResource == null) {
- // append to current file and not switch file
+ // Append to the current file without switching files.
appendCurrentBatch();
fsyncCurrentLoggingFile();
resetTaskAttribute();
@@ -374,7 +374,7 @@ private void persistDeletion() throws IOException {
}
// Serialize deletion
if (!serializeDeletionToBatchBuffer(deletionResource)) {
- // if working buffer is exhausted, which means serialization failed.
+ // If the serialization buffer is exhausted, put it back and roll to a new file.
// 1. roll back
deletionResources.add(deletionResource);
// 2. fsync immediately and roll to a new file.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/recover/DeletionReader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/recover/DeletionReader.java
index 0bd6f48d51f79..8fc5a56657f4d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/recover/DeletionReader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/consensus/deletion/recover/DeletionReader.java
@@ -85,7 +85,7 @@ public List readAllDeletions() throws IOException {
}
return deletions;
} catch (IOException e) {
- // if file is corrupted, throw an exception and skip subsequence DAL.
+ // If the file is corrupted, throw an exception and skip subsequent DALs.
LOGGER.warn(DataNodePipeMessages.FAILED_TO_READ_DELETION_FILE_MAY_BECAUSE, logFile, e);
throw e;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/PipeTsFileInsertionEvent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/PipeTsFileInsertionEvent.java
index cce3ac29b37d6..151e10dcf395c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/PipeTsFileInsertionEvent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/PipeTsFileInsertionEvent.java
@@ -219,7 +219,7 @@ private PipeTsFileInsertionEvent(
this.resource = resource;
- // For events created at assigner or historical extractor, the tsFile is get from the resource
+ // For events created at assigner or historical source, the tsFile is obtained from the resource
// For events created for source, the tsFile is inherited from the assigner, because the
// original tsFile may be gone, and we need to get the assigner's hard-linked tsFile to
// hard-link it to each pipe dir
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java
index b584db153d0ee..74aebc528c2ab 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/aggregate/AggregateProcessor.java
@@ -552,8 +552,8 @@ public void process(
} finally {
tsFileInsertionEvent.close();
}
- // The timeProgressIndex shall only be reported by the output events
- // whose progressIndex is bounded with tablet events
+ // The timeProgressIndex shall only be reported by output events whose progressIndex is bound to
+ // tablet events.
if (tsFileInsertionEvent instanceof PipeTsFileInsertionEvent) {
((PipeTsFileInsertionEvent) tsFileInsertionEvent).skipReportOnCommit();
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/iotconsensusv2/IoTConsensusV2Processor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/iotconsensusv2/IoTConsensusV2Processor.java
index 58bb081fa57c9..0469214d2df8a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/iotconsensusv2/IoTConsensusV2Processor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/processor/iotconsensusv2/IoTConsensusV2Processor.java
@@ -77,18 +77,18 @@ private static boolean isContainLocalData(EnrichedEvent enrichedEvent) {
}
/**
- * Judge whether a given event should be replicated or sent by consensus pipe. Only events that
- * pass this check can be assigned a specific value for `EnrichedEvent.replicateIndexForIoTV2`
+ * Decide whether a given event should be replicated or sent by consensus pipe. Only events that
+ * pass this check can be assigned a specific value for `EnrichedEvent.replicateIndexForIoTV2`.
*
* @param enrichedEvent
- * @return true if event is totally generated by client operation instead of consensus
- * replication.
+ * @return true if the event is generated only by client operations instead of consensus
+ * replication
*/
public static boolean isShouldReplicate(EnrichedEvent enrichedEvent) {
if (enrichedEvent instanceof TsFileInsertionEvent
&& ((PipeTsFileInsertionEvent) enrichedEvent).isGeneratedByIoTConsensusV2()) {
- // Only user-generated TsFileInsertionEvent can be replicated. Any tsFile synchronized from a
- // replica should not be replicated again
+ // Only user-generated TsFileInsertionEvent can be replicated. Any TsFile synchronized from a
+ // replica should not be replicated again.
return false;
}
// Only user-generated TabletInsertionEvent can be replicated.
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/iotconsensusv2/IoTConsensusV2Receiver.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/iotconsensusv2/IoTConsensusV2Receiver.java
index 59905e54dadbf..5b7cbe8a91e16 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/iotconsensusv2/IoTConsensusV2Receiver.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/protocol/iotconsensusv2/IoTConsensusV2Receiver.java
@@ -872,15 +872,14 @@ private void updateWritingFileIfNeeded(
}
LOGGER.info(
- "IoTConsensusV2-PipeName-{}: Writing file {} is not existed or name is not correct, try to create it. "
- + "Current writing file is {}.",
+ DataNodePipeMessages.IOTCONSENSUSV2_PIPENAME_WRITING_FILE_IS_NOT_EXISTED,
consensusPipeName,
fileName,
tsFileWriter.getWritingFile() == null ? "null" : tsFileWriter.getWritingFile().getPath());
closeCurrentWritingFileWriter(tsFileWriter, !isSingleFile);
- // If there are multiple files we can not delete the current file
- // instead they will be deleted after seal request
+ // If there are multiple files, the current file cannot be deleted here. It will be deleted
+ // after the seal request.
if (tsFileWriter.getWritingFile() != null && isSingleFile) {
deleteFileOrDirectoryIfExists(
tsFileWriter.getWritingFile(),
@@ -888,9 +887,8 @@ private void updateWritingFileIfNeeded(
String.format("Update TsFileWriter-%s", tsFileWriter.index));
}
- // Make sure receiver file dir exists
- // This may be useless, because receiver file dir is created when receiver is initiated. just in
- // case.
+ // Make sure the receiver file dir exists. This may be redundant because the receiver file dir
+ // is created during receiver initialization, but keep it as a fallback.
if (!tsFileWriter.getLocalWritingDir().exists()) {
if (tsFileWriter.getLocalWritingDir().mkdirs()) {
LOGGER.info(
@@ -904,8 +902,8 @@ private void updateWritingFileIfNeeded(
tsFileWriter.getLocalWritingDir().getPath());
}
}
- // Every tsFileWriter has its own writing path.
- // 1 Thread --> 1 connection --> 1 tsFileWriter --> 1 path
+ // Every TsFileWriter has its own writing path.
+ // 1 thread -> 1 connection -> 1 TsFileWriter -> 1 path.
tsFileWriter.setWritingFile(resolveWritingFilePath(tsFileWriter, fileName).toFile());
tsFileWriter.setWritingFileWriter(new RandomAccessFile(tsFileWriter.getWritingFile(), "rw"));
LOGGER.info(
@@ -1080,7 +1078,7 @@ public IoTConsensusV2TsFileWriter borrowCorrespondingWriter(TCommitId commitId)
Thread.currentThread().interrupt();
final String errorStr =
String.format(
- "IoTConsensusV2%s: receiver thread get interrupted when waiting for borrowing tsFileWriter.",
+ "IoTConsensusV2%s: receiver thread was interrupted while waiting to borrow a TsFileWriter.",
consensusPipeName);
LOGGER.warn(errorStr);
throw new RuntimeException(errorStr);
@@ -1136,8 +1134,8 @@ private class IoTConsensusV2TsFileWriter {
private File localWritingDir;
private File writingFile;
private RandomAccessFile writingFileWriter;
- // whether this buffer is used. this will be updated when first transfer tsFile piece or
- // when transfer seal.
+ // Whether this buffer is used. This is updated when the first TsFile piece or seal is
+ // transferred.
private volatile boolean isUsed = false;
// If isUsed is true, this variable will be set to the TCommitId of holderEvent
private volatile TCommitId commitIdOfCorrespondingHolderEvent;
@@ -1259,15 +1257,14 @@ public IoTConsensusV2TsFileWriter refreshLastUsedTs() {
public void returnSelf(ConsensusPipeName consensusPipeName)
throws DiskSpaceInsufficientException, IOException {
- // if config multi-disks, tsFileWriter will roll to new writing path.
- // must roll before set used to false, because the writing file may be deleted if other event
- // uses this tsfileWriter.
+ // If multiple disk dirs are configured, the TsFileWriter rolls to a new writing path. Roll
+ // before setting used to false because the writing file may be deleted if another event uses
+ // this TsFileWriter.
if (receiveDirs.size() > 1) {
rollToNextWritingPath();
}
- // must set used to false after set commitIdOfCorrespondingHolderEvent to null to avoid the
- // situation that tsfileWriter is used by other event before set
- // commitIdOfCorrespondingHolderEvent to null
+ // Set used to false only after clearing commitIdOfCorrespondingHolderEvent to avoid another
+ // event using this TsFileWriter before commitIdOfCorrespondingHolderEvent is cleared.
this.commitIdOfCorrespondingHolderEvent = null;
this.isUsed = false;
LOGGER.info(
@@ -1322,10 +1319,9 @@ private void deleteFileOrDirectoryIfExists(File file, boolean deleteDir, String
return null;
});
} else {
- // There may be multiple files such as mods and tsfile pieces in the dir. Here we clean
- // the
- // dir instead of deleting it to avoid repeatedly deleting and creating the base dir for
- // tsfile writer
+ // There may be multiple files such as mods and TsFile pieces in the dir. Clean the dir
+ // instead of deleting it to avoid repeatedly deleting and creating the base dir for the
+ // TsFile writer.
RetryUtils.retryOnException(
() -> {
FileUtils.cleanDirectory(file);
@@ -1473,8 +1469,8 @@ private TIoTConsensusV2TransferResp onRequest(
DataNodePipeMessages.IOTCONSENSUSV2_PIPENAME_START_TO_RECEIVE_NO_EVENT,
consensusPipeName,
tCommitId);
- // Judge whether connector has rebooted or not, if the rebootTimes increases compared to
- // connectorRebootTimes, need to reset receiver because connector has been restarted.
+ // Check whether the connector has rebooted. If rebootTimes is greater than
+ // connectorRebootTimes, reset the receiver because the connector has been restarted.
if (tCommitId.getDataNodeRebootTimes() > connectorRebootTimes) {
resetWithNewestRebootTime(tCommitId.getDataNodeRebootTimes());
}
@@ -1484,7 +1480,7 @@ private TIoTConsensusV2TransferResp onRequest(
}
// update metric
if (isTransferTsFilePiece && !reqExecutionOrderBuffer.contains(requestMeta)) {
- // only update tsFileEventCount when tsFileEvent is first enqueue.
+ // Update tsFileEventCount only when the TsFileEvent is first enqueued.
tsFileEventCount.incrementAndGet();
}
if (!isTransferTsFileSeal && !isTransferTsFilePiece) {
@@ -1722,7 +1718,7 @@ private TIoTConsensusV2TransferResp deprecatedResp(String msg, TCommitId tCommit
RpcUtils.getStatus(
TSStatusCode.IOT_CONSENSUS_V2_DEPRECATED_REQUEST,
String.format(
- "IoTConsensusV2 receiver received a deprecated request, which may because %s. Consider to discard it.",
+ "IoTConsensusV2 receiver received a deprecated request, possibly because %s. Consider discarding it.",
msg)));
LOGGER.info(
DataNodePipeMessages.IOTCONSENSUSV2_PIPENAME_RECEIVED_A_DEPRECATED_REQUEST_WHICH,
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java
index 90cd17539f67b..4086044ddf28e 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/resource/tsfile/PipeTsFileResourceManager.java
@@ -77,10 +77,10 @@ public File increaseFileReference(
* @param file tsfile, resource file or mod file. can be original file or hardlink/copy of
* original file
* @param isTsFile {@code true} to create hardlink, {@code false} to copy file
- * @param pipeName Nonnull if the pipe is from historical or assigner -> extractors, null if is
- * dataRegion -> assigner
- * @param sourceFile for inner use, historical extractor will use this to create hardlink from
- * pipe tsFile -> common tsFile
+ * @param pipeName non-null if the file belongs to a pipe-specific source, null if it belongs to
+ * the shared dataRegion -> assigner resource
+ * @param sourceFile for internal use; historical sources use this to create a hardlink from a
+ * pipe tsFile to a common tsFile
* @return the hardlink or copied file
* @throws IOException when create hardlink or copy file failed
*/
@@ -227,7 +227,7 @@ public void decreaseFileReference(
segmentLock.unlock(hardlinkOrCopiedFile);
}
- // Decrease the assigner's file to clear hard-link and memory cache
+ // Decrease the shared assigner file reference to clear the hard-link and memory cache.
// Note that it does not exist for historical files
decreasePublicReferenceIfExists(hardlinkOrCopiedFile, pipeName);
}
@@ -236,7 +236,7 @@ private void decreasePublicReferenceIfExists(final File file, final @Nullable St
if (Objects.isNull(pipeName)) {
return;
}
- // Increase the assigner's file to avoid hard-link or memory cache cleaning
+ // Decrease the shared assigner file reference to allow hard-link and memory cache cleanup.
// Note that it does not exist for historical files
decreaseFileReference(new File(getCommonFilePath(file)), null);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/airgap/IoTDBDataRegionAirGapSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/airgap/IoTDBDataRegionAirGapSink.java
index 649ef35c4ce0c..d91395aafb887 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/airgap/IoTDBDataRegionAirGapSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/airgap/IoTDBDataRegionAirGapSink.java
@@ -112,9 +112,9 @@ public void transfer(final TabletInsertionEvent tabletInsertionEvent) throws Exc
if (!(tabletInsertionEvent instanceof PipeInsertNodeTabletInsertionEvent)
&& !(tabletInsertionEvent instanceof PipeRawTabletInsertionEvent)) {
LOGGER.warn(
- "IoTDBDataRegionAirGapConnector only support "
+ "IoTDBDataRegionAirGapConnector supports only "
+ "PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
- + "Ignore {}.",
+ + "Ignoring {}.",
tabletInsertionEvent);
return;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/IoTConsensusV2AsyncSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/IoTConsensusV2AsyncSink.java
index a4dba48b7e98b..d99cf11b2360d 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/IoTConsensusV2AsyncSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/IoTConsensusV2AsyncSink.java
@@ -135,9 +135,9 @@ public void customize(PipeParameters parameters, PipeConnectorRuntimeConfigurati
throws Exception {
super.customize(parameters, configuration);
- // Get consensusGroupId from parameters passed by IoTConsensusV2Impl
+ // Get consensusGroupId from parameters passed by the consensus pipe creator.
consensusGroupId = parameters.getInt(CONNECTOR_CONSENSUS_GROUP_ID_KEY);
- // Get consensusPipeName from parameters passed by IoTConsensusV2Impl
+ // Get consensusPipeName from parameters passed by the consensus pipe creator.
consensusPipeName = parameters.getString(CONNECTOR_CONSENSUS_PIPE_NAME);
// initialize metric components
@@ -146,9 +146,9 @@ public void customize(PipeParameters parameters, PipeConnectorRuntimeConfigurati
.addConsensusPipeConnector(new ConsensusPipeName(consensusPipeName), this);
MetricService.getInstance().addMetricSet(this.iotConsensusV2SinkMetrics);
- // In IoTConsensusV2, one iotConsensusV2Task corresponds to a iotConsensusV2Connector. Thus,
- // `nodeUrls` here actually is a singletonList that contains one peer's TEndPoint. But here we
- // retain the implementation of list to cope with possible future expansion
+ // In IoTConsensusV2, one iotConsensusV2Task corresponds to one iotConsensusV2Connector. Thus,
+ // `nodeUrls` is currently a singleton list that contains one peer's TEndPoint. Keep the list
+ // implementation for possible future expansion.
retryConnector =
new IoTConsensusV2SyncSink(
nodeUrls, consensusGroupId, thisDataNodeId, iotConsensusV2SinkMetrics);
@@ -182,8 +182,7 @@ private boolean addEvent2Buffer(EnrichedEvent event) {
event.getReplicateIndexForIoTV2(),
event);
}
- // Special judge to avoid transfer stuck when re-transfer events that will not be put in
- // retryQueue.
+ // Avoid transfer stalls when retransferring events that will not be put in retryQueue.
if (transferBuffer.contains(event)) {
return true;
}
@@ -213,8 +212,8 @@ private boolean addEvent2Buffer(EnrichedEvent event) {
}
/**
- * if one event is successfully processed by receiver in IoTConsensusV2, we will remove this event
- * from transferBuffer in order to transfer other event.
+ * If an event is successfully processed by the IoTConsensusV2 receiver, remove it from
+ * transferBuffer so other events can be transferred.
*/
public synchronized void removeEventFromBuffer(EnrichedEvent event) {
if (LOGGER.isDebugEnabled()) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/payload/builder/IoTConsensusV2TransferBatchReqBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/payload/builder/IoTConsensusV2TransferBatchReqBuilder.java
index 677c77e0540f5..bb73d0dcf3981 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/payload/builder/IoTConsensusV2TransferBatchReqBuilder.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/iotconsensusv2/payload/builder/IoTConsensusV2TransferBatchReqBuilder.java
@@ -118,15 +118,14 @@ protected IoTConsensusV2TransferBatchReqBuilder(
if (getMaxBatchSizeInBytes() != requestMaxBatchSizeInBytes) {
LOGGER.info(
- "IoTConsensusV2TransferBatchReqBuilder: the max batch size is adjusted from {} to {} due to the "
- + "memory restriction",
+ DataNodePipeMessages.IOTCONSENSUSV2TRANSFERBATCHREQBUILDER_THE_MAX_BATCH_SIZE_IS_ADJUSTED,
requestMaxBatchSizeInBytes,
getMaxBatchSizeInBytes());
}
}
/**
- * Try offer {@link Event} into cache if the given {@link Event} is not duplicated.
+ * Try to offer the {@link Event} into the cache if the given {@link Event} is not duplicated.
*
* @param event the given {@link Event}
* @return {@link true} if the batch can be transferred
@@ -200,8 +199,8 @@ protected int buildTabletInsertionBuffer(TabletInsertionEvent event) throws WALP
pipeInsertNodeTabletInsertionEvent.getCommitterKey().getRestartTimes(),
pipeInsertNodeTabletInsertionEvent.getRebootTimes());
- // Read the bytebuffer from the wal file and transfer it directly without serializing or
- // deserializing if possible
+ // Read the ByteBuffer from the WAL file and transfer it directly without serializing or
+ // deserializing if possible.
final InsertNode insertNode = pipeInsertNodeTabletInsertionEvent.getInsertNode();
// IoTConsensusV2 will transfer binary data to TIoTConsensusV2TransferReq
final ProgressIndex progressIndex = pipeInsertNodeTabletInsertionEvent.getProgressIndex();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/legacy/IoTDBLegacyPipeSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/legacy/IoTDBLegacyPipeSink.java
index 829c9aed6b988..0fe04c48c9cd4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/legacy/IoTDBLegacyPipeSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/legacy/IoTDBLegacyPipeSink.java
@@ -272,8 +272,8 @@ public void transfer(final TabletInsertionEvent tabletInsertionEvent) throws Exc
doTransferWrapper((PipeRawTabletInsertionEvent) tabletInsertionEvent);
} else {
throw new NotImplementedException(
- "IoTDBLegacyPipeConnector only support "
- + "PipeInsertNodeInsertionEvent and PipeTabletInsertionEvent.");
+ "IoTDBLegacyPipeConnector supports only "
+ + "PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent.");
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/OpcUaSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/OpcUaSink.java
index a4daf16610ce6..639f8d2d372d3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/OpcUaSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/OpcUaSink.java
@@ -335,10 +335,18 @@ private void customizeServer(final PipeParameters parameters) {
.setEnableAnonymousAccess(enableAnonymousAccess)
.setSecurityPolicies(securityPolicies)
.setDebounceTimeMs(debounceTimeMs);
+ LOGGER.info(
+ "Starting Apache IoTDB OPC UA server: tcpPort={}, httpsPort={}.",
+ tcpBindPort,
+ httpsBindPort);
final OpcUaServer newServer = builder.build();
nameSpace = new OpcUaNameSpace(newServer, builder);
nameSpace.startup();
newServer.startup().get();
+ LOGGER.info(
+ "Apache IoTDB OPC UA server started: tcpPort={}, httpsPort={}.",
+ tcpBindPort,
+ httpsBindPort);
return new Pair<>(new AtomicInteger(0), nameSpace);
} else {
oldValue
@@ -501,9 +509,9 @@ public static void transferByTablet(
if (!(tabletInsertionEvent instanceof PipeInsertNodeTabletInsertionEvent)
&& !(tabletInsertionEvent instanceof PipeRawTabletInsertionEvent)) {
logger.warn(
- "This Connector only support "
+ "This sink supports only "
+ "PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
- + "Ignore {}.",
+ + "Ignoring {}.",
tabletInsertionEvent);
return;
}
@@ -567,7 +575,9 @@ public void close() throws Exception {
if (pair.getLeft().decrementAndGet() <= 0) {
try {
+ LOGGER.info("Shutting down Apache IoTDB OPC UA server: serverKey={}.", serverKey);
pair.getRight().shutdown();
+ LOGGER.info("Apache IoTDB OPC UA server stopped: serverKey={}.", serverKey);
} finally {
SERVER_KEY_TO_REFERENCE_COUNT_AND_NAME_SPACE_MAP.remove(serverKey);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaKeyStoreLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaKeyStoreLoader.java
index 5fd6e5501cabf..d932596bbb6ee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaKeyStoreLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaKeyStoreLoader.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.pipe.sink.protocol.opcua.server;
-import org.apache.iotdb.commons.utils.FileUtils;
import org.apache.iotdb.db.i18n.DataNodePipeMessages;
import com.google.common.collect.Sets;
@@ -35,6 +34,7 @@
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyStore;
@@ -62,17 +62,27 @@ OpcUaKeyStoreLoader load(final Path baseDir, final char[] password) throws Excep
final File serverKeyStore = baseDir.resolve("iotdb-server.pfx").toFile();
LOGGER.info(DataNodePipeMessages.LOADING_KEYSTORE_AT, serverKeyStore);
+ boolean needRewrite = false;
if (serverKeyStore.exists()) {
try (InputStream is = Files.newInputStream(serverKeyStore.toPath())) {
keyStore.load(is, password);
} catch (final IOException e) {
- LOGGER.warn(DataNodePipeMessages.LOAD_KEYSTORE_FAILED_THE_EXISTING_KEYSTORE_MAY);
- FileUtils.deleteFileOrDirectory(serverKeyStore);
+ LOGGER.warn(
+ "Failed to load KeyStore {}. The existing KeyStore may be stale; rebuilding it.",
+ serverKeyStore,
+ e);
+ if (!serverKeyStore.delete()) {
+ LOGGER.warn(
+ "Failed to delete stale KeyStore {}. The file will be overwritten if possible.",
+ serverKeyStore);
+ needRewrite = true;
+ }
}
}
- if (!serverKeyStore.exists()) {
+ if (!serverKeyStore.exists() || needRewrite) {
+ LOGGER.info("Generating a new server KeyStore at {}", serverKeyStore);
keyStore.load(null, password);
final KeyPair keyPair = SelfSignedCertificateGenerator.generateRsaKeyPair(2048);
@@ -108,7 +118,12 @@ OpcUaKeyStoreLoader load(final Path baseDir, final char[] password) throws Excep
keyStore.setKeyEntry(
SERVER_ALIAS, keyPair.getPrivate(), password, new X509Certificate[] {certificate});
- try (final OutputStream os = Files.newOutputStream(serverKeyStore.toPath())) {
+ try (final OutputStream os =
+ Files.newOutputStream(
+ serverKeyStore.toPath(),
+ StandardOpenOption.CREATE,
+ StandardOpenOption.WRITE,
+ StandardOpenOption.TRUNCATE_EXISTING)) {
keyStore.store(os, password);
}
}
@@ -119,9 +134,10 @@ OpcUaKeyStoreLoader load(final Path baseDir, final char[] password) throws Excep
final PublicKey serverPublicKey = serverCertificate.getPublicKey();
serverKeyPair = new KeyPair(serverPublicKey, (PrivateKey) serverPrivateKey);
+ LOGGER.info("Loaded server certificate from KeyStore alias {}.", SERVER_ALIAS);
} else {
throw new Exception(
- "Invalid keyStore, the serverPrivateKey is "
+ "Invalid KeyStore, the serverPrivateKey is "
+ (serverPrivateKey != null ? serverPrivateKey.getClass().getSimpleName() : "null"));
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
index 917720220bf2d..066ee4eff3b13 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaNameSpace.java
@@ -305,9 +305,7 @@ private void transferTabletRowForClientServerModel(
new DateTime(utcTimestamp),
new DateTime());
measurementNode = addNode(name, currentFolder, folderNode, dataValue, type);
- if (Objects.isNull(measurementNode.getValue())
- || Objects.isNull(measurementNode.getValue().getSourceTime())
- || measurementNode.getValue().getSourceTime().getUtcTime() < utcTimestamp) {
+ if (shouldNotifyNodeValueChange(measurementNode, utcTimestamp)) {
notifyNodeValueChange(measurementNode.getNodeId(), dataValue, measurementNode);
}
} else {
@@ -325,9 +323,7 @@ private void transferTabletRowForClientServerModel(
new DataValue(
new Variant(value), currentQuality, new DateTime(timestamp), new DateTime()),
dataType);
- if (Objects.isNull(valueNode.getValue())
- || Objects.isNull(valueNode.getValue().getSourceTime())
- || valueNode.getValue().getSourceTime().getUtcTime() < timestamp) {
+ if (shouldNotifyNodeValueChange(valueNode, timestamp)) {
notifyNodeValueChange(
valueNode.getNodeId(),
new DataValue(
@@ -337,6 +333,26 @@ private void transferTabletRowForClientServerModel(
}
}
+ private boolean shouldNotifyNodeValueChange(
+ final UaVariableNode variableNode, final long candidateUtcTime) {
+ final DataValue currentValue = variableNode.getValue();
+ if (Objects.isNull(currentValue) || Objects.isNull(currentValue.getSourceTime())) {
+ return true;
+ }
+ final long currentUtcTime = currentValue.getSourceTime().getUtcTime();
+ if (currentUtcTime < candidateUtcTime) {
+ return true;
+ }
+ if (candidateUtcTime < currentUtcTime) {
+ LOGGER.debug(
+ "Reject stale value update: nodeId={}, candidateSourceTime={}, currentSourceTime={}.",
+ variableNode.getNodeId(),
+ candidateUtcTime,
+ currentUtcTime);
+ }
+ return false;
+ }
+
private UaVariableNode addNode(
final String nodeName,
final String currentFolder,
@@ -639,18 +655,22 @@ public void onDataItemsCreated(final List dataItems) {
final NodeId nodeId = readValueId.getNodeId();
// 1. Add the new subscription item to the subscription mapping
- nodeSubscriptions.compute(
+ final List subscribedItems =
+ nodeSubscriptions.compute(
+ nodeId,
+ (k, existingList) -> {
+ List list =
+ existingList != null ? existingList : new CopyOnWriteArrayList<>();
+ list.add(item);
+ return list;
+ });
+ LOGGER.debug(
+ "Registered data item subscription: nodeId={}, subscriptionCount={}.",
nodeId,
- (k, existingList) -> {
- List list =
- existingList != null ? existingList : new CopyOnWriteArrayList<>();
- list.add(item);
- return list;
- });
-
- // 2. 【Key Optimization】Proactively push the current node's initial value when the new
- // subscription item is created
- // Eliminate Bad_WaitingForInitialData, no need to wait for any polling
+ subscribedItems.size());
+
+ // 2. Proactively push the current node's initial value when the new subscription item is
+ // created. This avoids Bad_WaitingForInitialData without waiting for polling.
try {
UaVariableNode node = (UaVariableNode) getNodeManager().getNode(nodeId).orElse(null);
if (node != null && node.getValue() != null) {
@@ -680,13 +700,18 @@ public void onDataItemsDeleted(final List dataItems) {
final NodeId nodeId = readValueId.getNodeId();
// When the client cancels the subscription, remove this subscription item from the mapping
- nodeSubscriptions.computeIfPresent(
+ final List remainingItems =
+ nodeSubscriptions.computeIfPresent(
+ nodeId,
+ (k, existingList) -> {
+ existingList.remove(item);
+ // Automatically clean up the key when there are no subscribers to save memory.
+ return existingList.isEmpty() ? null : existingList;
+ });
+ LOGGER.debug(
+ "Removed data item subscription: nodeId={}, subscriptionCount={}.",
nodeId,
- (k, existingList) -> {
- existingList.remove(item);
- // Automatically clean up the key when there are no subscribers, save memory
- return existingList.isEmpty() ? null : existingList;
- });
+ Objects.isNull(remainingItems) ? 0 : remainingItems.size());
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaServerBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaServerBuilder.java
index 297805162a914..91c44e83b823f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaServerBuilder.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/opcua/server/OpcUaServerBuilder.java
@@ -142,10 +142,8 @@ public OpcUaServer build() throws Exception {
final File pkiDir = securityDir.resolve("pki").toFile();
- LoggerFactory.getLogger(OpcUaServerBuilder.class)
- .info("Security dir: {}", securityDir.toAbsolutePath());
- LoggerFactory.getLogger(OpcUaServerBuilder.class)
- .info("Security pki dir: {}", pkiDir.getAbsolutePath());
+ LOGGER.info("Security dir: {}", securityDir.toAbsolutePath());
+ LOGGER.info("Security pki dir: {}", pkiDir.getAbsolutePath());
final OpcUaKeyStoreLoader loader =
new OpcUaKeyStoreLoader().load(securityDir, password.toCharArray());
@@ -197,8 +195,17 @@ public OpcUaServer build() throws Exception {
StatusCodes.Bad_ConfigurationError,
"Certificate is missing the application URI"));
+ final Set configuredSecurityPolicies = new LinkedHashSet<>(securityPolicies);
final Set endpointConfigurations =
createEndpointConfigurations(certificate, tcpBindPort, httpsBindPort);
+ LOGGER.info(
+ "Built OPC UA server endpoints: tcpPort={}, httpsPort={}, anonymousAccess={}, securityPolicies={}, endpointCount={}, debounceTimeMs={}.",
+ tcpBindPort,
+ httpsBindPort,
+ enableAnonymousAccess,
+ configuredSecurityPolicies,
+ endpointConfigurations.size(),
+ debounceTimeMs);
serverConfig =
OpcUaServerConfig.builder()
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/IoTDBDataRegionAsyncSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/IoTDBDataRegionAsyncSink.java
index 9adbcf6cf16d1..5c38d70ce2441 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/IoTDBDataRegionAsyncSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/IoTDBDataRegionAsyncSink.java
@@ -221,7 +221,7 @@ public void transfer(final TabletInsertionEvent tabletInsertionEvent) throws Exc
if (!(tabletInsertionEvent instanceof PipeInsertNodeTabletInsertionEvent)
&& !(tabletInsertionEvent instanceof PipeRawTabletInsertionEvent)) {
LOGGER.warn(
- "IoTDBThriftAsyncConnector only support PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
+ "IoTDBThriftAsyncConnector supports only PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
+ "Current event: {}.",
tabletInsertionEvent);
return;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java
index 5e6297d843851..e9f9162e8e93c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/sync/IoTDBDataRegionSyncSink.java
@@ -133,9 +133,9 @@ public void transfer(final TabletInsertionEvent tabletInsertionEvent) throws Exc
if (!(tabletInsertionEvent instanceof PipeInsertNodeTabletInsertionEvent)
&& !(tabletInsertionEvent instanceof PipeRawTabletInsertionEvent)) {
LOGGER.warn(
- "IoTDBThriftSyncConnector only support "
+ "IoTDBThriftSyncConnector supports only "
+ "PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
- + "Ignore {}.",
+ + "Ignoring {}.",
tabletInsertionEvent);
return;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/websocket/WebSocketSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/websocket/WebSocketSink.java
index 3c487ff135680..8f2cb449b3950 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/websocket/WebSocketSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/websocket/WebSocketSink.java
@@ -102,7 +102,7 @@ public void transfer(final TabletInsertionEvent tabletInsertionEvent) {
if (!(tabletInsertionEvent instanceof PipeInsertNodeTabletInsertionEvent)
&& !(tabletInsertionEvent instanceof PipeRawTabletInsertionEvent)) {
LOGGER.warn(
- "WebsocketConnector only support PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
+ "WebSocketConnector supports only PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
+ "Current event: {}.",
tabletInsertionEvent);
return;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
index 581792475c095..ea26e1575a991 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/writeback/WriteBackSink.java
@@ -230,9 +230,9 @@ public void transfer(final TabletInsertionEvent tabletInsertionEvent) throws Exc
if (!(tabletInsertionEvent instanceof PipeInsertNodeTabletInsertionEvent)
&& !(tabletInsertionEvent instanceof PipeRawTabletInsertionEvent)) {
LOGGER.warn(
- "WriteBackSink only support "
+ "WriteBackSink supports only "
+ "PipeInsertNodeTabletInsertionEvent and PipeRawTabletInsertionEvent. "
- + "Ignore {}.",
+ + "Ignoring {}.",
tabletInsertionEvent);
return;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/matcher/PipeDataRegionMatcher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/matcher/PipeDataRegionMatcher.java
index a8b6147ef4666..7843b6bea0e6c 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/matcher/PipeDataRegionMatcher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/source/dataregion/realtime/matcher/PipeDataRegionMatcher.java
@@ -29,30 +29,30 @@
public interface PipeDataRegionMatcher {
/**
- * Register a extractor. If the extractor's pattern matches the event's schema info, the event
- * will be assigned to the extractor.
+ * Register a source. If the source's pattern matches the event's schema info, the event will be
+ * assigned to the source.
*/
- void register(PipeRealtimeDataRegionSource extractor);
+ void register(PipeRealtimeDataRegionSource source);
- /** Deregister a extractor. */
- void deregister(PipeRealtimeDataRegionSource extractor);
+ /** Deregister a source. */
+ void deregister(PipeRealtimeDataRegionSource source);
/** Invalidate cache */
void invalidateCache();
- /** Get the number of registered extractors in this matcher. */
+ /** Get the number of registered sources in this matcher. */
int getRegisterCount();
/**
- * Match the event's schema info with the registered extractors' patterns. If the event's schema
- * info matches the pattern of an extractor, the extractor will be returned.
+ * Match the event's schema info with the registered sources' patterns. If the event's schema info
+ * matches the pattern of a source, the source will be returned.
*
* @param event the event to be matched
- * @return pair of matched extractors and unmatched extractors.
+ * @return pair of matched sources and unmatched sources.
*/
Pair, Set> match(
PipeRealtimeEvent event);
- /** Clear all the registered extractors and internal data structures. */
+ /** Clear all the registered sources and internal data structures. */
void clear();
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileAnalyzer.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileAnalyzer.java
index 5171ccd93c3e8..bd9bb1748deb1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileAnalyzer.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileAnalyzer.java
@@ -224,7 +224,8 @@ public IAnalysis analyzeFileByFile(IAnalysis analysis) {
} catch (Exception e) {
final String exceptionMessage =
String.format(
- "Auto create or verify schema error when executing statement %s. Detail: %s.",
+ DataNodeQueryMessages
+ .LOAD_AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_WHEN_EXECUTING_STATEMENT,
getStatementString(),
e.getMessage() == null ? e.getClass().getName() : e.getMessage());
LOGGER.warn(exceptionMessage, e);
@@ -257,14 +258,13 @@ private boolean checkBeforeAnalyzeFileByFile(IAnalysis analysis) {
analysis.setFailStatus(
RpcUtils.getStatus(
TSStatusCode.LOAD_FILE_ERROR,
- "TsFile encryption is enabled, and the Load TsFile function is disabled"));
+ DataNodeQueryMessages.TSFILE_ENCRYPTION_ENABLED_LOAD_DISABLED));
return false;
}
// check if the system is read only
if (CommonDescriptor.getInstance().getConfig().isReadOnly()) {
- LOGGER.info(
- "LoadTsFileAnalyzer: Current datanode is read only, will try to convert to tablets and insert later.");
+ LOGGER.info(DataNodeQueryMessages.LOAD_DATANODE_READ_ONLY_CONVERT_TO_TABLETS);
}
return true;
@@ -316,8 +316,10 @@ private boolean doAnalyzeFileByFile(IAnalysis analysis) {
}
if (LOGGER.isInfoEnabled()) {
LOGGER.info(
- "Load - Analysis Stage: {}/{} tsfiles have been analyzed, progress: {}%",
- i + 1, tsfileNum, String.format("%.3f", (i + 1) * 100.00 / tsfileNum));
+ DataNodeQueryMessages.LOAD_ANALYSIS_STAGE_PROGRESS,
+ i + 1,
+ tsfileNum,
+ String.format("%.3f", (i + 1) * 100.00 / tsfileNum));
}
continue;
}
@@ -327,8 +329,10 @@ private boolean doAnalyzeFileByFile(IAnalysis analysis) {
analyzeSingleTsFile(tsFile, i);
if (LOGGER.isInfoEnabled()) {
LOGGER.info(
- "Load - Analysis Stage: {}/{} tsfiles have been analyzed, progress: {}%",
- i + 1, tsfileNum, String.format("%.3f", (i + 1) * 100.00 / tsfileNum));
+ DataNodeQueryMessages.LOAD_ANALYSIS_STAGE_PROGRESS,
+ i + 1,
+ tsfileNum,
+ String.format("%.3f", (i + 1) * 100.00 / tsfileNum));
}
} catch (AuthException e) {
setFailAnalysisForAuthException(analysis, e);
@@ -340,16 +344,16 @@ private boolean doAnalyzeFileByFile(IAnalysis analysis) {
return false;
} catch (BufferUnderflowException e) {
LOGGER.warn(
- "The file {} is not a valid tsfile. Please check the input file.", tsFile.getPath(), e);
+ DataNodeQueryMessages.FILE_IS_NOT_VALID_TSFILE_CHECK_INPUT, tsFile.getPath(), e);
throw new SemanticException(
String.format(
- "The file %s is not a valid tsfile. Please check the input file.",
- tsFile.getPath()));
+ DataNodeQueryMessages.FILE_IS_NOT_VALID_TSFILE_CHECK_INPUT_S, tsFile.getPath()));
} catch (Exception e) {
final String exceptionMessage =
String.format(
- "Loading file %s failed. Detail: %s",
- tsFile.getPath(), e.getMessage() == null ? e.getClass().getName() : e.getMessage());
+ DataNodeQueryMessages.LOADING_FILE_FAILED_DETAIL,
+ tsFile.getPath(),
+ e.getMessage() == null ? e.getClass().getName() : e.getMessage());
LOGGER.warn(exceptionMessage, e);
analysis.setFinishQueryAfterAnalyze(true);
analysis.setFailStatus(RpcUtils.getStatus(TSStatusCode.LOAD_FILE_ERROR, exceptionMessage));
@@ -370,7 +374,11 @@ private void analyzeSingleTsFile(final File tsFile, int i) throws Exception {
final Map tableSchemaMap = reader.getTableSchemaMap();
final boolean isTableModelFile = Objects.nonNull(tableSchemaMap) && !tableSchemaMap.isEmpty();
LOGGER.info(
- "TsFile {} is a {}-model file.", tsFile.getPath(), isTableModelFile ? "table" : "tree");
+ DataNodeQueryMessages.TSFILE_MODEL_FILE,
+ tsFile.getPath(),
+ isTableModelFile
+ ? DataNodeQueryMessages.TSFILE_TABLE_MODEL
+ : DataNodeQueryMessages.TSFILE_TREE_MODEL);
// can be reused when constructing tsfile resource
final TsFileSequenceReaderTimeseriesMetadataIterator timeseriesMetadataIterator =
@@ -461,7 +469,7 @@ private boolean handleSingleMiniFile(final int i) throws FileNotFoundException {
if (status == null || !loadTsFileDataTypeConverter.isSuccessful(status)) {
LOGGER.warn(
- "Load: Failed to convert mini tsfile {} to tablets from statement {}. Status: {}.",
+ DataNodeQueryMessages.FAILED_CONVERT_MINI_TSFILE_TO_TABLETS,
tsFiles.get(i).getPath(),
isTableModelStatement ? loadTsFileTableStatement : loadTsFileTreeStatement,
status);
@@ -695,7 +703,7 @@ private void executeTabletConversionOnException(
getFileModelInfoBeforeTabletConversion();
} catch (Exception e1) {
LOGGER.warn(
- "Load: Failed to convert to tablets from statement {} because failed to read model info from file, message: {}.",
+ DataNodeQueryMessages.FAILED_CONVERT_TO_TABLETS_READ_MODEL_INFO,
isTableModelStatement ? loadTsFileTableStatement : loadTsFileTreeStatement,
e1.getMessage());
analysis.setFailStatus(
@@ -731,7 +739,7 @@ private void executeTabletConversionOnException(
if (status == null) {
LOGGER.warn(
- "Load: Failed to convert to tablets from statement {}. Status is null.",
+ DataNodeQueryMessages.FAILED_CONVERT_TO_TABLETS_STATUS_NULL,
isTableModelStatement ? loadTsFileTableStatement : loadTsFileTreeStatement);
analysis.setFailStatus(
new TSStatus(TSStatusCode.LOAD_FILE_ERROR.getStatusCode())
@@ -739,7 +747,7 @@ private void executeTabletConversionOnException(
break;
} else if (!loadTsFileDataTypeConverter.isSuccessful(status)) {
LOGGER.warn(
- "Load: Failed to convert to tablets from statement {}. Status: {}",
+ DataNodeQueryMessages.FAILED_CONVERT_TO_TABLETS_STATUS,
isTableModelStatement ? loadTsFileTableStatement : loadTsFileTreeStatement,
status);
analysis.setFailStatus(status);
@@ -747,7 +755,7 @@ private void executeTabletConversionOnException(
}
} catch (final Exception e2) {
LOGGER.warn(
- "Load: Failed to convert to tablets from statement {} because exception: {}",
+ DataNodeQueryMessages.FAILED_CONVERT_TO_TABLETS_EXCEPTION,
isTableModelStatement ? loadTsFileTableStatement : loadTsFileTreeStatement,
e2.getMessage());
analysis.setFailStatus(
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java
index c3c0ea73310f2..8c76d9f67b61b 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTableSchemaCache.java
@@ -146,9 +146,7 @@ public void autoCreateAndVerify(final IDeviceID device) throws LoadAnalyzeExcept
createTableAndDatabaseIfNecessary(device.getTableName());
} catch (final Exception e) {
if (IoTDBDescriptor.getInstance().getConfig().isSkipFailedTableSchemaCheck()) {
- LOGGER.info(
- "Failed to check table schema, will skip because skipFailedTableSchemaCheck is set to true, message: {}",
- e.getMessage());
+ LOGGER.info(DataNodeQueryMessages.SKIP_FAILED_TABLE_SCHEMA_CHECK, e.getMessage());
} else {
throw e;
}
@@ -166,10 +164,7 @@ public boolean isDeviceDeletedByMods(final IDeviceID device) {
return ModificationUtils.isDeviceDeletedByMods(
currentModifications, currentTimeIndex, device);
} catch (final IllegalPathException e) {
- LOGGER.warn(
- "Failed to check if device {} is deleted by mods. Will see it as not deleted.",
- device,
- e);
+ LOGGER.warn(DataNodeQueryMessages.FAILED_CHECK_DEVICE_DELETED_BY_MODS, device, e);
return false;
}
}
@@ -211,7 +206,8 @@ private void doAutoCreateAndVerify() throws SemanticException {
} catch (Exception e) {
LOGGER.warn(DataNodeQueryMessages.AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR, e);
throw new SemanticException(
- String.format("Auto create or verify schema error. Detail: %s.", e.getMessage()));
+ String.format(
+ DataNodeQueryMessages.AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_DETAIL, e.getMessage()));
}
}
@@ -392,7 +388,7 @@ private void verifyTableDataTypeAndGenerateTagColumnMapper(
if (LOGGER.isDebugEnabled()
&& (realColumn == null || !fileColumn.getType().equals(realColumn.getType()))) {
LOGGER.debug(
- "Data type mismatch for column {} in table {}, type in TsFile: {}, type in IoTDB: {}",
+ DataNodeQueryMessages.DATA_TYPE_MISMATCH_FOR_COLUMN,
fileColumn.getName(),
realSchema.getTableName(),
fileColumn.getType(),
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java
index d0335d1b3bd64..fff468ccc189f 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/LoadTsFileTreeSchemaCache.java
@@ -25,6 +25,7 @@
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.load.LoadRuntimeOutOfMemoryException;
+import org.apache.iotdb.db.i18n.DataNodeQueryMessages;
import org.apache.iotdb.db.storageengine.dataregion.modification.ModEntry;
import org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
@@ -104,7 +105,7 @@ public Map> getDevice2TimeSeries() {
public boolean getDeviceIsAligned(IDeviceID device) {
if (!tsFileDevice2IsAligned.containsKey(device)) {
LOGGER.warn(
- "Device {} is not in the tsFileDevice2IsAligned cache {}.",
+ DataNodeQueryMessages.DEVICE_NOT_IN_TSFILE_DEVICE_IS_ALIGNED_CACHE,
device,
tsFileDevice2IsAligned);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
index bfebb7db0d783..5f27f9a764e53 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
@@ -119,10 +119,7 @@ public void autoCreateAndVerify(
continue;
}
} catch (IllegalPathException e) {
- LOGGER.warn(
- "Failed to check if device {} is deleted by mods. Will see it as not deleted.",
- device,
- e);
+ LOGGER.warn(DataNodeQueryMessages.FAILED_CHECK_DEVICE_DELETED_BY_MODS, device, e);
}
for (final TimeseriesMetadata timeseriesMetadata : entry.getValue()) {
@@ -135,7 +132,7 @@ public void autoCreateAndVerify(
// IllegalPathException.
if (!timeseriesMetadata.getMeasurementId().isEmpty()) {
LOGGER.warn(
- "Failed to check if device {}, timeseries {} is deleted by mods. Will see it as not deleted.",
+ DataNodeQueryMessages.FAILED_CHECK_TIMESERIES_DELETED_BY_MODS,
device,
timeseriesMetadata.getMeasurementId(),
e);
@@ -248,8 +245,9 @@ private void handleException(Exception e, String statementString) throws Semanti
LOGGER.warn(DataNodeQueryMessages.AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR, e);
throw new SemanticException(
String.format(
- "Auto create or verify schema error when executing statement %s. Detail: %s.",
- statementString, e.getMessage()));
+ DataNodeQueryMessages.LOAD_AUTO_CREATE_OR_VERIFY_SCHEMA_ERROR_WHEN_EXECUTING_STATEMENT,
+ statementString,
+ e.getMessage()));
}
private void makeSureNoDuplicatedMeasurementsInDevices() throws LoadAnalyzeException {
@@ -383,12 +381,9 @@ private void executeSetDatabaseStatement(Statement statement)
// we wait till "getOrCreatePartition" to judge if the time series (like root.db.ss.a.e /
// root.db.ss.a) conflicts with the created database. just do not throw exception here.
&& result.status.code != TSStatusCode.DATABASE_CONFLICT.getStatusCode()) {
- LOGGER.warn(
- "Create database error, statement: {}, result status is: {}", statement, result.status);
+ LOGGER.warn(DataNodeQueryMessages.CREATE_DATABASE_ERROR, statement, result.status);
throw new LoadFileException(
- String.format(
- "Create database error, statement: %s, result status is: %s",
- statement, result.status));
+ String.format(DataNodeQueryMessages.CREATE_DATABASE_ERROR_S, statement, result.status));
}
}
@@ -485,7 +480,7 @@ private void verifySchema(ISchemaTree schemaTree)
// check datatype
if (LOGGER.isDebugEnabled() && !tsFileSchema.getType().equals(iotdbSchema.getType())) {
LOGGER.debug(
- "Measurement {}{}{} datatype not match, TsFile: {}, IoTDB: {}",
+ DataNodeQueryMessages.MEASUREMENT_DATATYPE_NOT_MATCH,
device,
TsFileConstant.PATH_SEPARATOR,
iotdbSchema.getMeasurementName(),
@@ -498,8 +493,7 @@ private void verifySchema(ISchemaTree schemaTree)
&& !tsFileSchema.getEncodingType().equals(iotdbSchema.getEncodingType())) {
// we allow a measurement to have different encodings in different chunks
LOGGER.debug(
- "Encoding type not match, measurement: {}{}{}, "
- + "TsFile encoding: {}, IoTDB encoding: {}",
+ DataNodeQueryMessages.ENCODING_TYPE_NOT_MATCH,
device,
TsFileConstant.PATH_SEPARATOR,
iotdbSchema.getMeasurementName(),
@@ -512,8 +506,7 @@ private void verifySchema(ISchemaTree schemaTree)
&& !tsFileSchema.getCompressor().equals(iotdbSchema.getCompressor())) {
// we allow a measurement to have different compressors in different chunks
LOGGER.debug(
- "Compressor not match, measurement: {}{}{}, "
- + "TsFile compressor: {}, IoTDB compressor: {}",
+ DataNodeQueryMessages.COMPRESSOR_NOT_MATCH,
device,
TsFileConstant.PATH_SEPARATOR,
iotdbSchema.getMeasurementName(),
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java
index db06083ddf0e8..3ec702f300f54 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/load/LoadTsFilePieceNode.java
@@ -140,9 +140,7 @@ protected void serializeAttributes(DataOutputStream stream) throws IOException {
tsFileData.serialize(stream);
} catch (IOException e) {
LOGGER.error(
- String.format(
- "Serialize data of TsFile %s error, skip TsFileData %s",
- tsFile.getPath(), tsFileData));
+ DataNodeQueryMessages.SERIALIZE_TSFILE_DATA_ERROR_SKIP, tsFile.getPath(), tsFileData);
}
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FixedRateFragInsStateTracker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FixedRateFragInsStateTracker.java
index 0c7ffe3ec642a..0fe32415b8ea9 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FixedRateFragInsStateTracker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/FixedRateFragInsStateTracker.java
@@ -156,6 +156,11 @@ private void fetchStateAndUpdate() {
if (metrics.reachMaxRetryCount()) {
// if reach max retry count, we think that the DN is down, and FI in that node won't
// exist
+ logger.warn(
+ "Failed to fetch state for FragmentInstance {} after {} retries, mark it as no such instance",
+ instance.getId(),
+ InstanceStateMetrics.MAX_STATE_FETCH_RETRY_COUNT,
+ e);
FragmentInstanceInfo instanceInfo = new FragmentInstanceInfo(NO_SUCH_INSTANCE);
instanceInfo.setMessage(
String.format(
@@ -165,7 +170,12 @@ private void fetchStateAndUpdate() {
} else {
// if not reaching max retry count, add retry count, and wait for next fetching schedule
metrics.addRetryCount();
- logger.warn(DataNodeQueryMessages.ERROR_HAPPENED_WHILE_FETCHING_QUERY_STATE, e);
+ logger.debug(
+ "Failed to fetch state for FragmentInstance {}, retry {}/{}",
+ instance.getId(),
+ metrics.retryCount,
+ InstanceStateMetrics.MAX_STATE_FETCH_RETRY_COUNT,
+ e);
}
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileDispatcherImpl.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileDispatcherImpl.java
index fcd884d696d2c..c63ea308424f1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileDispatcherImpl.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileDispatcherImpl.java
@@ -228,8 +228,10 @@ private void dispatchRemote(TTsFilePieceReq loadTsFileReq, TEndPoint endPoint)
final String exceptionMessage =
String.format(
- "failed to dispatch load command %s to node %s because of exception: %s",
- loadTsFileReq, endPoint, e);
+ DataNodeQueryMessages.FAILED_DISPATCH_LOAD_COMMAND_TO_NODE,
+ loadTsFileReq,
+ endPoint,
+ e);
LOGGER.warn(exceptionMessage, e);
throw new FragmentInstanceDispatchException(
new TSStatus()
@@ -264,11 +266,11 @@ public Future dispatchCommand(
}
} catch (FragmentInstanceDispatchException e) {
LOGGER.warn(
- "Cannot dispatch LoadCommand for load operation {}", duplicatedLoadCommandReq, e);
+ DataNodeQueryMessages.CANNOT_DISPATCH_LOAD_COMMAND, duplicatedLoadCommandReq, e);
return immediateFuture(new FragInstanceDispatchResult(e.getFailureStatus()));
} catch (Exception t) {
LOGGER.warn(
- "Cannot dispatch LoadCommand for load operation {}", duplicatedLoadCommandReq, t);
+ DataNodeQueryMessages.CANNOT_DISPATCH_LOAD_COMMAND, duplicatedLoadCommandReq, t);
return immediateFuture(
new FragInstanceDispatchResult(
RpcUtils.getStatus(
@@ -323,8 +325,10 @@ private void dispatchRemote(TLoadCommandReq loadCommandReq, TEndPoint endPoint)
final String exceptionMessage =
String.format(
- "failed to dispatch load command %s to node %s because of exception: %s",
- loadCommandReq, endPoint, e);
+ DataNodeQueryMessages.FAILED_DISPATCH_LOAD_COMMAND_TO_NODE,
+ loadCommandReq,
+ endPoint,
+ e);
LOGGER.warn(exceptionMessage, e);
throw new FragmentInstanceDispatchException(
new TSStatus()
@@ -355,7 +359,7 @@ private static void adjustTimeoutIfNecessary(Throwable e) {
if (newConnectionTimeout != CONNECTION_TIMEOUT_MS.get()) {
CONNECTION_TIMEOUT_MS.set(newConnectionTimeout);
LOGGER.info(
- "Load remote procedure call connection timeout is adjusted to {} ms ({} mins)",
+ DataNodeQueryMessages.LOAD_RPC_CONNECTION_TIMEOUT_ADJUSTED,
newConnectionTimeout,
newConnectionTimeout / 60000.0);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
index 300b8f0eeceb9..614839732177a 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/scheduler/load/LoadTsFileScheduler.java
@@ -244,7 +244,7 @@ public void start() {
if (RegionMigrateService.getInstance().getLastNotifyMigratingTime() > startTimeMs
|| RegionMigrateService.getInstance().mayHaveMigratingRegions()) {
LOGGER.warn(
- "LoadTsFileScheduler: Region migration was detected during loading TsFile {}, will convert to insertion to avoid data loss",
+ DataNodeQueryMessages.LOAD_REGION_MIGRATION_DETECTED_CONVERT_TO_INSERTION,
filePath);
isLoadSingleTsFileSuccess = false;
}
@@ -252,7 +252,7 @@ public void start() {
if (isLoadSingleTsFileSuccess) {
node.clean();
LOGGER.info(
- "Load TsFile {} Successfully, load process [{}/{}]",
+ DataNodeQueryMessages.LOAD_TSFILE_SUCCESSFULLY_PROCESS,
filePath,
i + 1,
tsFileNodeListSize);
@@ -260,7 +260,7 @@ public void start() {
isLoadSuccess = false;
failedTsFileNodeIndexes.add(i);
LOGGER.warn(
- "Can not Load TsFile {}, load process [{}/{}]",
+ DataNodeQueryMessages.CANNOT_LOAD_TSFILE_PROCESS,
filePath,
i + 1,
tsFileNodeListSize);
@@ -299,8 +299,7 @@ public void start() {
try {
// if failed to load some TsFiles, then try to convert the TsFiles to Tablets
LOGGER.info(
- "Load TsFile(s) failed, will try to convert to tablets and insert. Failed TsFiles: {}",
- failedTsFiles);
+ DataNodeQueryMessages.LOAD_TSFILES_FAILED_TRY_CONVERT_TO_TABLETS, failedTsFiles);
convertFailedTsFilesToTabletsAndRetry();
} finally {
LOAD_TSFILE_COST_METRICS_SET.recordPhaseTimeCost(
@@ -324,13 +323,16 @@ private boolean firstPhase(LoadSingleTsFileNode node) {
} catch (IllegalStateException e) {
LOGGER.warn(
String.format(
- "Dispatch TsFileData error when parsing TsFile %s.",
+ DataNodeQueryMessages.DISPATCH_TSFILE_DATA_ERROR_WHEN_PARSING,
node.getTsFileResource().getTsFile()),
e);
return false;
} catch (Exception e) {
LOGGER.warn(
- String.format("Parse or send TsFile %s error.", node.getTsFileResource().getTsFile()), e);
+ String.format(
+ DataNodeQueryMessages.PARSE_OR_SEND_TSFILE_ERROR,
+ node.getTsFileResource().getTsFile()),
+ e);
return false;
} finally {
tsFileDataManager.clear();
@@ -361,8 +363,7 @@ private boolean dispatchOnePieceNode(
CONFIG.getLoadCleanupTaskExecutionDelayTimeSeconds(), TimeUnit.SECONDS);
if (!result.isSuccessful()) {
LOGGER.warn(
- "Dispatch one piece to ReplicaSet {} error. Result status code {}. "
- + "Result status message {}. Dispatch piece node error:%n{}",
+ DataNodeQueryMessages.DISPATCH_ONE_PIECE_ERROR,
replicaSet,
TSStatusCode.representOf(result.getFailureStatus().getCode()).name(),
result.getFailureStatus().getMessage(),
@@ -370,14 +371,14 @@ private boolean dispatchOnePieceNode(
if (result.getFailureStatus().getSubStatus() != null) {
for (TSStatus status : result.getFailureStatus().getSubStatus()) {
LOGGER.warn(
- "Sub status code {}. Sub status message {}.",
+ DataNodeQueryMessages.SUB_STATUS_CODE_MESSAGE,
TSStatusCode.representOf(status.getCode()).toString(),
status.getMessage());
}
}
TSStatus status = result.getFailureStatus();
status.setMessage(
- String.format("Load %s piece error in 1st phase. Because ", pieceNode.getTsFile())
+ String.format(DataNodeQueryMessages.LOAD_PIECE_ERROR_FIRST_PHASE, pieceNode.getTsFile())
+ status.getMessage());
return false;
}
@@ -390,7 +391,9 @@ private boolean dispatchOnePieceNode(
} catch (TimeoutException e) {
dispatchResultFuture.cancel(true);
LOGGER.warn(
- String.format("Wait for loading %s time out.", LoadTsFilePieceNode.class.getName()), e);
+ String.format(
+ DataNodeQueryMessages.WAIT_FOR_LOADING_TIMEOUT, LoadTsFilePieceNode.class.getName()),
+ e);
return false;
}
return true;
@@ -421,8 +424,10 @@ private boolean secondPhase(
} catch (final IOException e) {
throw new RuntimeException(
String.format(
- "Serialize Progress Index error, isFirstPhaseSuccess: %s, uuid: %s, tsFile: %s",
- isFirstPhaseSuccess, uuid, tsFile.getAbsolutePath()),
+ DataNodeQueryMessages.SERIALIZE_PROGRESS_INDEX_ERROR,
+ isFirstPhaseSuccess,
+ uuid,
+ tsFile.getAbsolutePath()),
e);
}
})));
@@ -432,8 +437,7 @@ private boolean secondPhase(
FragInstanceDispatchResult result = dispatchResultFuture.get();
if (!result.isSuccessful()) {
LOGGER.warn(
- "Dispatch load command {} of TsFile {} error to replicaSets {} error. "
- + "Result status code {}. Result status message {}.",
+ DataNodeQueryMessages.DISPATCH_LOAD_COMMAND_ERROR,
loadCommandReq,
tsFile,
allReplicaSets,
@@ -442,8 +446,12 @@ private boolean secondPhase(
TSStatus status = result.getFailureStatus();
status.setMessage(
String.format(
- "Load %s error in second phase. Because %s, first phase is %s",
- tsFile, status.getMessage(), isFirstPhaseSuccess ? "success" : "failed"));
+ DataNodeQueryMessages.LOAD_TSFILE_ERROR_SECOND_PHASE,
+ tsFile,
+ status.getMessage(),
+ isFirstPhaseSuccess
+ ? DataNodeQueryMessages.LOAD_FIRST_PHASE_SUCCESS
+ : DataNodeQueryMessages.LOAD_FIRST_PHASE_FAILED));
return false;
}
} catch (InterruptedException | ExecutionException e) {
@@ -516,8 +524,7 @@ private boolean loadLocally(LoadSingleTsFileNode node) throws IoTDBException {
} catch (FragmentInstanceDispatchException e) {
LOGGER.warn(
String.format(
- "Dispatch tsFile %s error to local error. Result status code %s. "
- + "Result status message %s.",
+ DataNodeQueryMessages.DISPATCH_TSFILE_TO_LOCAL_ERROR,
node.getTsFileResource().getTsFile(),
TSStatusCode.representOf(e.getFailureStatus().getCode()).name(),
e.getFailureStatus().getMessage()));
@@ -605,17 +612,17 @@ private void convertFailedTsFilesToTabletsAndRetry() {
if (loadTsFileDataTypeConverter.isSuccessful(status)) {
iterator.remove();
LOGGER.info(
- "Load: Successfully converted TsFile {} into tablets and inserted.",
+ DataNodeQueryMessages.SUCCESS_CONVERT_TSFILE_TO_TABLETS,
failedNode.getTsFileResource().getTsFilePath());
} else {
LOGGER.warn(
- "Load: Failed to convert to tablets from TsFile {}. Status: {}",
+ DataNodeQueryMessages.FAILED_CONVERT_TSFILE_TO_TABLETS_STATUS,
failedNode.getTsFileResource().getTsFilePath(),
status);
}
} catch (final Exception e) {
LOGGER.warn(
- "Load: Failed to convert to tablets from TsFile {}. Exception: {}",
+ DataNodeQueryMessages.FAILED_CONVERT_TSFILE_TO_TABLETS_EXCEPTION,
failedNode.getTsFileResource().getTsFilePath(),
e.getMessage(),
e);
@@ -629,10 +636,11 @@ private void convertFailedTsFilesToTabletsAndRetry() {
stateMachine.transitionToFinished();
} else {
final String errorMsg =
- "Load: failed to load some TsFiles by converting them into tablets. Failed TsFiles: "
- + failedTsFileNodeIndexes.stream()
+ String.format(
+ DataNodeQueryMessages.FAILED_LOAD_BY_CONVERTING_TO_TABLETS,
+ failedTsFileNodeIndexes.stream()
.map(i -> tsFileNodeList.get(i).getTsFileResource().getTsFilePath())
- .collect(Collectors.joining(", "));
+ .collect(Collectors.joining(", ")));
LOGGER.warn(errorMsg);
stateMachine.transitionToFailed(new LoadFileException(errorMsg));
}
@@ -836,7 +844,7 @@ private boolean sendAllTsFileData() throws LoadFileException {
&& !scheduler.dispatchOnePieceNode(
entry.getValue().getRight(), entry.getValue().getLeft())) {
LOGGER.warn(
- "Dispatch piece node {} of TsFile {} error.",
+ DataNodeQueryMessages.DISPATCH_PIECE_NODE_OF_TSFILE_ERROR,
entry.getValue(),
singleTsFileNode.getTsFileResource().getTsFile());
isAllSuccess = false;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
index 444fdd2e9899b..c24586f90e123 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java
@@ -74,6 +74,7 @@
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
import static org.apache.iotdb.db.utils.EncodingInferenceUtils.getDefaultEncoding;
@@ -82,11 +83,14 @@ public class IoTDBInternalLocalReporter extends IoTDBInternalReporter {
private static final Logger LOGGER = LoggerFactory.getLogger(IoTDBInternalLocalReporter.class);
private static final SessionManager SESSION_MANAGER = SessionManager.getInstance();
private static final Coordinator COORDINATOR = Coordinator.getInstance();
+ private static final long METRIC_UPDATE_FAILURE_LOG_INTERVAL_MS = TimeUnit.MINUTES.toMillis(1);
private final SessionInfo sessionInfo;
private final IPartitionFetcher partitionFetcher;
private final ISchemaFetcher schemaFetcher;
private Future> currentServiceFuture;
private final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
+ private final AtomicLong lastMetricUpdateFailureLogTime = new AtomicLong(0);
+ private final AtomicLong suppressedMetricUpdateFailureLogCount = new AtomicLong(0);
public IoTDBInternalLocalReporter() {
partitionFetcher = ClusterPartitionFetcher.getInstance();
@@ -174,18 +178,60 @@ protected void writeMetricToIoTDB(Map valueMap, String prefix, l
result = insertRecord(valueMap, prefix, time);
}
if (result.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- LOGGER.warn(DataNodeMiscMessages.FAILED_UPDATE_METRIC_VALUE, result);
+ logFailedUpdateMetricValue(result);
}
} catch (IoTDBConnectionException e1) {
- LOGGER.warn(
- "Failed to update the value of metric because of connection failure, because ", e1);
+ logMetricUpdateConnectionFailure(e1);
} catch (IllegalPathException | QueryProcessException e2) {
- LOGGER.warn(
- "Failed to update the value of metric because of internal error, because ", e2);
+ logMetricUpdateInternalFailure(e2);
}
});
}
+ private long getMetricUpdateFailureSuppressedCountIfShouldLog() {
+ long now = System.currentTimeMillis();
+ long lastLogTime = lastMetricUpdateFailureLogTime.get();
+ if (now - lastLogTime >= METRIC_UPDATE_FAILURE_LOG_INTERVAL_MS
+ && lastMetricUpdateFailureLogTime.compareAndSet(lastLogTime, now)) {
+ return suppressedMetricUpdateFailureLogCount.getAndSet(0);
+ }
+ suppressedMetricUpdateFailureLogCount.incrementAndGet();
+ return -1;
+ }
+
+ private void logFailedUpdateMetricValue(TSStatus result) {
+ long suppressedCount = getMetricUpdateFailureSuppressedCountIfShouldLog();
+ if (suppressedCount < 0) {
+ return;
+ }
+ LOGGER.warn(
+ DataNodeMiscMessages.FAILED_UPDATE_METRIC_VALUE + ", suppressedSimilarLogs={}",
+ result,
+ suppressedCount);
+ }
+
+ private void logMetricUpdateConnectionFailure(IoTDBConnectionException e) {
+ long suppressedCount = getMetricUpdateFailureSuppressedCountIfShouldLog();
+ if (suppressedCount < 0) {
+ return;
+ }
+ LOGGER.warn(
+ "Failed to update the value of metric because of connection failure, suppressedSimilarLogs={}",
+ suppressedCount,
+ e);
+ }
+
+ private void logMetricUpdateInternalFailure(Exception e) {
+ long suppressedCount = getMetricUpdateFailureSuppressedCountIfShouldLog();
+ if (suppressedCount < 0) {
+ return;
+ }
+ LOGGER.warn(
+ "Failed to update the value of metric because of internal error, suppressedSimilarLogs={}",
+ suppressedCount,
+ e);
+ }
+
private TSStatus insertRecord(Map valueMap, String prefix, long time)
throws IoTDBConnectionException, QueryProcessException, IllegalPathException {
TSInsertRecordReq request = new TSInsertRecordReq();
@@ -242,7 +288,14 @@ private void createTimeSeries(Map valueMap, String prefix)
COORDINATOR.executeForTreeModel(
s, queryId, sessionInfo, "", partitionFetcher, schemaFetcher);
if (result.status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- LOGGER.warn(DataNodeMiscMessages.FAILED_AUTO_CREATE_TIMESERIES, paths, result.status);
+ long suppressedCount = getMetricUpdateFailureSuppressedCountIfShouldLog();
+ if (suppressedCount >= 0) {
+ LOGGER.warn(
+ DataNodeMiscMessages.FAILED_AUTO_CREATE_TIMESERIES + ", suppressedSimilarLogs={}",
+ paths,
+ result.status,
+ suppressedCount);
+ }
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 784d4fa477119..31d4fe9c7c409 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -3777,8 +3777,8 @@ public int executeTTLCheck() throws InterruptedException {
if (skipCurrentTTLAndModificationCheck()) {
return 0;
}
- logger.info(
- "[TTL] {}-{} Start ttl and modification checking.", databaseName, dataRegionIdString);
+ logger.debug(
+ "[TTL] {}-{} Start TTL and modification checking.", databaseName, dataRegionIdString);
CompactionScheduleContext context =
new CompactionScheduleContext(
EncryptDBUtils.getFirstEncryptParamFromDatabase(databaseName));
@@ -3800,12 +3800,19 @@ public int executeTTLCheck() throws InterruptedException {
if (context.hasSubmitTask()) {
CompactionMetrics.getInstance().updateCompactionTaskSelectionNum(context);
}
- logger.info(
- "[TTL] {}-{} Totally select {} all-outdated files and {} partial-outdated files.",
- databaseName,
- dataRegionIdString,
- context.getFullyDirtyFileNum(),
- context.getPartiallyDirtyFileNum());
+ if (context.hasSubmitTask()) {
+ logger.info(
+ "[TTL] {}-{} Selected {} fully outdated files and {} partially outdated files.",
+ databaseName,
+ dataRegionIdString,
+ context.getFullyDirtyFileNum(),
+ context.getPartiallyDirtyFileNum());
+ } else {
+ logger.debug(
+ "[TTL] {}-{} No fully outdated or partially outdated files are selected.",
+ databaseName,
+ dataRegionIdString);
+ }
} catch (InterruptedException e) {
throw e;
} catch (Throwable e) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
index 714d232d62538..0d15ef1aa7ea0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduleTaskWorker.java
@@ -74,13 +74,16 @@ public Void call() {
} catch (InterruptedException ignored) {
boolean isStoppedByUser =
CompactionScheduleTaskManager.getInstance().isStoppingAllScheduleTask();
- logger.info(
- "[CompactionScheduleTaskWorker-{}] compaction schedule is interrupted, isStopByUser: {}",
- workerId,
- isStoppedByUser);
if (isStoppedByUser) {
+ logger.debug(
+ "[CompactionScheduleTaskWorker-{}] compaction schedule is interrupted by stop signal",
+ workerId);
return null;
}
+ logger.info(
+ "[CompactionScheduleTaskWorker-{}] compaction schedule is interrupted, stoppedByUser: {}",
+ workerId,
+ false);
} catch (Exception e) {
logger.error(
"[CompactionScheduleTaskWorker-{}] Failed to execute compaction schedule task",
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
index ae9e871b0b40c..2e3298f3b39a2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/CompactionScheduler.java
@@ -47,6 +47,8 @@
import java.util.Collections;
import java.util.List;
import java.util.concurrent.Phaser;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.stream.Collectors;
@@ -54,10 +56,10 @@
/**
* CompactionScheduler schedules and submits the compaction task periodically, and it counts the
* total number of running compaction task. There are three compaction strategy: BALANCE,
- * INNER_CROSS, CROSS_INNER. Difference strategies will lead to different compaction preferences.
- * For different types of compaction task(e.g. InnerSpaceCompaction), CompactionScheduler will call
- * the corresponding {@link ICompactionSelector selector} according to the compaction machanism of
- * the task(e.g. LevelCompaction, SizeTiredCompaction), and the selection and submission process is
+ * INNER_CROSS, CROSS_INNER. Different strategies lead to different compaction preferences. For
+ * different types of compaction task(e.g. InnerSpaceCompaction), CompactionScheduler will call the
+ * corresponding {@link ICompactionSelector selector} according to the compaction mechanism of the
+ * task(e.g. LevelCompaction, SizeTieredCompaction), and the selection and submission process is
* carried out in the {@link ICompactionSelector#selectInnerSpaceTask(List)} () and {@link
* ICompactionSelector#selectCrossSpaceTask(List, List)}} in selector.
*/
@@ -65,6 +67,9 @@ public class CompactionScheduler {
private static final Logger LOGGER =
LoggerFactory.getLogger(IoTDBConstant.COMPACTION_LOGGER_NAME);
private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
+ private static final long DISK_SPACE_CHECK_FAIL_LOG_INTERVAL_MS = TimeUnit.MINUTES.toMillis(1);
+ private static final AtomicLong LAST_DISK_SPACE_CHECK_FAIL_LOG_TIME = new AtomicLong(0);
+ private static final AtomicLong SUPPRESSED_DISK_SPACE_CHECK_FAIL_LOG_COUNT = new AtomicLong(0);
private CompactionScheduler() {}
@@ -207,13 +212,32 @@ private static boolean canAddTaskToWaitingQueue(AbstractCompactionTask task)
}
// check disk space
if (!task.isDiskSpaceCheckPassed()) {
- LOGGER.info(
- "Compaction task start check failed because disk free ratio is less than disk_space_warning_threshold");
+ logDiskSpaceCheckFailure(task);
return false;
}
return true;
}
+ private static void logDiskSpaceCheckFailure(AbstractCompactionTask task) {
+ long now = System.currentTimeMillis();
+ long lastLogTime = LAST_DISK_SPACE_CHECK_FAIL_LOG_TIME.get();
+ if (now - lastLogTime >= DISK_SPACE_CHECK_FAIL_LOG_INTERVAL_MS
+ && LAST_DISK_SPACE_CHECK_FAIL_LOG_TIME.compareAndSet(lastLogTime, now)) {
+ long suppressedCount = SUPPRESSED_DISK_SPACE_CHECK_FAIL_LOG_COUNT.getAndSet(0);
+ LOGGER.info(
+ "Skip compaction task because the disk free ratio is lower than disk_space_warning_threshold, "
+ + "taskType={}, storageGroup={}, dataRegion={}, timePartition={}, processedFileNum={}, suppressedSimilarLogs={}",
+ task.getCompactionTaskType(),
+ task.getStorageGroupName(),
+ task.getDataRegionId(),
+ task.getTimePartition(),
+ task.getProcessedFileNum(),
+ suppressedCount);
+ } else {
+ SUPPRESSED_DISK_SPACE_CHECK_FAIL_LOG_COUNT.incrementAndGet();
+ }
+ }
+
public static int scheduleInsertionCompaction(
TsFileManager tsFileManager, long timePartition, CompactionScheduleContext context)
throws InterruptedException {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
index f76f58aab8022..e4e241f0c4fd2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/schedule/TTLScheduleTask.java
@@ -70,13 +70,12 @@ public Void call() throws Exception {
} catch (StopTTLCheckException | InterruptedException ignored) {
boolean isStoppedByUser =
CompactionScheduleTaskManager.getInstance().isStoppingAllScheduleTask();
- logger.info(
- "[TTLCheckTask-{}] TTL checker is interrupted, isStoppedByUser: {}",
- workerId,
- isStoppedByUser);
if (isStoppedByUser) {
+ logger.debug("[TTLCheckTask-{}] TTL checker is interrupted by stop signal", workerId);
return null;
}
+ logger.info(
+ "[TTLCheckTask-{}] TTL checker is interrupted, stoppedByUser: {}", workerId, false);
} catch (Exception e) {
logger.error(StorageEngineMessages.TTL_CHECK_TASK_FAILED, workerId, e);
} catch (Throwable t) {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java
index 00eb47d40ae2b..c2666ec6a9f61 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/WALManager.java
@@ -60,6 +60,8 @@
public class WALManager implements IService {
private static final Logger logger = LoggerFactory.getLogger(WALManager.class);
private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
+ private static final long WAL_DISK_USAGE_OVER_THROTTLE_LOG_INTERVAL_MS =
+ TimeUnit.MINUTES.toMillis(1);
// manage all wal nodes and decide how to allocate them
private final NodeAllocationStrategy walNodesManager;
@@ -69,6 +71,8 @@ public class WALManager implements IService {
private final AtomicLong totalDiskUsage = new AtomicLong();
// total number of wal files
private final AtomicLong totalFileNum = new AtomicLong();
+ private final AtomicLong lastWalDiskUsageOverThrottleLogTime = new AtomicLong(0);
+ private final AtomicLong suppressedWalDiskUsageOverThrottleLogCount = new AtomicLong(0);
private WALManager() {
if (config.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.IOT_CONSENSUS)
@@ -184,10 +188,7 @@ private void deleteOutdatedFiles() {
while ((firstLoop || shouldThrottle())) {
deleteOutdatedFilesInWALNodes();
if (firstLoop && shouldThrottle()) {
- logger.warn(
- "WAL disk usage {} is larger than the wal_throttle_threshold_in_byte * 0.8 {}, please check your write load, iot consensus and the pipe module. It's better to allocate more disk for WAL.",
- getTotalDiskUsage(),
- getThrottleThreshold());
+ logWalDiskUsageOverThrottle();
}
firstLoop = false;
if (Thread.interrupted()) {
@@ -197,6 +198,24 @@ private void deleteOutdatedFiles() {
}
}
+ private void logWalDiskUsageOverThrottle() {
+ long now = System.currentTimeMillis();
+ long lastLogTime = lastWalDiskUsageOverThrottleLogTime.get();
+ if (now - lastLogTime >= WAL_DISK_USAGE_OVER_THROTTLE_LOG_INTERVAL_MS
+ && lastWalDiskUsageOverThrottleLogTime.compareAndSet(lastLogTime, now)) {
+ long suppressedCount = suppressedWalDiskUsageOverThrottleLogCount.getAndSet(0);
+ logger.warn(
+ "WAL disk usage {} is larger than the wal_throttle_threshold_in_byte * 0.8 {}, "
+ + "please check your write load, IoTConsensus, and Pipe. "
+ + "It's better to allocate more disk for WAL. suppressedSimilarLogs={}",
+ getTotalDiskUsage(),
+ getThrottleThreshold(),
+ suppressedCount);
+ } else {
+ suppressedWalDiskUsageOverThrottleLogCount.incrementAndGet();
+ }
+ }
+
protected void deleteOutdatedFilesInWALNodes() {
if (config.getWalMode() == WALMode.DISABLE) {
return;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
index c43f2b533ab6e..a2aabcbad7d38 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/LoadTsFileManager.java
@@ -106,10 +106,6 @@ public class LoadTsFileManager {
private static final IoTDBConfig CONFIG = IoTDBDescriptor.getInstance().getConfig();
- private static final String MESSAGE_WRITER_MANAGER_HAS_BEEN_CLOSED =
- "%s TsFileWriterManager has been closed.";
- private static final String MESSAGE_DELETE_FAIL = "failed to delete {}.";
-
private static final AtomicReference LOAD_BASE_DIRS =
new AtomicReference<>(CONFIG.getLoadTsFileDirs());
private static final AtomicReference FOLDER_MANAGER = new AtomicReference<>();
@@ -192,7 +188,7 @@ private void cleanupTasks() {
} else {
final long waitTimeInMs = cleanupTask.scheduledTime - System.currentTimeMillis();
LOGGER.info(
- "Next load cleanup task {} is not ready to run, wait for at least {} ms ({}s).",
+ StorageEngineMessages.NEXT_LOAD_CLEANUP_TASK_NOT_READY,
cleanupTask.uuid,
waitTimeInMs,
waitTimeInMs / 1000.0);
@@ -463,7 +459,8 @@ private void clearDir(File dir) {
private void write(DataPartitionInfo partitionInfo, ChunkData chunkData)
throws IOException, PageException {
if (isClosed) {
- throw new IOException(String.format(MESSAGE_WRITER_MANAGER_HAS_BEEN_CLOSED, taskDir));
+ throw new IOException(
+ String.format(StorageEngineMessages.WRITER_MANAGER_HAS_BEEN_CLOSED, taskDir));
}
if (!dataPartition2Writer.containsKey(partitionInfo)) {
File newTsFile =
@@ -538,7 +535,7 @@ private void write(DataPartitionInfo partitionInfo, ChunkData chunkData)
}
if (writer.isWritingChunkGroup()) {
LOGGER.warn(
- "Writer {} for partition {} is already writing chunk group for device {}, but the last device is {}. ",
+ StorageEngineMessages.WRITER_ALREADY_WRITING_CHUNK_GROUP,
writer.getFile().getAbsolutePath(),
partitionInfo,
device,
@@ -555,7 +552,8 @@ private void write(DataPartitionInfo partitionInfo, ChunkData chunkData)
private void writeDeletion(DataRegion dataRegion, DeletionData deletionData)
throws IOException {
if (isClosed) {
- throw new IOException(String.format(MESSAGE_WRITER_MANAGER_HAS_BEEN_CLOSED, taskDir));
+ throw new IOException(
+ String.format(StorageEngineMessages.WRITER_MANAGER_HAS_BEEN_CLOSED, taskDir));
}
for (Map.Entry entry : dataPartition2Writer.entrySet()) {
final DataPartitionInfo partitionInfo = entry.getKey();
@@ -565,7 +563,8 @@ private void writeDeletion(DataRegion dataRegion, DeletionData deletionData)
File newModificationFile = ModificationFile.getExclusiveMods(writer.getFile());
if (!newModificationFile.createNewFile()) {
LOGGER.error(
- "Can not create ModificationFile {} for writing.", newModificationFile.getPath());
+ StorageEngineMessages.CANNOT_CREATE_MODIFICATION_FILE_FOR_WRITING,
+ newModificationFile.getPath());
return;
}
@@ -584,7 +583,8 @@ private void loadAll(
Map timePartitionProgressIndexMap)
throws IOException, LoadFileException {
if (isClosed) {
- throw new IOException(String.format(MESSAGE_WRITER_MANAGER_HAS_BEEN_CLOSED, taskDir));
+ throw new IOException(
+ String.format(StorageEngineMessages.WRITER_MANAGER_HAS_BEEN_CLOSED, taskDir));
}
for (final Map.Entry entry :
dataPartition2ModificationFile.entrySet()) {
@@ -771,7 +771,7 @@ private void close() {
} catch (DirectoryNotEmptyException e) {
LOGGER.info(StorageEngineMessages.TASK_DIR_NOT_EMPTY_SKIP_DELETE, taskDir.getPath());
} catch (IOException e) {
- LOGGER.warn(MESSAGE_DELETE_FAIL, taskDir.getPath(), e);
+ LOGGER.warn(StorageEngineMessages.FAILED_TO_DELETE_LOAD_TASK_DIR, taskDir.getPath(), e);
}
dataPartition2Writer = null;
dataPartition2Resource = null;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadDirScanner.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadDirScanner.java
index 2a3ddee11f7b8..381c4971c5498 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadDirScanner.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadDirScanner.java
@@ -147,10 +147,7 @@ private boolean checkPermission(final String listeningDir) {
if (!Files.isReadable(listeningDirPath)) {
if (!noPermissionDirs.contains(listeningDir)) {
- LOGGER.error(
- "Current dir path is not readable: {}."
- + "Skip scanning this dir. Please check the permission.",
- listeningDirPath);
+ LOGGER.error(StorageEngineMessages.ACTIVE_LOAD_DIR_NOT_READABLE, listeningDirPath);
noPermissionDirs.add(listeningDir);
}
return false;
@@ -158,10 +155,7 @@ private boolean checkPermission(final String listeningDir) {
if (!Files.isWritable(listeningDirPath)) {
if (!noPermissionDirs.contains(listeningDir)) {
- LOGGER.error(
- "Current dir path is not writable: {}."
- + "Skip scanning this dir. Please check the permission.",
- listeningDirPath);
+ LOGGER.error(StorageEngineMessages.ACTIVE_LOAD_DIR_NOT_WRITABLE, listeningDirPath);
noPermissionDirs.add(listeningDir);
}
return false;
@@ -170,10 +164,7 @@ private boolean checkPermission(final String listeningDir) {
noPermissionDirs.remove(listeningDir);
return true;
} catch (final Exception e) {
- LOGGER.error(
- "Error occurred during checking r/w permission of dir: {}. Skip scanning this dir.",
- listeningDir,
- e);
+ LOGGER.error(StorageEngineMessages.ACTIVE_LOAD_CHECK_DIR_PERMISSION_ERROR, listeningDir, e);
return false;
}
}
@@ -214,11 +205,7 @@ private void hotReloadActiveLoadDirs() {
ActiveLoadingFilesNumberMetricsSet.getInstance().updatePendingDirList(listeningDirs);
ActiveLoadingFilesSizeMetricsSet.getInstance().updatePendingDirList(listeningDirs);
} catch (final Exception e) {
- LOGGER.warn(
- "Error occurred during hot reload active load dirs. "
- + "Current active load listening dirs: {}.",
- listeningDirs,
- e);
+ LOGGER.warn(StorageEngineMessages.ACTIVE_LOAD_HOT_RELOAD_DIRS_ERROR, listeningDirs, e);
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadFailedMessageHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadFailedMessageHandler.java
index 92a1d45702b0b..2cd9f3130afee 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadFailedMessageHandler.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadFailedMessageHandler.java
@@ -20,6 +20,7 @@
package org.apache.iotdb.db.storageengine.load.active;
import org.apache.iotdb.commons.conf.CommonDescriptor;
+import org.apache.iotdb.db.i18n.StorageEngineMessages;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -37,28 +38,28 @@ public class ActiveLoadFailedMessageHandler {
Collections.unmodifiableMap(
new HashMap() {
{
- // system is memory constrains
+ // The system has memory constraints.
put(
"memory",
filePair ->
LOGGER.info(
- "Rejecting auto load tsfile {} (isGeneratedByPipe = {}) due to memory constraints, will retry later.",
+ StorageEngineMessages.ACTIVE_LOAD_REJECT_MEMORY,
filePair.getFile(),
filePair.isGeneratedByPipe()));
- // system is read only
+ // The system is read-only.
put(
"read only",
filePair ->
LOGGER.info(
- "Rejecting auto load tsfile {} (isGeneratedByPipe = {}) due to the system is read only, will retry later.",
+ StorageEngineMessages.ACTIVE_LOAD_REJECT_READ_ONLY,
filePair.getFile(),
filePair.isGeneratedByPipe()));
- // Timed out to wait for procedure return. The procedure is still running.
+ // Timed out waiting for procedure return. The procedure is still running.
put(
"procedure return",
filePair ->
LOGGER.info(
- "Rejecting auto load tsfile {} (isGeneratedByPipe = {}) due to time out to wait for procedure return, will retry later.",
+ StorageEngineMessages.ACTIVE_LOAD_REJECT_PROCEDURE_RETURN_TIMEOUT,
filePair.getFile(),
filePair.isGeneratedByPipe()));
// DataNode is not enough, please register more.
@@ -66,7 +67,7 @@ public class ActiveLoadFailedMessageHandler {
"not enough",
filePair ->
LOGGER.info(
- "Rejecting auto load tsfile {} (isGeneratedByPipe = {}) due to the datanode is not enough, will retry later.",
+ StorageEngineMessages.ACTIVE_LOAD_REJECT_DATANODE_NOT_ENOUGH,
filePair.getFile(),
filePair.isGeneratedByPipe()));
// Fail to connect to any config node. Please check status of ConfigNodes or logs of
@@ -75,17 +76,17 @@ public class ActiveLoadFailedMessageHandler {
"any config node",
filePair ->
LOGGER.info(
- "Rejecting auto load tsfile {} (isGeneratedByPipe = {}) due to fail to connect to any config node, will retry later.",
+ StorageEngineMessages.ACTIVE_LOAD_REJECT_CONFIG_NODE_CONNECTION,
filePair.getFile(),
filePair.isGeneratedByPipe()));
- // Current query is time out, query start time is 1729653161797, ddl is
+ // Current query timed out, query start time is 1729653161797, ddl is
// -3046040214706, current time is 1729653184210, please check your statement or
// modify timeout parameter
put(
"query is time out",
filePair ->
LOGGER.info(
- "Rejecting auto load tsfile {} (isGeneratedByPipe = {}) due to current query is time out, will retry later.",
+ StorageEngineMessages.ACTIVE_LOAD_REJECT_QUERY_TIMEOUT,
filePair.getFile(),
filePair.isGeneratedByPipe()));
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
index 13ec94186b779..d05fd0d7b81c3 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/active/ActiveLoadTsFileLoader.java
@@ -111,7 +111,7 @@ private void initFailDirIfNecessary() {
});
} catch (final IOException e) {
LOGGER.warn(
- "Error occurred during creating fail directory {} for active load.",
+ StorageEngineMessages.ACTIVE_LOAD_CREATE_FAIL_DIR_ERROR,
failDirFile.getAbsoluteFile(),
e);
}
@@ -178,7 +178,7 @@ private void tryLoadPendingTsFiles() {
if (result.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()
|| result.getCode() == TSStatusCode.REDIRECTION_RECOMMEND.getStatusCode()) {
LOGGER.info(
- "Successfully auto load tsfile {} (isGeneratedByPipe = {})",
+ StorageEngineMessages.ACTIVE_LOAD_TSFILE_SUCCESS,
loadEntry.get().getFile(),
loadEntry.get().isGeneratedByPipe());
} else {
@@ -271,7 +271,7 @@ private void handleLoadFailure(
final ActiveLoadPendingQueue.ActiveLoadEntry entry, final TSStatus status) {
if (!ActiveLoadFailedMessageHandler.isExceptionMessageShouldRetry(entry, status.getMessage())) {
LOGGER.warn(
- "Failed to auto load tsfile {} (isGeneratedByPipe = {}), status: {}. File will be moved to fail directory.",
+ StorageEngineMessages.ACTIVE_LOAD_TSFILE_FAILED_STATUS_MOVE_FAIL_DIR,
entry.getFile(),
entry.isGeneratedByPipe(),
status);
@@ -281,7 +281,7 @@ private void handleLoadFailure(
private void handleFileNotFoundException(final ActiveLoadPendingQueue.ActiveLoadEntry entry) {
LOGGER.warn(
- "Failed to auto load tsfile {} (isGeneratedByPipe = {}) due to file not found, will skip this file.",
+ StorageEngineMessages.ACTIVE_LOAD_TSFILE_FILE_NOT_FOUND_SKIP,
entry.getFile(),
entry.isGeneratedByPipe());
removeFileAndResourceAndModsToFailDir(entry.getFile());
@@ -291,7 +291,7 @@ private void handleOtherException(
final ActiveLoadPendingQueue.ActiveLoadEntry entry, final Exception e) {
if (!ActiveLoadFailedMessageHandler.isExceptionMessageShouldRetry(entry, e.getMessage())) {
LOGGER.warn(
- "Failed to auto load tsfile {} (isGeneratedByPipe = {}) because of an unexpected exception. File will be moved to fail directory.",
+ StorageEngineMessages.ACTIVE_LOAD_TSFILE_UNEXPECTED_EXCEPTION_MOVE_FAIL_DIR,
entry.getFile(),
entry.isGeneratedByPipe(),
e);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatement.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatement.java
index 1366b0720c557..4d427b1c0c8ec 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatement.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadConvertedInsertTabletStatement.java
@@ -19,6 +19,7 @@
package org.apache.iotdb.db.storageengine.load.converter;
+import org.apache.iotdb.db.i18n.StorageEngineMessages;
import org.apache.iotdb.db.pipe.receiver.transform.converter.ArrayConverter;
import org.apache.iotdb.db.pipe.receiver.transform.statement.PipeConvertedInsertTabletStatement;
import org.apache.iotdb.db.queryengine.plan.statement.crud.InsertTabletStatement;
@@ -49,7 +50,7 @@ protected boolean checkAndCastDataType(int columnIndex, TSDataType dataType) {
}
LOGGER.info(
- "Load: Inserting tablet to {}.{}. Casting type from {} to {}.",
+ StorageEngineMessages.CAST_TABLET_TYPE,
devicePath,
measurements[columnIndex],
dataTypes[columnIndex],
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTableStatementDataTypeConvertExecutionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTableStatementDataTypeConvertExecutionVisitor.java
index 440e8bb66f3ca..e96a4637b1428 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTableStatementDataTypeConvertExecutionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTableStatementDataTypeConvertExecutionVisitor.java
@@ -66,7 +66,7 @@ public Optional visitLoadTsFile(
if (Objects.isNull(databaseName)) {
final String errorMsg =
String.format(
- "Database name is unexpectedly null for LoadTsFileStatement: %s. Skip data type conversion.",
+ StorageEngineMessages.DATABASE_NAME_NULL_SKIP_DATA_TYPE_CONVERSION,
loadTsFileStatement);
LOGGER.warn(errorMsg);
return Optional.of(
@@ -110,7 +110,9 @@ public Optional visitLoadTsFile(
}
} catch (final Exception e) {
LOGGER.warn(
- "Failed to convert data type for LoadTsFileStatement: {}.", loadTsFileStatement, e);
+ StorageEngineMessages.FAILED_CONVERT_DATA_TYPE_FOR_LOAD_TSFILE_STATEMENT,
+ loadTsFileStatement,
+ e);
return Optional.of(
LoadTsFileDataTypeConverter.TABLE_STATEMENT_EXCEPTION_VISITOR.process(
loadTsFileStatement, e));
@@ -130,8 +132,7 @@ public Optional visitLoadTsFile(
});
}
- LOGGER.info(
- "Data type conversion for LoadTsFileStatement {} is successful.", loadTsFileStatement);
+ LOGGER.info(StorageEngineMessages.DATA_TYPE_CONVERSION_SUCCESS, loadTsFileStatement);
return Optional.of(new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()));
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitor.java
index e7afde176b6ef..d5a99b2fa01af 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitor.java
@@ -131,7 +131,9 @@ public Optional visitLoadFile(
}
} catch (final Exception e) {
LOGGER.warn(
- "Failed to convert data type for LoadTsFileStatement: {}.", loadTsFileStatement, e);
+ StorageEngineMessages.FAILED_CONVERT_DATA_TYPE_FOR_LOAD_TSFILE_STATEMENT,
+ loadTsFileStatement,
+ e);
return Optional.of(
loadTsFileStatement.accept(
LoadTsFileDataTypeConverter.TREE_STATEMENT_EXCEPTION_VISITOR, e));
@@ -155,7 +157,9 @@ public Optional visitLoadFile(
}
} catch (final Exception e) {
LOGGER.warn(
- "Failed to convert data type for LoadTsFileStatement: {}.", loadTsFileStatement, e);
+ StorageEngineMessages.FAILED_CONVERT_DATA_TYPE_FOR_LOAD_TSFILE_STATEMENT,
+ loadTsFileStatement,
+ e);
return Optional.of(
loadTsFileStatement.accept(
LoadTsFileDataTypeConverter.TREE_STATEMENT_EXCEPTION_VISITOR, e));
@@ -183,8 +187,7 @@ public Optional visitLoadFile(
});
}
- LOGGER.info(
- "Data type conversion for LoadTsFileStatement {} is successful.", loadTsFileStatement);
+ LOGGER.info(StorageEngineMessages.DATA_TYPE_CONVERSION_SUCCESS, loadTsFileStatement);
return Optional.of(new TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode()));
}
@@ -234,7 +237,7 @@ public static boolean handleTSStatus(final TSStatus result, final Object loadTsF
|| result.getCode() == TSStatusCode.REDIRECTION_RECOMMEND.getStatusCode()
|| result.getCode() == TSStatusCode.LOAD_IDEMPOTENT_CONFLICT_EXCEPTION.getStatusCode())) {
LOGGER.warn(
- "Failed to convert data type for LoadTsFileStatement: {}, status code is {}.",
+ StorageEngineMessages.FAILED_CONVERT_DATA_TYPE_STATUS_CODE,
loadTsFileStatement,
result.getCode());
return false;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
index 3aab4aac29009..1cdb24dc67daa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/converter/LoadTsFileDataTypeConverter.java
@@ -24,6 +24,7 @@
import org.apache.iotdb.commons.queryengine.common.SqlDialect;
import org.apache.iotdb.db.auth.AuthorityChecker;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.i18n.StorageEngineMessages;
import org.apache.iotdb.db.protocol.session.IClientSession;
import org.apache.iotdb.db.protocol.session.InternalClientSession;
import org.apache.iotdb.db.protocol.session.SessionManager;
@@ -88,7 +89,7 @@ public Optional convertForTableModel(final LoadTsFile loadTsFileTableS
tableStatementDataTypeConvertExecutionVisitor, loadTsFileTableStatement.getDatabase());
} catch (Exception e) {
LOGGER.warn(
- "Failed to convert data types for table model statement {}.",
+ StorageEngineMessages.FAILED_CONVERT_DATA_TYPES_FOR_TABLE_MODEL,
loadTsFileTableStatement,
e);
return Optional.of(
@@ -140,7 +141,9 @@ public Optional convertForTreeModel(final LoadTsFileStatement loadTsFi
return loadTsFileTreeStatement.accept(treeStatementDataTypeConvertExecutionVisitor, null);
} catch (Exception e) {
LOGGER.warn(
- "Failed to convert data types for tree model statement {}.", loadTsFileTreeStatement, e);
+ StorageEngineMessages.FAILED_CONVERT_DATA_TYPES_FOR_TREE_MODEL,
+ loadTsFileTreeStatement,
+ e);
return Optional.of(
new TSStatus(TSStatusCode.LOAD_FILE_ERROR.getStatusCode()).setMessage(e.getMessage()));
} finally {
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/disk/MinIOSelector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/disk/MinIOSelector.java
index 8f572fd569bbe..80c72fdf87ad7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/disk/MinIOSelector.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/disk/MinIOSelector.java
@@ -63,12 +63,11 @@ public MinIOSelector(final String[] dirs, final DiskDirectorySelector selector)
this.rootDisks2DataDirsMapForLoad.put(mountPoint, dataDirPath);
logger.info(StorageEngineMessages.ADD_MOUNT_POINT, dataDirPath, mountPoint);
} else {
- logger.info(
- "Failed to find mount point {}, skip register it to map", dataDirPath);
+ logger.info(StorageEngineMessages.FAILED_FIND_MOUNT_POINT, dataDirPath);
}
} catch (Exception e) {
logger.warn(
- "Exception occurs when reading data dir's mount point {}", dataDirPath, e);
+ StorageEngineMessages.EXCEPTION_READING_DATA_DIR_MOUNT_POINT, dataDirPath, e);
}
});
}
@@ -90,7 +89,7 @@ public File selectTargetDirectory(
}
} catch (Exception e) {
logger.warn(
- "Exception occurs when reading target file's mount point {}",
+ StorageEngineMessages.EXCEPTION_READING_TARGET_FILE_MOUNT_POINT,
sourceDirectory.getAbsoluteFile(),
e);
}
@@ -98,7 +97,7 @@ public File selectTargetDirectory(
File targetFile = null;
if (rootDisks2DataDirsMapForLoad.containsKey(fileDirRoot)) {
if (appendFileName) {
- // if there is an overlap between firDirRoot and data directories' disk roots, try to get
+ // if there is an overlap between fileDirRoot and data directories' disk roots, try to get
// targetFile in the same disk
targetFile = fsFactory.getFile(rootDisks2DataDirsMapForLoad.get(fileDirRoot), fileName);
} else {
@@ -108,7 +107,7 @@ public File selectTargetDirectory(
return targetFile;
}
- // if there isn't an overlap, downgrade to storage balance(sequence) strategy.
+ // if there isn't an overlap, fall back to the storage balance (sequence) strategy.
return super.selectTargetDirectory(sourceDirectory, fileName, appendFileName, tierLevel);
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileDataCacheMemoryBlock.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileDataCacheMemoryBlock.java
index 6980cd63e8ece..7cd76c5b522e4 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileDataCacheMemoryBlock.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileDataCacheMemoryBlock.java
@@ -80,18 +80,14 @@ public synchronized void forceResize(long newSizeInBytes) {
@Override
protected void releaseAllMemory() {
if (memoryUsageInBytes.get() != 0) {
- LOGGER.warn(
- "Try to release memory from a memory block {} which has not released all memory", this);
+ LOGGER.warn(StorageEngineMessages.RELEASE_MEMORY_BLOCK_WITH_USAGE, this);
}
MEMORY_MANAGER.releaseToQuery(limitedMemorySizeInBytes.get());
}
public boolean doShrink(long shrinkMemoryInBytes) {
if (shrinkMemoryInBytes < 0) {
- LOGGER.warn(
- "Try to shrink a negative memory size {} from memory block {}",
- shrinkMemoryInBytes,
- this);
+ LOGGER.warn(StorageEngineMessages.SHRINK_NEGATIVE_MEMORY, shrinkMemoryInBytes, this);
return false;
} else if (shrinkMemoryInBytes == 0) {
return true;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryBlock.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryBlock.java
index 568dd6122feaf..96a0ac8703243 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryBlock.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryBlock.java
@@ -101,8 +101,7 @@ public synchronized void forceResize(long newSizeInBytes) {
@Override
protected synchronized void releaseAllMemory() {
if (memoryUsageInBytes.get() != 0) {
- LOGGER.warn(
- "Try to release memory from a memory block {} which has not released all memory", this);
+ LOGGER.warn(StorageEngineMessages.RELEASE_MEMORY_BLOCK_WITH_USAGE, this);
}
MEMORY_MANAGER.releaseToQuery(totalMemorySizeInBytes);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
index 9af3fc6cf20d1..074a86ebd1fb0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/memory/LoadTsFileMemoryManager.java
@@ -89,7 +89,7 @@ public synchronized void releaseToQuery(final long sizeInBytes) {
}
if (usedMemorySizeInBytes.get() < sizeInBytes) {
LOGGER.error(
- "Load: Attempting to release more memory ({}) than allocated ({})",
+ StorageEngineMessages.RELEASE_MORE_MEMORY_THAN_ALLOCATED,
sizeInBytes,
usedMemorySizeInBytes.get());
}
@@ -112,9 +112,7 @@ public synchronized LoadTsFileMemoryBlock allocateMemoryBlock(long sizeInBytes)
}
} catch (LoadRuntimeOutOfMemoryException e) {
if (dataCacheMemoryBlock != null && dataCacheMemoryBlock.doShrink(sizeInBytes)) {
- LOGGER.info(
- "Load: Query engine's memory is not sufficient, allocated MemoryBlock from DataCacheMemoryBlock, size: {}",
- sizeInBytes);
+ LOGGER.info(StorageEngineMessages.ALLOCATED_MEMORY_BLOCK_FROM_DATA_CACHE, sizeInBytes);
return new LoadTsFileMemoryBlock(sizeInBytes);
}
throw e;
@@ -142,7 +140,7 @@ synchronized void forceResize(LoadTsFileMemoryBlock memoryBlock, long newSizeInB
if (memoryBlock.getMemoryUsageInBytes() > newSizeInBytes) {
LOGGER.error(
- "Load: Failed to setTotalMemorySizeInBytes memory block {} to {} bytes, current memory usage {} bytes",
+ StorageEngineMessages.RESIZE_MEMORY_BLOCK_FAILED,
memoryBlock,
newSizeInBytes,
memoryBlock.getMemoryUsageInBytes());
@@ -158,14 +156,14 @@ synchronized void forceResize(LoadTsFileMemoryBlock memoryBlock, long newSizeInB
forceAllocateFromQuery(bytesNeeded);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(
- "Load: Force resized LoadTsFileMemoryBlock with memory from query engine, size added: {}, new size: {}",
+ StorageEngineMessages.FORCE_RESIZED_MEMORY_BLOCK_FROM_QUERY,
bytesNeeded,
newSizeInBytes);
}
} catch (LoadRuntimeOutOfMemoryException e) {
if (dataCacheMemoryBlock != null && dataCacheMemoryBlock.doShrink(bytesNeeded)) {
LOGGER.info(
- "Load: Query engine's memory is not sufficient, force resized LoadTsFileMemoryBlock with memory from DataCacheMemoryBlock, size added: {}, new size: {}",
+ StorageEngineMessages.FORCE_RESIZED_MEMORY_BLOCK_FROM_DATA_CACHE,
bytesNeeded,
newSizeInBytes);
} else {
@@ -193,7 +191,7 @@ public synchronized LoadTsFileDataCacheMemoryBlock allocateDataCacheMemoryBlock(
throw e;
}
LOGGER.info(
- "Create Data Cache Memory Block {}, allocate memory {}",
+ StorageEngineMessages.CREATE_DATA_CACHE_MEMORY_BLOCK,
dataCacheMemoryBlock,
actuallyAllocateMemoryInBytes);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/TsFileSplitter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/TsFileSplitter.java
index d43b828cced8f..24c87cf9f2c44 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/TsFileSplitter.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/load/splitter/TsFileSplitter.java
@@ -396,15 +396,13 @@ private boolean checkMagic(TsFileSequenceReader reader) throws IOException {
byte versionNumber = reader.readVersionNumber();
if (versionNumber < TSFileConfig.VERSION_NUMBER) {
if (versionNumber == TSFileConfig.VERSION_NUMBER_V3 && TSFileConfig.VERSION_NUMBER == 4) {
- logger.info(
- "try to load TsFile V3 into current version (V4), file path: {}", reader.getFileName());
+ logger.info(StorageEngineMessages.TRY_LOAD_TSFILE_V3_TO_CURRENT_V4, reader.getFileName());
} else {
logger.error(StorageEngineMessages.FILE_VERSION_TOO_OLD, reader.getFileName());
return false;
}
} else if (versionNumber > TSFileConfig.VERSION_NUMBER) {
- logger.error(
- "the file's Version Number is higher than current, file path: {}", reader.getFileName());
+ logger.error(StorageEngineMessages.FILE_VERSION_HIGHER_THAN_CURRENT, reader.getFileName());
return false;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionAgentLauncher.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionAgentLauncher.java
index 447a70ad58248..a27806dcf97f7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionAgentLauncher.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionAgentLauncher.java
@@ -63,7 +63,7 @@ public static synchronized void launchSubscriptionTopicAgent() throws StartupExc
!= TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
final String exceptionMessage =
String.format(
- "Failed to get all topic info in config node, status is %s",
+ "Failed to get all topic info from ConfigNode, status is %s",
getAllTopicInfoResp.getStatus());
LOGGER.warn(exceptionMessage);
throw new SubscriptionException(exceptionMessage);
@@ -77,7 +77,7 @@ public static synchronized void launchSubscriptionTopicAgent() throws StartupExc
byteBuffer -> {
final TopicMeta topicMeta = TopicMeta.deserialize(byteBuffer);
LOGGER.info(
- "Pulled topic meta from config node: {}, recovering ...",
+ "Pulled topic meta from ConfigNode: {}, recovering...",
topicMeta);
return topicMeta;
})
@@ -91,7 +91,7 @@ public static synchronized void launchSubscriptionTopicAgent() throws StartupExc
} catch (final SubscriptionException | ClientManagerException | TException e) {
retry++;
LOGGER.warn(
- "Failed to get topic meta from config node for {} times, will retry at most {} times.",
+ "Failed to get topic meta from ConfigNode on attempt {}, will retry up to {} attempts.",
retry,
MAX_RETRY_TIMES,
e);
@@ -100,7 +100,7 @@ public static synchronized void launchSubscriptionTopicAgent() throws StartupExc
retry * SubscriptionConfig.getInstance().getSubscriptionLaunchRetryIntervalMs());
} catch (final InterruptedException interruptedException) {
LOGGER.info(
- "Interrupted while sleeping, will retry to get topic meta from config node.",
+ "Interrupted while sleeping, will retry getting topic meta from ConfigNode.",
interruptedException);
Thread.currentThread().interrupt();
}
@@ -121,7 +121,7 @@ public static synchronized void launchSubscriptionConsumerAgent() throws Startup
!= TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
final String exceptionMessage =
String.format(
- "Failed to get all subscription info in config node, status is %s",
+ "Failed to get all subscription info from ConfigNode, status is %s",
getAllSubscriptionInfoResp.getStatus());
LOGGER.warn(exceptionMessage);
throw new SubscriptionException(exceptionMessage);
@@ -136,7 +136,7 @@ public static synchronized void launchSubscriptionConsumerAgent() throws Startup
final ConsumerGroupMeta consumerGroupMeta =
ConsumerGroupMeta.deserialize(byteBuffer);
LOGGER.info(
- "Pulled consumer group meta from config node: {}, recovering ...",
+ "Pulled consumer group meta from ConfigNode: {}, recovering...",
consumerGroupMeta);
return consumerGroupMeta;
})
@@ -150,7 +150,7 @@ public static synchronized void launchSubscriptionConsumerAgent() throws Startup
} catch (final SubscriptionException | ClientManagerException | TException e) {
retry++;
LOGGER.warn(
- "Failed to get consumer group meta from config node for {} times, will retry at most {} times.",
+ "Failed to get consumer group meta from ConfigNode on attempt {}, will retry up to {} attempts.",
retry,
MAX_RETRY_TIMES,
e);
@@ -159,7 +159,7 @@ public static synchronized void launchSubscriptionConsumerAgent() throws Startup
retry * SubscriptionConfig.getInstance().getSubscriptionLaunchRetryIntervalMs());
} catch (final InterruptedException interruptedException) {
LOGGER.info(
- "Interrupted while sleeping, will retry to get consumer group meta from config node.",
+ "Interrupted while sleeping, will retry getting consumer group meta from ConfigNode.",
interruptedException);
Thread.currentThread().interrupt();
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionConsumerAgent.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionConsumerAgent.java
index 8f6e26afe2f15..b56bd64932cd5 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionConsumerAgent.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/agent/SubscriptionConsumerAgent.java
@@ -102,12 +102,12 @@ private void handleSingleConsumerGroupMetaChangesInternal(
return;
}
- // if the creation time of consumer group meta on local agent is inconsistent with meta from
- // coordinator
+ // If the creation time of consumer group meta on the local agent is inconsistent with meta from
+ // the coordinator, drop the stale broker.
if (metaInAgent.getCreationTime() != metaFromCoordinator.getCreationTime()) {
if (SubscriptionAgent.broker().isBrokerExist(consumerGroupId)) {
LOGGER.warn(
- "Subscription: broker bound to consumer group [{}] has already existed when the creation time of consumer group meta on local agent {} is inconsistent with meta from coordinator {}, drop it",
+ "Subscription: broker bound to consumer group [{}] already exists while the creation time of consumer group meta on the local agent {} is inconsistent with meta from the coordinator {}, dropping it",
consumerGroupId,
metaInAgent,
metaFromCoordinator);
@@ -195,7 +195,7 @@ private void handleDropConsumerGroupInternal(final String consumerGroupId) {
}
} else {
LOGGER.warn(
- "Subscription: broker bound to consumer group [{}] does not existed when the corresponding consumer group meta has already existed on local agent, ignore it",
+ "Subscription: broker bound to consumer group [{}] does not exist while the corresponding consumer group meta already exists on the local agent, ignoring it",
consumerGroupId);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionBroker.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionBroker.java
index cc03f7261419b..8c8d038923515 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionBroker.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionBroker.java
@@ -78,7 +78,7 @@ public SubscriptionBroker(final String brokerId) {
this.consumerIdToSubscriptionStates =
Caffeine.newBuilder()
- // TODO: config
+ // TODO: make the subscription state cache TTL configurable.
.expireAfterAccess(60L, TimeUnit.SECONDS)
.build(consumerId -> new SubscriptionStates());
}
@@ -188,7 +188,7 @@ private Set prepareCandidateTopicNames(
if (Objects.isNull(prefetchingQueue)) {
if (completedTopicNames.containsKey(topicName)) {
LOGGER.info(
- "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] is completed, return termination response to client",
+ "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] is completed, returning termination response to client",
topicName,
brokerId);
// Add a termination event for the completed topic
@@ -367,7 +367,7 @@ public List fetchTopicNamesToUnsubscribe(final Set topicNames) {
// If there is no prefetching queue for the topic, check if it's completed
if (Objects.isNull(prefetchingQueue) && completedTopicNames.containsKey(topicName)) {
LOGGER.info(
- "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] is completed, reply to client heartbeat request",
+ "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] is completed, replying to client heartbeat request",
topicName,
brokerId);
topicNamesToUnsubscribe.add(topicName);
@@ -383,7 +383,7 @@ public void bindPrefetchingQueue(
final String topicName, final UnboundedBlockingPendingQueue inputPendingQueue) {
if (Objects.nonNull(topicNameToPrefetchingQueue.get(topicName))) {
LOGGER.warn(
- "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] has already existed",
+ "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] already exists",
topicName,
brokerId);
return;
@@ -462,7 +462,7 @@ public void removePrefetchingQueue(final String topicName) {
topicNameToPrefetchingQueue.get(topicName);
if (Objects.nonNull(prefetchingQueue)) {
LOGGER.info(
- "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] still exists, unbind it before closing",
+ "Subscription: prefetching queue bound to topic [{}] for consumer group [{}] still exists, unbinding it before closing",
topicName,
brokerId);
// TODO: consider more robust metadata semantics
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
index 4d2cfe3a83e0b..99594791faea7 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/broker/SubscriptionPrefetchingQueue.java
@@ -249,7 +249,7 @@ private SubscriptionEvent pollInternal(final String consumerId) {
TimeUnit.MILLISECONDS))) {
if (event.isCommitted()) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} poll committed event {} from prefetching queue (broken invariant), remove it",
+ "Subscription: SubscriptionPrefetchingQueue {} polled committed event {} from prefetching queue (broken invariant), removing it",
this,
event);
// no need to update inFlightEvents
@@ -258,7 +258,7 @@ private SubscriptionEvent pollInternal(final String consumerId) {
if (!event.pollable()) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} poll non-pollable event {} from prefetching queue (broken invariant), nack and remove it",
+ "Subscription: SubscriptionPrefetchingQueue {} polled non-pollable event {} from prefetching queue (broken invariant), nacking and removing it",
this,
event);
event.nack(); // now pollable
@@ -318,7 +318,7 @@ private SubscriptionEvent pollInternalV2(final String consumerId, final PollTime
TimeUnit.MILLISECONDS))) {
if (event.isCommitted()) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} poll committed event {} from prefetching queue (broken invariant), remove it",
+ "Subscription: SubscriptionPrefetchingQueue {} polled committed event {} from prefetching queue (broken invariant), removing it",
this,
event);
// no need to update inFlightEvents
@@ -327,7 +327,7 @@ private SubscriptionEvent pollInternalV2(final String consumerId, final PollTime
if (!event.pollable()) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} poll non-pollable event {} from prefetching queue (broken invariant), nack and remove it",
+ "Subscription: SubscriptionPrefetchingQueue {} polled non-pollable event {} from prefetching queue (broken invariant), nacking and removing it",
this,
event);
event.nack(); // now pollable
@@ -447,7 +447,7 @@ private synchronized void peekOnce() {
final Event polledEvent = inputPendingQueue.waitedPoll();
if (!Objects.equals(peekedEvent, polledEvent)) {
LOGGER.warn(
- "Subscription: inconsistent heartbeat event when {} peeking (broken invariant), expected {}, actual {}, offer back",
+ "Subscription: inconsistent heartbeat event while {} was peeking (broken invariant), expected {}, actual {}, offering it back",
this,
peekedEvent,
polledEvent);
@@ -490,7 +490,7 @@ private synchronized void tryPrefetch() {
if (!(event instanceof EnrichedEvent)) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} only support prefetch EnrichedEvent. Ignore {}.",
+ "Subscription: SubscriptionPrefetchingQueue {} only supports prefetching EnrichedEvent. Ignoring {}.",
this,
event);
continue;
@@ -530,12 +530,12 @@ private synchronized void tryPrefetch() {
continue;
}
- // TODO:
- // - PipeHeartbeatEvent: ignored? (may affect pipe metrics)
- // - UserDefinedEnrichedEvent: ignored?
- // - Others: events related to meta sync, safe to ignore
+ // Unhandled enriched events are ignored here:
+ // - PipeHeartbeatEvent may affect pipe metrics.
+ // - UserDefinedEnrichedEvent has no subscription payload.
+ // - Other events are related to meta sync and are safe to ignore.
LOGGER.info(
- "Subscription: SubscriptionPrefetchingQueue {} ignore EnrichedEvent {} when prefetching.",
+ "Subscription: SubscriptionPrefetchingQueue {} ignores EnrichedEvent {} when prefetching.",
this,
event);
((EnrichedEvent) event)
@@ -606,7 +606,7 @@ private synchronized void tryPrefetchV2() {
if (!(event instanceof EnrichedEvent)) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} only support prefetch EnrichedEvent. Ignore {}.",
+ "Subscription: SubscriptionPrefetchingQueue {} only supports prefetching EnrichedEvent. Ignoring {}.",
this,
event);
return;
@@ -639,7 +639,7 @@ private synchronized void tryPrefetchV2() {
}
if (Objects.nonNull(currentToTabletIterator)) {
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} prefetch TsFileInsertionEvent when ToTabletIterator is not null (broken invariant). Ignore {}.",
+ "Subscription: SubscriptionPrefetchingQueue {} received TsFileInsertionEvent while ToTabletIterator is not null (broken invariant). Ignoring {}.",
this,
event);
} else {
@@ -648,12 +648,12 @@ private synchronized void tryPrefetchV2() {
}
}
- // TODO:
- // - PipeHeartbeatEvent: ignored? (may affect pipe metrics)
- // - UserDefinedEnrichedEvent: ignored?
- // - Others: events related to meta sync, safe to ignore
+ // Unhandled enriched events are ignored here:
+ // - PipeHeartbeatEvent may affect pipe metrics.
+ // - UserDefinedEnrichedEvent has no subscription payload.
+ // - Other events are related to meta sync and are safe to ignore.
LOGGER.info(
- "Subscription: SubscriptionPrefetchingQueue {} ignore EnrichedEvent {} when prefetching.",
+ "Subscription: SubscriptionPrefetchingQueue {} ignores EnrichedEvent {} when prefetching.",
this,
event);
((EnrichedEvent) event)
@@ -705,7 +705,10 @@ private RetryableState onRetryableTabletInsertionEvent(
: RetryableState.NO_RETRY;
} catch (final Exception e) {
LOGGER.warn(
- "Exception occurred when {} on retryable TabletInsertionEvent {}", this, event, e);
+ "Exception occurred while {} was handling retryable TabletInsertionEvent {}",
+ this,
+ event,
+ e);
currentTabletInsertionEvent = retryableEvent;
return RetryableState.RETRY;
}
@@ -734,7 +737,7 @@ protected boolean onEvent() {
/////////////////////////////// commit ///////////////////////////////
/**
- * @return {@code true} if ack successfully
+ * @return {@code true} if ack succeeds
*/
public boolean ack(final String consumerId, final SubscriptionCommitContext commitContext) {
acquireReadLock();
@@ -746,7 +749,7 @@ public boolean ack(final String consumerId, final SubscriptionCommitContext comm
}
/**
- * @return {@code true} if ack successfully
+ * @return {@code true} if ack succeeds
*/
private boolean ackInternal(
final String consumerId, final SubscriptionCommitContext commitContext) {
@@ -756,7 +759,7 @@ private boolean ackInternal(
(key, ev) -> {
if (Objects.isNull(ev)) {
LOGGER.warn(
- "Subscription: subscription commit context {} does not exist, it may have been committed or something unexpected happened, prefetching queue: {}",
+ "Subscription: subscription commit context {} does not exist; it may have been committed or an unexpected error may have occurred, prefetching queue: {}",
commitContext,
this);
return null;
@@ -786,7 +789,7 @@ private boolean ackInternal(
final String consumerGroupId = commitContext.getConsumerGroupId();
if (!Objects.equals(consumerGroupId, brokerId)) {
LOGGER.warn(
- "inconsistent consumer group when acking event, current: {}, incoming: {}, consumer id: {}, event commit context: {}, prefetching queue: {}, commit it anyway...",
+ "inconsistent consumer group when acking event, current: {}, incoming: {}, consumer id: {}, event commit context: {}, prefetching queue: {}, committing it anyway",
brokerId,
consumerGroupId,
consumerId,
@@ -807,7 +810,7 @@ private boolean ackInternal(
}
/**
- * @return {@code true} if nack successfully
+ * @return {@code true} if nack succeeds
*/
public boolean nack(final String consumerId, final SubscriptionCommitContext commitContext) {
acquireReadLock();
@@ -819,7 +822,7 @@ public boolean nack(final String consumerId, final SubscriptionCommitContext com
}
/**
- * @return {@code true} if nack successfully
+ * @return {@code true} if nack succeeds
*/
public boolean nackInternal(
final String consumerId, final SubscriptionCommitContext commitContext) {
@@ -829,7 +832,7 @@ public boolean nackInternal(
(key, ev) -> {
if (Objects.isNull(ev)) {
LOGGER.warn(
- "Subscription: subscription commit context [{}] does not exist, it may have been committed or something unexpected happened, prefetching queue: {}",
+ "Subscription: subscription commit context [{}] does not exist; it may have been committed or an unexpected error may have occurred, prefetching queue: {}",
commitContext,
this);
return null;
@@ -839,7 +842,7 @@ public boolean nackInternal(
final String consumerGroupId = commitContext.getConsumerGroupId();
if (!Objects.equals(consumerGroupId, brokerId)) {
LOGGER.warn(
- "inconsistent consumer group when nacking event, current: {}, incoming: {}, consumer id: {}, event commit context: {}, prefetching queue: {}, commit it anyway...",
+ "inconsistent consumer group when nacking event, current: {}, incoming: {}, consumer id: {}, event commit context: {}, prefetching queue: {}, committing it anyway",
brokerId,
consumerGroupId,
consumerId,
@@ -1025,7 +1028,7 @@ private static RemappingFunction COMBINER(
ev.nack(); // now pollable
prefetchEvent(ev);
LOGGER.warn(
- "Subscription: SubscriptionPrefetchingQueue {} recycle event {} from in flight events, nack and enqueue it to prefetching queue",
+ "Subscription: SubscriptionPrefetchingQueue {} is recycling event {} from in-flight events, nacking and enqueuing it to prefetching queue",
this,
ev);
return null; // remove this entry
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeEventBatch.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeEventBatch.java
index d25573add6b38..e9102775e6208 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeEventBatch.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeEventBatch.java
@@ -96,7 +96,7 @@ protected synchronized boolean onEvent(
enrichedEvents.add(event);
} else {
LOGGER.warn(
- "SubscriptionPipeEventBatch {} ignore EnrichedEvent {} when batching.", this, event);
+ "SubscriptionPipeEventBatch {} ignores EnrichedEvent {} when batching.", this, event);
}
return onEvent(consumer);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTabletEventBatch.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTabletEventBatch.java
index d5843d1d99da2..a693ca54c60f0 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTabletEventBatch.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTabletEventBatch.java
@@ -191,7 +191,7 @@ private Pair> convertToTablets(
}
LOGGER.warn(
- "SubscriptionPipeTabletEventBatch {} only support convert PipeInsertNodeTabletInsertionEvent or PipeRawTabletInsertionEvent to tablet. Ignore {}.",
+ "SubscriptionPipeTabletEventBatch {} only supports converting PipeInsertNodeTabletInsertionEvent or PipeRawTabletInsertionEvent to tablet. Ignoring {}.",
this,
tabletInsertionEvent);
return null;
@@ -333,7 +333,7 @@ private Pair> nextInternal() {
if (enrichedEvent instanceof TsFileInsertionEvent) {
if (Objects.nonNull(currentTabletInsertionEventsIterator)) {
LOGGER.warn(
- "SubscriptionPipeTabletEventBatch {} override non-null currentTabletInsertionEventsIterator when iterating (broken invariant).",
+ "SubscriptionPipeTabletEventBatch {} overrides non-null currentTabletInsertionEventsIterator when iterating (broken invariant).",
this);
}
final PipeTsFileInsertionEvent tsFileInsertionEvent =
@@ -354,7 +354,7 @@ private Pair> nextInternal() {
return convertToTablets((TabletInsertionEvent) enrichedEvent);
} else {
LOGGER.warn(
- "SubscriptionPipeTabletEventBatch {} ignore EnrichedEvent {} when iterating (broken invariant).",
+ "SubscriptionPipeTabletEventBatch {} ignores EnrichedEvent {} when iterating (broken invariant).",
this,
enrichedEvent);
return null;
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTsFileEventBatch.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTsFileEventBatch.java
index 089e25b063dd4..b1b85b3e28a08 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTsFileEventBatch.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/batch/SubscriptionPipeTsFileEventBatch.java
@@ -83,7 +83,7 @@ protected void onTabletInsertionEvent(final TabletInsertionEvent event) {
@Override
protected void onTsFileInsertionEvent(final TsFileInsertionEvent event) {
LOGGER.warn(
- "SubscriptionPipeTsFileEventBatch {} ignore TsFileInsertionEvent {} when batching.",
+ "SubscriptionPipeTsFileEventBatch {} ignores TsFileInsertionEvent {} when batching.",
this,
event);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/cache/SubscriptionPollResponseCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/cache/SubscriptionPollResponseCache.java
index 427b0f2278a94..2a3b7cf515c23 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/cache/SubscriptionPollResponseCache.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/cache/SubscriptionPollResponseCache.java
@@ -69,7 +69,7 @@ public Optional trySerialize(final CachedSubscriptionPollResponse re
return Optional.of(serialize(response));
} catch (final IOException e) {
LOGGER.warn(
- "Subscription: something unexpected happened when serializing CachedSubscriptionPollResponse: {}",
+ "Subscription: unexpected exception while serializing CachedSubscriptionPollResponse: {}",
response,
e);
return Optional.empty();
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/response/SubscriptionEventTabletResponse.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/response/SubscriptionEventTabletResponse.java
index a06267d7b7617..f3bcb550988c8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/response/SubscriptionEventTabletResponse.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/event/response/SubscriptionEventTabletResponse.java
@@ -97,15 +97,15 @@ public SubscriptionEventTabletResponse(
@Override
public void prefetchRemainingResponses() {
- // do nothing
+ // No remaining responses are prefetched for tablet responses.
}
@Override
public void fetchNextResponse(final long offset /* unused */) throws Exception {
- // generate and offer next response
+ // Generate and offer next response.
offer(generateNextTabletResponse());
- // poll and clean previous response
+ // Poll and clean previous response.
final CachedSubscriptionPollResponse previousResponse;
if (Objects.isNull(previousResponse = poll())) {
LOGGER.warn(
@@ -120,7 +120,7 @@ public void fetchNextResponse(final long offset /* unused */) throws Exception {
public synchronized void nack() {
cleanUp();
- // should not reset the iterator of batch when init
+ // Do not reset the batch iterator during init.
// TODO: avoid completely rewinding the iterator
batch.resetForIteration();
init();
@@ -165,11 +165,11 @@ private synchronized CachedSubscriptionPollResponse generateEmptyTabletResponse(
private synchronized CachedSubscriptionPollResponse generateNextTabletResponse()
throws InterruptedException, PipeRuntimeOutOfMemoryCriticalException {
if (availableForNext) {
- // generate next subscription event with the same batch
+ // Generate next subscription event with the same batch.
queue.prefetchEvent(new SubscriptionEvent(batch, queue, rootCommitContext));
- // frozen iterated enriched events
+ // Freeze iterated enriched events.
transportIterationSnapshot();
- // return last response of this subscription event
+ // Return last response of this subscription event.
return new CachedSubscriptionPollResponse(
SubscriptionPollResponseType.TABLETS.getType(),
new TabletsPayload(Collections.emptyList(), -totalTablets),
@@ -180,7 +180,7 @@ private synchronized CachedSubscriptionPollResponse generateNextTabletResponse()
final Map> currentTablets = new HashMap<>();
long currentBufferSize = 0;
- // TODO: TBD.
+ // Resource waiting is currently disabled; the buffer-size checks below provide backpressure.
// waitForResourceEnough4Parsing(SubscriptionAgent.receiver().remainingMs());
while (batch.hasNext()) {
@@ -202,9 +202,9 @@ private synchronized CachedSubscriptionPollResponse generateNextTabletResponse()
currentBufferSize += bufferSize;
if (bufferSize > READ_TABLET_BUFFER_SIZE) {
- // TODO: split tablets
+ // TODO: split large tablets.
LOGGER.warn(
- "Detect large tablets with {} byte(s), current tablets size {} byte(s)",
+ "Detected large tablets with {} byte(s), current tablets size {} byte(s)",
bufferSize,
currentTablets);
response =
@@ -216,7 +216,7 @@ private synchronized CachedSubscriptionPollResponse generateNextTabletResponse()
}
if (currentBufferSize > READ_TABLET_BUFFER_SIZE) {
- // TODO: split tablets
+ // TODO: split large tablets.
response =
new CachedSubscriptionPollResponse(
SubscriptionPollResponseType.TABLETS.getType(),
@@ -225,9 +225,9 @@ private synchronized CachedSubscriptionPollResponse generateNextTabletResponse()
break;
}
- // limit control for large message
+ // Limit control for large messages.
if (totalBufferSize > PREFETCH_TABLET_BUFFER_SIZE && batch.hasNext()) {
- // we generate seal signal at next round
+ // Generate the seal signal in the next round.
availableForNext = true;
break;
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java
index 2c4accecf45f0..173956571a032 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/subscription/receiver/SubscriptionReceiverV1.java
@@ -240,8 +240,7 @@ private TPipeSubscribeResp handlePipeSubscribeHandshake(final PipeSubscribeHands
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_HANDSHAKING, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when handshaking with request %s: %s",
- req, e);
+ "Subscription: unexpected exception while handling handshake request %s: %s", req, e);
return PipeSubscribeHandshakeResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_HANDSHAKE_ERROR, exceptionMessage),
-1,
@@ -252,7 +251,7 @@ private TPipeSubscribeResp handlePipeSubscribeHandshake(final PipeSubscribeHands
private TPipeSubscribeResp handlePipeSubscribeHandshakeInternal(
final PipeSubscribeHandshakeReq req) throws SubscriptionException {
- // set consumer config thread local
+ // Set the consumer config thread local.
final ConsumerConfig existedConsumerConfig = consumerConfigThreadLocal.get();
final ConsumerConfig consumerConfig = req.getConsumerConfig();
@@ -272,7 +271,7 @@ private TPipeSubscribeResp handlePipeSubscribeHandshakeInternal(
} else {
if (!existedConsumerConfig.equals(consumerConfig)) {
LOGGER.warn(
- "Subscription: Detect stale consumer config when handshaking, stale consumer config {} will be cleared, consumer config will set to the incoming consumer config {}.",
+ "Subscription: detected stale consumer config during handshake, stale consumer config {} will be cleared, consumer config will be set to the incoming consumer config {}.",
existedConsumerConfig,
consumerConfig);
// drop stale consumer
@@ -281,12 +280,12 @@ private TPipeSubscribeResp handlePipeSubscribeHandshakeInternal(
}
}
- // create consumer if not existed
+ // Create the consumer if it does not exist.
if (!SubscriptionAgent.consumer().isConsumerExisted(consumerGroupId, consumerId)) {
createConsumer(consumerConfig);
} else {
LOGGER.info(
- "Subscription: The consumer {} has already existed when handshaking, skip creating consumer.",
+ "Subscription: consumer {} already exists during handshake, skipping consumer creation.",
consumerConfig);
}
@@ -294,7 +293,7 @@ private TPipeSubscribeResp handlePipeSubscribeHandshakeInternal(
final int dataNodeId = IoTDBDescriptor.getInstance().getConfig().getDataNodeId();
LOGGER.info(
- "Subscription: consumer {} handshake successfully, data node id: {}",
+ "Subscription: consumer {} handshake succeeded, data node id: {}",
req.getConsumerConfig(),
dataNodeId);
return PipeSubscribeHandshakeResp.toTPipeSubscribeResp(
@@ -308,8 +307,7 @@ private TPipeSubscribeResp handlePipeSubscribeHeartbeat(final PipeSubscribeHeart
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_HEARTBEAT, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when heartbeat with request %s: %s",
- req, e);
+ "Subscription: unexpected exception while handling heartbeat request %s: %s", req, e);
return PipeSubscribeHeartbeatResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_HEARTBEAT_ERROR, exceptionMessage));
}
@@ -317,7 +315,7 @@ private TPipeSubscribeResp handlePipeSubscribeHeartbeat(final PipeSubscribeHeart
private TPipeSubscribeResp handlePipeSubscribeHeartbeatInternal(
final PipeSubscribeHeartbeatReq req) throws IOException {
- // check consumer config thread local
+ // Check the consumer config thread local.
final ConsumerConfig consumerConfig = consumerConfigThreadLocal.get();
if (Objects.isNull(consumerConfig)) {
LOGGER.warn(
@@ -325,11 +323,9 @@ private TPipeSubscribeResp handlePipeSubscribeHeartbeatInternal(
return SUBSCRIPTION_MISSING_CUSTOMER_RESP;
}
- // TODO: do something
-
LOGGER.info(DataNodeMiscMessages.SUBSCRIPTION_CONSUMER_HEARTBEAT_SUCCESS, consumerConfig);
- // fetch subscribed topics
+ // Fetch subscribed topics.
final Map topics =
SubscriptionAgent.topic()
.getTopicConfigs(
@@ -337,15 +333,15 @@ private TPipeSubscribeResp handlePipeSubscribeHeartbeatInternal(
.getTopicNamesSubscribedByConsumer(
consumerConfig.getConsumerGroupId(), consumerConfig.getConsumerId()));
- // fetch available endpoints
+ // Fetch available endpoints.
final Map endPoints = new HashMap<>();
try (final ConfigNodeClient configNodeClient =
CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
final TShowDataNodesResp resp = configNodeClient.showDataNodes();
- // refer to org.apache.iotdb.session.NodesSupplier.updateDataNodeList
+ // Refer to org.apache.iotdb.session.NodesSupplier.updateDataNodeList.
for (final TDataNodeInfo dataNodeInfo : resp.getDataNodesInfoList()) {
- // ignore removing DN
+ // Ignore removing DataNodes.
if (Objects.equals(NodeStatus.Removing.getStatus(), dataNodeInfo.getStatus())) {
continue;
}
@@ -357,21 +353,20 @@ private TPipeSubscribeResp handlePipeSubscribeHeartbeatInternal(
}
} catch (final ClientManagerException | TException e) {
LOGGER.warn(
- "Exception occurred when fetch endpoints for consumer {} in config node",
+ "Exception occurred while fetching endpoints for consumer {} from ConfigNode",
consumerConfig,
e);
final String exceptionMessage =
String.format(
- "Subscription: Failed to fetch endpoints for consumer %s in config node, exception is %s.",
+ "Subscription: failed to fetch endpoints for consumer %s from ConfigNode, exception is %s.",
consumerConfig, e);
throw new SubscriptionException(exceptionMessage);
}
- // fetch topics should be unsubscribed
+ // Fetch topics that should be unsubscribed.
final List topicNamesToUnsubscribe =
SubscriptionAgent.broker().fetchTopicNamesToUnsubscribe(consumerConfig, topics.keySet());
- // here we did not immediately unsubscribe from topics in order to allow the client to perceive
- // completed topics
+ // Do not immediately unsubscribe from topics, so the client can observe completed topics.
return PipeSubscribeHeartbeatResp.toTPipeSubscribeResp(
RpcUtils.SUCCESS_STATUS, topics, endPoints, topicNamesToUnsubscribe);
@@ -387,8 +382,7 @@ private TPipeSubscribeResp handlePipeSubscribeSubscribe(final PipeSubscribeSubsc
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_SUBSCRIBING, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when subscribing with request %s: %s",
- req, e);
+ "Subscription: unexpected exception while handling subscribe request %s: %s", req, e);
return PipeSubscribeSubscribeResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_SUBSCRIBE_ERROR, exceptionMessage));
}
@@ -396,7 +390,7 @@ private TPipeSubscribeResp handlePipeSubscribeSubscribe(final PipeSubscribeSubsc
private TPipeSubscribeResp handlePipeSubscribeSubscribeInternal(
final PipeSubscribeSubscribeReq req) throws SubscriptionException, IOException {
- // check consumer config thread local
+ // Check the consumer config thread local.
final ConsumerConfig consumerConfig = consumerConfigThreadLocal.get();
if (Objects.isNull(consumerConfig)) {
LOGGER.warn(
@@ -404,7 +398,7 @@ private TPipeSubscribeResp handlePipeSubscribeSubscribeInternal(
return SUBSCRIPTION_MISSING_CUSTOMER_RESP;
}
- // subscribe topics
+ // Subscribe to topics.
final Set topicNames = req.getTopicNames();
subscribe(consumerConfig, topicNames);
@@ -429,7 +423,7 @@ private TPipeSubscribeResp handlePipeSubscribeUnsubscribe(final PipeSubscribeUns
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_UNSUBSCRIBING, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when unsubscribing with request %s: %s",
+ "Subscription: unexpected exception while handling unsubscribe request %s: %s",
req, e);
return PipeSubscribeUnsubscribeResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_UNSUBSCRIBE_ERROR, exceptionMessage));
@@ -438,7 +432,7 @@ private TPipeSubscribeResp handlePipeSubscribeUnsubscribe(final PipeSubscribeUns
private TPipeSubscribeResp handlePipeSubscribeUnsubscribeInternal(
final PipeSubscribeUnsubscribeReq req) throws IOException {
- // check consumer config thread local
+ // Check the consumer config thread local.
final ConsumerConfig consumerConfig = consumerConfigThreadLocal.get();
if (Objects.isNull(consumerConfig)) {
LOGGER.warn(
@@ -447,12 +441,12 @@ private TPipeSubscribeResp handlePipeSubscribeUnsubscribeInternal(
return SUBSCRIPTION_MISSING_CUSTOMER_RESP;
}
- // unsubscribe topics
+ // Unsubscribe from topics.
final Set topicNames = req.getTopicNames();
unsubscribe(consumerConfig, topicNames);
LOGGER.info(
- "Subscription: consumer {} unsubscribe {} successfully", consumerConfig, topicNames);
+ "Subscription: consumer {} unsubscribed from {} successfully", consumerConfig, topicNames);
return PipeSubscribeUnsubscribeResp.toTPipeSubscribeResp(
RpcUtils.SUCCESS_STATUS,
SubscriptionAgent.topic()
@@ -469,8 +463,7 @@ private TPipeSubscribeResp handlePipeSubscribePoll(final PipeSubscribePollReq re
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_POLLING, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when polling with request %s: %s",
- req, e);
+ "Subscription: unexpected exception while handling poll request %s: %s", req, e);
return PipeSubscribePollResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_POLL_ERROR, exceptionMessage),
Collections.emptyList());
@@ -525,7 +518,7 @@ private TPipeSubscribeResp handlePipeSubscribePollInternal(final PipeSubscribePo
String.format(DataNodeMiscMessages.UNEXPECTED_REQUEST_TYPE, requestType));
}
- // generate response
+ // Generate response.
final AtomicLong totalSize = new AtomicLong();
return PipeSubscribePollResp.toTPipeSubscribeResp(
RpcUtils.SUCCESS_STATUS,
@@ -572,7 +565,7 @@ private TPipeSubscribeResp handlePipeSubscribePollInternal(final PipeSubscribePo
size);
event.invalidateCurrentResponseByteBuffer();
LOGGER.info(
- "Subscription: consumer {} poll {} successfully with request: {}",
+ "Subscription: consumer {} polled {} successfully with request: {}",
consumerConfig,
response,
req.getRequest());
@@ -583,7 +576,7 @@ private TPipeSubscribeResp handlePipeSubscribePollInternal(final PipeSubscribePo
.isCommitContextOutdated(event.getCommitContext());
if (e instanceof SubscriptionPayloadExceedException) {
LOGGER.error(
- "Subscription: consumer {} poll excessive payload {} for event {} (outdated: {}) with request: {}, something unexpected happened with parameter configuration or payload control...",
+ "Subscription: consumer {} encountered excessive payload {} for event {} (outdated: {}) with request: {}, parameter configuration or payload control may be incorrect",
consumerConfig,
response,
event,
@@ -592,7 +585,7 @@ private TPipeSubscribeResp handlePipeSubscribePollInternal(final PipeSubscribePo
e);
} else {
LOGGER.warn(
- "Subscription: consumer {} poll {} for event {} (outdated: {}) failed with request: {}",
+ "Subscription: consumer {} failed to poll {} for event {} (outdated: {}) with request: {}",
consumerConfig,
response,
event,
@@ -623,7 +616,7 @@ private List handlePipeSubscribePollRequest(
return Collections.emptyList();
}
- // filter unsubscribed topics
+ // Filter unsubscribed topics.
topicNames.removeIf((topicName) -> !subscribedTopicNames.contains(topicName));
return SubscriptionAgent.broker().poll(consumerConfig, topicNames, maxBytes);
}
@@ -648,15 +641,14 @@ private TPipeSubscribeResp handlePipeSubscribeCommit(final PipeSubscribeCommitRe
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_COMMITTING, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when committing with request %s: %s",
- req, e);
+ "Subscription: unexpected exception while handling commit request %s: %s", req, e);
return PipeSubscribeCommitResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_COMMIT_ERROR, exceptionMessage));
}
}
private TPipeSubscribeResp handlePipeSubscribeCommitInternal(final PipeSubscribeCommitReq req) {
- // check consumer config thread local
+ // Check the consumer config thread local.
final ConsumerConfig consumerConfig = consumerConfigThreadLocal.get();
if (Objects.isNull(consumerConfig)) {
LOGGER.warn(
@@ -664,7 +656,7 @@ private TPipeSubscribeResp handlePipeSubscribeCommitInternal(final PipeSubscribe
return SUBSCRIPTION_MISSING_CUSTOMER_RESP;
}
- // commit (ack or nack)
+ // Commit (ack or nack).
final List commitContexts = req.getCommitContexts();
final boolean nack = req.isNack();
final List successfulCommitContexts =
@@ -672,13 +664,13 @@ private TPipeSubscribeResp handlePipeSubscribeCommitInternal(final PipeSubscribe
if (Objects.equals(successfulCommitContexts.size(), commitContexts.size())) {
LOGGER.info(
- "Subscription: consumer {} commit (nack: {}) successfully, commit contexts: {}",
+ "Subscription: consumer {} committed (nack: {}) successfully, commit contexts: {}",
consumerConfig,
nack,
commitContexts);
} else {
LOGGER.warn(
- "Subscription: consumer {} commit (nack: {}) partially successful, commit contexts: {}, successful commit contexts: {}",
+ "Subscription: consumer {} partially committed (nack: {}), commit contexts: {}, successful commit contexts: {}",
consumerConfig,
nack,
commitContexts,
@@ -695,15 +687,14 @@ private TPipeSubscribeResp handlePipeSubscribeClose(final PipeSubscribeCloseReq
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_CLOSING, req, e);
final String exceptionMessage =
String.format(
- "Subscription: something unexpected happened when closing with request %s: %s",
- req, e);
+ "Subscription: unexpected exception while handling close request %s: %s", req, e);
return PipeSubscribeCloseResp.toTPipeSubscribeResp(
RpcUtils.getStatus(TSStatusCode.SUBSCRIPTION_CLOSE_ERROR, exceptionMessage));
}
}
private TPipeSubscribeResp handlePipeSubscribeCloseInternal(final PipeSubscribeCloseReq req) {
- // check consumer config thread local
+ // Check the consumer config thread local.
final ConsumerConfig consumerConfig = consumerConfigThreadLocal.get();
if (Objects.isNull(consumerConfig)) {
LOGGER.warn(
@@ -719,31 +710,31 @@ private TPipeSubscribeResp handlePipeSubscribeCloseInternal(final PipeSubscribeC
}
private void closeConsumer(final ConsumerConfig consumerConfig) {
- // unsubscribe all subscribed topics
+ // Unsubscribe from all subscribed topics.
final Set topicNames =
SubscriptionAgent.consumer()
.getTopicNamesSubscribedByConsumer(
consumerConfig.getConsumerGroupId(), consumerConfig.getConsumerId());
if (!topicNames.isEmpty()) {
LOGGER.info(
- "Subscription: unsubscribe all subscribed topics {} before close consumer {}",
+ "Subscription: unsubscribing from all subscribed topics {} before closing consumer {}",
topicNames,
consumerConfig);
try {
unsubscribe(consumerConfig, topicNames);
} catch (final SubscriptionPipeTimeoutException e) {
LOGGER.warn(e.getMessage());
- // continue drop consumer operation
- } // rethrow other exceptions
+ // Continue the drop consumer operation.
+ } // Rethrow other exceptions.
}
- // drop consumer if existed
+ // Drop the consumer if it exists.
if (SubscriptionAgent.consumer()
.isConsumerExisted(consumerConfig.getConsumerGroupId(), consumerConfig.getConsumerId())) {
dropConsumer(consumerConfig);
} else {
LOGGER.info(
- "Subscription: The consumer {} does not existed when closing, skip dropping consumer.",
+ "Subscription: consumer {} does not exist during close, skipping consumer drop.",
consumerConfig);
}
@@ -751,7 +742,7 @@ private void closeConsumer(final ConsumerConfig consumerConfig) {
}
private void unsubscribeCompleteTopics(final ConsumerConfig consumerConfig) {
- // fetch subscribed topics
+ // Fetch subscribed topics.
final Map topics =
SubscriptionAgent.topic()
.getTopicConfigs(
@@ -759,7 +750,7 @@ private void unsubscribeCompleteTopics(final ConsumerConfig consumerConfig) {
.getTopicNamesSubscribedByConsumer(
consumerConfig.getConsumerGroupId(), consumerConfig.getConsumerId()));
- // fetch topics should be unsubscribed
+ // Fetch topics that should be unsubscribed.
final List topicNamesToUnsubscribe =
SubscriptionAgent.broker().fetchTopicNamesToUnsubscribe(consumerConfig, topics.keySet());
@@ -771,7 +762,7 @@ private void unsubscribeCompleteTopics(final ConsumerConfig consumerConfig) {
unsubscribe(consumerConfig, new HashSet<>(topicNamesToUnsubscribe));
LOGGER.info(
- "Subscription: consumer {} unsubscribe {} (completed topics) successfully",
+ "Subscription: consumer {} unsubscribed from completed topics {} successfully",
consumerConfig,
topicNamesToUnsubscribe);
}
@@ -789,12 +780,12 @@ private void createConsumer(final ConsumerConfig consumerConfig) throws Subscrip
final TSStatus tsStatus = configNodeClient.createConsumer(req);
if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) {
LOGGER.warn(
- "Unexpected status code {} when creating consumer {} in config node",
+ "Unexpected status code {} when creating consumer {} in ConfigNode",
tsStatus,
consumerConfig);
final String exceptionMessage =
String.format(
- "Subscription: Failed to create consumer %s in config node, status is %s.",
+ "Subscription: failed to create consumer %s in ConfigNode, status is %s.",
consumerConfig, tsStatus);
throw new SubscriptionException(exceptionMessage);
}
@@ -802,7 +793,7 @@ private void createConsumer(final ConsumerConfig consumerConfig) throws Subscrip
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_CREATING_CONSUMER, consumerConfig, e);
final String exceptionMessage =
String.format(
- "Subscription: Failed to create consumer %s in config node, exception is %s.",
+ "Subscription: failed to create consumer %s in ConfigNode, exception is %s.",
consumerConfig, e);
throw new SubscriptionException(exceptionMessage);
}
@@ -818,12 +809,12 @@ private void dropConsumer(final ConsumerConfig consumerConfig) throws Subscripti
final TSStatus tsStatus = configNodeClient.closeConsumer(req);
if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) {
LOGGER.warn(
- "Unexpected status code {} when closing consumer {} in config node",
+ "Unexpected status code {} when closing consumer {} in ConfigNode",
tsStatus,
consumerConfig);
final String exceptionMessage =
String.format(
- "Subscription: Failed to close consumer %s in config node, status is %s.",
+ "Subscription: failed to close consumer %s in ConfigNode, status is %s.",
consumerConfig, tsStatus);
throw new SubscriptionException(exceptionMessage);
}
@@ -831,7 +822,7 @@ private void dropConsumer(final ConsumerConfig consumerConfig) throws Subscripti
LOGGER.warn(DataNodeMiscMessages.SUBSCRIPTION_EXCEPTION_CLOSING_CONSUMER, consumerConfig, e);
final String exceptionMessage =
String.format(
- "Subscription: Failed to close consumer %s in config node, exception is %s.",
+ "Subscription: failed to close consumer %s in ConfigNode, exception is %s.",
consumerConfig, e);
throw new SubscriptionException(exceptionMessage);
}
@@ -853,13 +844,13 @@ private void subscribe(final ConsumerConfig consumerConfig, final Set to
final TSStatus tsStatus = configNodeClient.createSubscription(req);
if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) {
LOGGER.warn(
- "Unexpected status code {} when subscribing topics {} for consumer {} in config node",
+ "Unexpected status code {} when subscribing topics {} for consumer {} in ConfigNode",
tsStatus,
topicNames,
consumerConfig);
final String exceptionMessage =
String.format(
- "Subscription: Failed to subscribe topics %s for consumer %s in config node, status is %s.",
+ "Subscription: failed to subscribe topics %s for consumer %s in ConfigNode, status is %s.",
topicNames, consumerConfig, tsStatus);
if (TSStatusCode.SUBSCRIPTION_PIPE_TIMEOUT_ERROR.getStatusCode() == tsStatus.getCode()) {
throw new SubscriptionPipeTimeoutException(exceptionMessage);
@@ -869,13 +860,13 @@ private void subscribe(final ConsumerConfig consumerConfig, final Set to
}
} catch (final ClientManagerException | TException e) {
LOGGER.warn(
- "Exception occurred when subscribing topics {} for consumer {} in config node",
+ "Exception occurred while subscribing topics {} for consumer {} in ConfigNode",
topicNames,
consumerConfig,
e);
final String exceptionMessage =
String.format(
- "Subscription: Failed to subscribe topics %s for consumer %s in config node, exception is %s.",
+ "Subscription: failed to subscribe topics %s for consumer %s in ConfigNode, exception is %s.",
topicNames, consumerConfig, e);
throw new SubscriptionException(exceptionMessage);
}
@@ -895,13 +886,13 @@ private void unsubscribe(final ConsumerConfig consumerConfig, final Set
final TSStatus tsStatus = configNodeClient.dropSubscription(req);
if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) {
LOGGER.warn(
- "Unexpected status code {} when unsubscribing topics {} for consumer {} in config node",
+ "Unexpected status code {} when unsubscribing topics {} for consumer {} in ConfigNode",
tsStatus,
topicNames,
consumerConfig);
final String exceptionMessage =
String.format(
- "Subscription: Failed to unsubscribe topics %s for consumer %s in config node, status is %s.",
+ "Subscription: failed to unsubscribe topics %s for consumer %s in ConfigNode, status is %s.",
topicNames, consumerConfig, tsStatus);
if (TSStatusCode.SUBSCRIPTION_PIPE_TIMEOUT_ERROR.getStatusCode() == tsStatus.getCode()) {
throw new SubscriptionPipeTimeoutException(exceptionMessage);
@@ -911,13 +902,13 @@ private void unsubscribe(final ConsumerConfig consumerConfig, final Set
}
} catch (final ClientManagerException | TException e) {
LOGGER.warn(
- "Exception occurred when unsubscribing topics {} for consumer {} in config node",
+ "Exception occurred while unsubscribing topics {} for consumer {} in ConfigNode",
topicNames,
consumerConfig,
e);
final String exceptionMessage =
String.format(
- "Subscription: Failed to unsubscribe topics %s for consumer %s in config node, exception is %s.",
+ "Subscription: failed to unsubscribe topics %s for consumer %s in ConfigNode, exception is %s.",
topicNames, consumerConfig, e);
throw new SubscriptionException(exceptionMessage);
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/service/TriggerInformationUpdater.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/service/TriggerInformationUpdater.java
index 3b37eee7d1ff4..b14b2f05a6c83 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/service/TriggerInformationUpdater.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/trigger/service/TriggerInformationUpdater.java
@@ -40,11 +40,13 @@
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
public class TriggerInformationUpdater {
private static final Logger LOGGER = LoggerFactory.getLogger(TriggerInformationUpdater.class);
+ private static final long UPDATE_FAILURE_LOG_INTERVAL_MS = TimeUnit.MINUTES.toMillis(1);
private static final IClientManager CONFIG_NODE_CLIENT_MANAGER =
ConfigNodeClientManager.getInstance();
@@ -54,6 +56,8 @@ public class TriggerInformationUpdater {
ThreadName.STATEFUL_TRIGGER_INFORMATION_UPDATER.getName());
private Future> updateFuture;
+ private final AtomicLong lastUpdateFailureLogTime = new AtomicLong(0);
+ private final AtomicLong suppressedUpdateFailureLogCount = new AtomicLong(0);
private static final long UPDATE_INTERVAL = 1000L * 60;
@@ -98,7 +102,22 @@ public void updateTask() {
triggerInformation.getTriggerName(), triggerInformation.getDataNodeLocation());
}
} catch (Exception e) {
- LOGGER.warn(DataNodeMiscMessages.ERROR_UPDATING_TRIGGER_INFO, e);
+ logUpdateFailure(e);
+ }
+ }
+
+ private void logUpdateFailure(Exception e) {
+ long now = System.currentTimeMillis();
+ long lastLogTime = lastUpdateFailureLogTime.get();
+ if (now - lastLogTime >= UPDATE_FAILURE_LOG_INTERVAL_MS
+ && lastUpdateFailureLogTime.compareAndSet(lastLogTime, now)) {
+ long suppressedCount = suppressedUpdateFailureLogCount.getAndSet(0);
+ LOGGER.warn(
+ DataNodeMiscMessages.ERROR_UPDATING_TRIGGER_INFO + " suppressedSimilarLogs={}",
+ suppressedCount,
+ e);
+ } else {
+ suppressedUpdateFailureLogCount.incrementAndGet();
}
}
}
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 5a2e41961978f..028942e3a0a49 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
@@ -43,7 +43,7 @@ public final class CommonMessages {
public static final String IOTV2_BG_NOT_TERMINATED =
"IoTV2 background service did not terminate within {}s";
public static final String IOTV2_BG_STILL_RUNNING =
- "IoTV2 background Thread still doesn't exit after 30s";
+ "IoTV2 background thread still has not exited after 30s";
// --- cq ---
public static final String UNKNOWN_TIMEOUT_POLICY = "Unknown TimeoutPolicy: %s";
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 eec9a123170fc..3cdfce8423d7a 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
@@ -787,56 +787,56 @@ private PipeMessages() {}
// ===================== SubscriptionConfig (printAllConfigs) =====================
public static final String CONFIG_SUBSCRIPTION_CACHE_MEMORY_USAGE_PERCENTAGE =
- "SubscriptionCacheMemoryUsagePercentage: {}";
+ "订阅缓存内存使用比例(SubscriptionCacheMemoryUsagePercentage):{}";
public static final String CONFIG_SUBSCRIPTION_SUBTASK_EXECUTOR_MAX_THREAD_NUM =
- "SubscriptionSubtaskExecutorMaxThreadNum: {}";
+ "订阅子任务执行器最大线程数(SubscriptionSubtaskExecutorMaxThreadNum):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_TABLET_BATCH_MAX_DELAY_IN_MS =
- "SubscriptionPrefetchTabletBatchMaxDelayInMs: {}";
+ "订阅预取 Tablet 批次最大延迟(SubscriptionPrefetchTabletBatchMaxDelayInMs):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_TABLET_BATCH_MAX_SIZE_IN_BYTES =
- "SubscriptionPrefetchTabletBatchMaxSizeInBytes: {}";
+ "订阅预取 Tablet 批次最大大小(SubscriptionPrefetchTabletBatchMaxSizeInBytes):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_TSFILE_BATCH_MAX_DELAY_IN_MS =
- "SubscriptionPrefetchTsFileBatchMaxDelayInMs: {}";
+ "订阅预取 TsFile 批次最大延迟(SubscriptionPrefetchTsFileBatchMaxDelayInMs):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_TSFILE_BATCH_MAX_SIZE_IN_BYTES =
- "SubscriptionPrefetchTsFileBatchMaxSizeInBytes: {}";
+ "订阅预取 TsFile 批次最大大小(SubscriptionPrefetchTsFileBatchMaxSizeInBytes):{}";
public static final String CONFIG_SUBSCRIPTION_POLL_MAX_BLOCKING_TIME_MS =
- "SubscriptionPollMaxBlockingTimeMs: {}";
+ "订阅拉取最大阻塞时间(SubscriptionPollMaxBlockingTimeMs):{}";
public static final String CONFIG_SUBSCRIPTION_DEFAULT_TIMEOUT_IN_MS =
- "SubscriptionDefaultTimeoutInMs: {}";
+ "订阅默认超时时间(SubscriptionDefaultTimeoutInMs):{}";
public static final String CONFIG_SUBSCRIPTION_LAUNCH_RETRY_INTERVAL_MS =
- "SubscriptionLaunchRetryIntervalMs: {}";
+ "订阅启动重试间隔(SubscriptionLaunchRetryIntervalMs):{}";
public static final String CONFIG_SUBSCRIPTION_RECYCLE_UNCOMMITTED_EVENT_INTERVAL_MS =
- "SubscriptionRecycleUncommittedEventIntervalMs: {}";
+ "订阅未提交事件回收间隔(SubscriptionRecycleUncommittedEventIntervalMs):{}";
public static final String CONFIG_SUBSCRIPTION_READ_FILE_BUFFER_SIZE =
- "SubscriptionReadFileBufferSize: {}";
+ "订阅读取文件缓冲区大小(SubscriptionReadFileBufferSize):{}";
public static final String CONFIG_SUBSCRIPTION_READ_TABLET_BUFFER_SIZE =
- "SubscriptionReadTabletBufferSize: {}";
+ "订阅读取 Tablet 缓冲区大小(SubscriptionReadTabletBufferSize):{}";
public static final String CONFIG_SUBSCRIPTION_TSFILE_DEDUPLICATION_WINDOW_SECONDS =
- "SubscriptionTsFileDeduplicationWindowSeconds: {}";
+ "订阅 TsFile 去重窗口(SubscriptionTsFileDeduplicationWindowSeconds):{}";
public static final String CONFIG_SUBSCRIPTION_CHECK_MEMORY_ENOUGH_INTERVAL_MS =
- "SubscriptionCheckMemoryEnoughIntervalMs: {}";
+ "订阅内存充足检查间隔(SubscriptionCheckMemoryEnoughIntervalMs):{}";
public static final String CONFIG_SUBSCRIPTION_ESTIMATED_INSERT_NODE_TABLET_INSERTION_EVENT_SIZE =
- "SubscriptionEstimatedInsertNodeTabletInsertionEventSize: {}";
+ "订阅估算 InsertNode Tablet 插入事件大小(SubscriptionEstimatedInsertNodeTabletInsertionEventSize):{}";
public static final String CONFIG_SUBSCRIPTION_ESTIMATED_RAW_TABLET_INSERTION_EVENT_SIZE =
- "SubscriptionEstimatedRawTabletInsertionEventSize: {}";
+ "订阅估算 Raw Tablet 插入事件大小(SubscriptionEstimatedRawTabletInsertionEventSize):{}";
public static final String CONFIG_SUBSCRIPTION_MAX_ALLOWED_EVENT_COUNT_IN_TABLET_BATCH =
- "SubscriptionMaxAllowedEventCountInTabletBatch: {}";
+ "订阅 Tablet 批次最大允许事件数(SubscriptionMaxAllowedEventCountInTabletBatch):{}";
public static final String CONFIG_SUBSCRIPTION_LOG_MANAGER_WINDOW_SECONDS =
- "SubscriptionLogManagerWindowSeconds: {}";
+ "订阅日志管理器窗口(SubscriptionLogManagerWindowSeconds):{}";
public static final String CONFIG_SUBSCRIPTION_LOG_MANAGER_BASE_INTERVAL_MS =
- "SubscriptionLogManagerBaseIntervalMs: {}";
+ "订阅日志管理器基础间隔(SubscriptionLogManagerBaseIntervalMs):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_ENABLED =
- "SubscriptionPrefetchEnabled: {}";
+ "订阅预取是否启用(SubscriptionPrefetchEnabled):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_MEMORY_THRESHOLD =
- "SubscriptionPrefetchMemoryThreshold: {}";
+ "订阅预取内存阈值(SubscriptionPrefetchMemoryThreshold):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_MISSING_RATE_THRESHOLD =
- "SubscriptionPrefetchMissingRateThreshold: {}";
+ "订阅预取缺失率阈值(SubscriptionPrefetchMissingRateThreshold):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_EVENT_LOCAL_COUNT_THRESHOLD =
- "SubscriptionPrefetchEventLocalCountThreshold: {}";
+ "订阅预取本地事件数阈值(SubscriptionPrefetchEventLocalCountThreshold):{}";
public static final String CONFIG_SUBSCRIPTION_PREFETCH_EVENT_GLOBAL_COUNT_THRESHOLD =
- "SubscriptionPrefetchEventGlobalCountThreshold: {}";
+ "订阅预取全局事件数阈值(SubscriptionPrefetchEventGlobalCountThreshold):{}";
public static final String CONFIG_SUBSCRIPTION_META_SYNCER_INITIAL_SYNC_DELAY_MINUTES =
- "SubscriptionMetaSyncerInitialSyncDelayMinutes: {}";
+ "订阅元数据同步器初始同步延迟(SubscriptionMetaSyncerInitialSyncDelayMinutes):{}";
public static final String CONFIG_SUBSCRIPTION_META_SYNCER_SYNC_INTERVAL_MINUTES =
- "SubscriptionMetaSyncerSyncIntervalMinutes: {}";
+ "订阅元数据同步器同步间隔(SubscriptionMetaSyncerSyncIntervalMinutes):{}";
}
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/plugin/builtin/source/iotdb/IoTDBSource.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/plugin/builtin/source/iotdb/IoTDBSource.java
index 280fdf2bfb796..ab6c803454765 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/plugin/builtin/source/iotdb/IoTDBSource.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/plugin/builtin/source/iotdb/IoTDBSource.java
@@ -28,10 +28,10 @@
import org.apache.iotdb.pipe.api.event.Event;
/**
- * This class is a placeholder and should not be initialized. It represents the default extractor
- * when no extractor is specified. There is a real implementation in the server module but cannot be
- * imported here. The pipe agent in the server module will replace this class with the real
- * implementation when initializing the extractor.
+ * This class is a placeholder and should not be initialized. It represents the default source when
+ * no source or legacy extractor is specified. There is a real implementation in the server module
+ * but cannot be imported here. The pipe agent in the server module will replace this class with the
+ * real implementation when initializing the source.
*/
@TreeModel
@TableModel
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/PipeTaskAgent.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/PipeTaskAgent.java
index c30a50ac4958a..c8bd76162dccd 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/PipeTaskAgent.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/PipeTaskAgent.java
@@ -943,8 +943,7 @@ protected void stopAllPipesWithCriticalException(
}
private void stopAllPipesWithCriticalExceptionInternal(final int currentNodeId) {
- // 1. track exception in all pipe tasks that share the same connector that have critical
- // exceptions.
+ // 1. Track critical exceptions in all pipe tasks that share the same sink.
final Map
reusedConnectorParameters2ExceptionMap = new HashMap<>();
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/connection/EventSupplier.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/connection/EventSupplier.java
index 82b75ce194852..a6cdbd7e291d9 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/connection/EventSupplier.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/connection/EventSupplier.java
@@ -25,8 +25,8 @@
public interface EventSupplier {
/**
- * @return the event to be supplied. the event may be null if the extractor has no more events at
- * the moment, but the extractor is still running for more events.
+ * @return the event to be supplied. The event may be null if the source temporarily has no
+ * events, while the source is still running and may supply more later.
* @throws Exception if the supplier fails to supply the event.
*/
@SuppressWarnings("squid:S00112") // Exception is thrown by the interface
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeRuntimeMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeRuntimeMeta.java
index 1f28a24dd6042..4aa9e8de48aa7 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeRuntimeMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeRuntimeMeta.java
@@ -72,11 +72,11 @@ public class PipeRuntimeMeta {
* id 0 clashes with the start of {@link SchemaRegionId#getId()} and {@link DataRegionId#getId()}
*
* - The {@link ConfigRegionId#getId()} and {@link SchemaRegionId#getId()}'s {@link
- * PipeTaskMeta}s engender nothing if the pipe has nothing to do with metadata.
+ * PipeTaskMeta}s do not drive schema transmission if the pipe has nothing to do with metadata.
*
*
- The {@link ConfigRegionId}s and {@link SchemaRegionId}s will not exist for the pipes
* recovered from log with previous versions, and this is guaranteed to be seen as if they exist
- * but do not spark schema transmission.
+ * but do not trigger schema transmission.
*/
private final ConcurrentMap consensusGroupId2TaskMetaMap;
@@ -89,7 +89,7 @@ public class PipeRuntimeMeta {
* and will result in the halt of pipe execution.
*
* 2. {@link PipeRuntimeSinkCriticalException}, to record the exception reported by other pipes
- * sharing the same connector, and will stop the pipe likewise.
+ * sharing the same sink, and will stop the pipe likewise.
*/
private final ConcurrentMap nodeId2PipeRuntimeExceptionMap =
new ConcurrentHashMap<>();
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeTaskMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeTaskMeta.java
index 9584ca8cbabdf..fc32fdfb5667c 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeTaskMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/meta/PipeTaskMeta.java
@@ -54,8 +54,8 @@ public class PipeTaskMeta {
* The exceptions are instances of {@link PipeRuntimeCriticalException}, {@link
* PipeRuntimeSinkCriticalException} and {@link PipeRuntimeNonCriticalException}.
*
- *
The failure of them, respectively, will lead to the stop of the pipe, the stop of the pipes
- * sharing the same connector, and nothing.
+ *
The failures they represent respectively stop the pipe, stop the pipes sharing the same
+ * sink, or only record a non-critical exception.
*/
private final Set exceptionMessages =
Collections.newSetFromMap(new ConcurrentHashMap<>());
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/stage/PipeTaskStage.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/stage/PipeTaskStage.java
index d315787611273..85786633bcd20 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/stage/PipeTaskStage.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/stage/PipeTaskStage.java
@@ -107,7 +107,7 @@ public synchronized void stop() {
throw new PipeException(MESSAGE_PIPE_TASK_STAGE_HAS_BEEN_DROPPED);
}
- // status == PipeStatus.RUNNING, stop the connector
+ // status == PipeStatus.RUNNING, stop the subtask
stopSubtask();
status = PipeStatus.STOPPED;
@@ -134,7 +134,7 @@ public synchronized void drop() {
// the subtask might be in an inconsistent state!
stop();
- // status == PipeStatus.STOPPED, drop the connector
+ // status == PipeStatus.STOPPED, drop the subtask
dropSubtask();
status = PipeStatus.DROPPED;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeAbstractSinkSubtask.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeAbstractSinkSubtask.java
index 790e5fe4c6d2e..22881162506a3 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeAbstractSinkSubtask.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeAbstractSinkSubtask.java
@@ -46,7 +46,7 @@ public abstract class PipeAbstractSinkSubtask extends PipeReportableSubtask {
private static final Logger LOGGER = LoggerFactory.getLogger(PipeAbstractSinkSubtask.class);
- // For output (transfer events to the target system in connector)
+ // For output (transfer events to the target system in sink)
protected PipeConnector outputPipeSink;
// For thread pool to execute callbacks
@@ -104,8 +104,8 @@ public void onFailure(final Throwable throwable) {
}
// We assume that the event is cleared as the "lastEvent" in processor subtask and reaches the
- // connector subtask. Then, it may fail because of released resource and block the other pipes
- // using the same connector. We simply discard it.
+ // sink subtask. Then, it may fail because of released resource and block the other pipes
+ // using the same sink. We simply discard it.
if (lastExceptionEvent instanceof EnrichedEvent
&& ((EnrichedEvent) lastExceptionEvent).isReleased()) {
LOGGER.info(PipeMessages.ON_FAILURE_IGNORED_EVENT_RELEASED, throwable);
@@ -138,9 +138,9 @@ public void onFailure(final Throwable throwable) {
}
// Handle exceptions if any available clients exist
- // Notice that the PipeRuntimeConnectorCriticalException must be thrown here
+ // Notice that the PipeRuntimeSinkCriticalException must be thrown here
// because the upper layer relies on this to stop all the related pipe tasks
- // Other exceptions may cause the subtask to stop forever and can not be restarted
+ // Other exceptions may cause the subtask to stop forever and cannot be restarted.
if (throwable instanceof PipeRuntimeSinkCriticalException) {
super.onFailure(throwable);
} else {
@@ -219,10 +219,10 @@ private boolean onPipeConnectionException(final Throwable throwable) {
}
/**
- * Submit a {@link PipeSubtask} to the executor to keep it running. Note that the function will be
- * called when connector starts or the subTask finishes the last round, Thus the {@link
- * PipeAbstractSinkSubtask#isSubmitted} sign is added to avoid concurrent problem of the two,
- * ensuring two or more submitting threads generates only one winner.
+ * Submit a {@link PipeSubtask} to the executor to keep it running. This function can be called
+ * when the sink starts or when the subtask finishes the last round, so {@link
+ * PipeAbstractSinkSubtask#isSubmitted} avoids concurrent submissions and ensures that only one
+ * submitting thread wins.
*/
@Override
public synchronized void submitSelf() {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeSubtask.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeSubtask.java
index 2da797c2b3b5d..861ddd20b0f06 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeSubtask.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/agent/task/subtask/PipeSubtask.java
@@ -153,7 +153,7 @@ public void close() {
protected synchronized void decreaseReferenceCountAndReleaseLastEvent(
final Event actualLastEvent, final boolean shouldReport) {
- // lastEvent may be set to null due to PipeConnectorSubtask#discardEventsOfPipe
+ // lastEvent may be set to null due to PipeSinkSubtask#discardEventsOfPipe
if (lastEvent != null) {
if (lastEvent instanceof EnrichedEvent && !((EnrichedEvent) lastEvent).isReleased()) {
((EnrichedEvent) lastEvent)
@@ -163,9 +163,8 @@ protected synchronized void decreaseReferenceCountAndReleaseLastEvent(
return;
}
- // If lastEvent is set to null due to PipeConnectorSubtask#discardEventsOfPipe (connector close)
- // and finally exception occurs, we need to release the actual last event from the connector
- // given by the parameter
+ // If lastEvent is set to null by PipeSinkSubtask#discardEventsOfPipe (sink close) and an
+ // exception occurs later, release the actual last event passed by the sink.
if (actualLastEvent instanceof EnrichedEvent
&& !((EnrichedEvent) actualLastEvent).isReleased()) {
((EnrichedEvent) actualLastEvent)
@@ -174,7 +173,7 @@ protected synchronized void decreaseReferenceCountAndReleaseLastEvent(
}
protected synchronized void clearReferenceCountAndReleaseLastEvent(final Event actualLastEvent) {
- // lastEvent may be set to null due to PipeConnectorSubtask#discardEventsOfPipe
+ // lastEvent may be set to null due to PipeSinkSubtask#discardEventsOfPipe
if (lastEvent != null) {
if (lastEvent instanceof EnrichedEvent && !((EnrichedEvent) lastEvent).isReleased()) {
((EnrichedEvent) lastEvent).clearReferenceCount(PipeSubtask.class.getName());
@@ -183,9 +182,8 @@ protected synchronized void clearReferenceCountAndReleaseLastEvent(final Event a
return;
}
- // If lastEvent is set to null due to PipeConnectorSubtask#discardEventsOfPipe (connector close)
- // and finally exception occurs, we need to release the actual last event from the connector
- // given by the parameter
+ // If lastEvent is set to null by PipeSinkSubtask#discardEventsOfPipe (sink close) and an
+ // exception occurs later, release the actual last event passed by the sink.
if (actualLastEvent instanceof EnrichedEvent
&& !((EnrichedEvent) actualLastEvent).isReleased()) {
((EnrichedEvent) actualLastEvent).clearReferenceCount(PipeSubtask.class.getName());
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/resource/PersistentResource.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/resource/PersistentResource.java
index 0e3b39a0f7197..b6e3097f92e7e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/resource/PersistentResource.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/datastructure/resource/PersistentResource.java
@@ -24,9 +24,9 @@
public interface PersistentResource {
ProgressIndex getProgressIndex();
- /** Used in PipeHistoricalDataRegionTsFileAndDeletionExtractor to sort PersistentResource */
+ /** Used by historical data region sources to sort PersistentResource. */
long getFileStartTime();
- /** Used in PipeHistoricalDataRegionTsFileAndDeletionExtractor to sort PersistentResource */
+ /** Used by historical data region sources to sort PersistentResource. */
long getFileEndTime();
}
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2RequestType.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2RequestType.java
index 43682748ce5d5..63b47b3f4039e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2RequestType.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/payload/iotconsensusv2/request/IoTConsensusV2RequestType.java
@@ -34,11 +34,10 @@ public enum IoTConsensusV2RequestType {
TRANSFER_TABLET_BINARY((short) 104),
TRANSFER_TS_FILE_PIECE_WITH_MOD((short) 105),
TRANSFER_TS_FILE_SEAL_WITH_MOD((short) 106),
- TRANSFER_DELETION((short) 107),
+ TRANSFER_DELETION((short) 107);
-// Note: temporarily IoTConsensusV2 only support data region. But we put this class in `node-common`
-// to reserve the scalability
-;
+ // Note: IoTConsensusV2 currently supports only data regions. This class is in node-commons to
+ // reserve extensibility.
private final short type;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/protocol/IoTDBSink.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/protocol/IoTDBSink.java
index a52779650f82a..be6595580993c 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/protocol/IoTDBSink.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/sink/protocol/IoTDBSink.java
@@ -637,8 +637,8 @@ public void rateLimitIfNeeded(
}
/**
- * When a pipe is dropped, the connector maybe reused and will not be closed. We need to discard
- * its batched or queued events in the output pipe connector.
+ * When a pipe is dropped, the sink may be reused and will not be closed. We need to discard its
+ * batched or queued events in the output pipe sink.
*/
public synchronized void discardEventsOfPipe(
final String pipeName, final long creationTime, final int regionId) {
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBNonDataRegionSource.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBNonDataRegionSource.java
index f10661e0a05b4..9c01a473b2a35 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBNonDataRegionSource.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBNonDataRegionSource.java
@@ -64,9 +64,9 @@ public abstract class IoTDBNonDataRegionSource extends IoTDBSource {
private ConcurrentIterableLinkedQueue.DynamicIterator iterator;
- // If close() is called, hasBeenClosed will be set to true even if the extractor is started again.
- // If the extractor is closed, it should not be started again. This is to avoid the case that
- // the extractor is closed and then be reused by processor.
+ // If close() is called, hasBeenClosed remains true even if start() is called again.
+ // A closed source should not be started again. This avoids reusing a closed source in the
+ // processor.
protected final AtomicBoolean hasBeenClosed = new AtomicBoolean(false);
protected PipeWritePlanEvent lastEvent = null;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBSource.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBSource.java
index 33acc06123e76..fba4d71ea06a6 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBSource.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/pipe/source/IoTDBSource.java
@@ -70,7 +70,7 @@ public abstract class IoTDBSource implements PipeExtractor {
protected boolean isForwardingPipeRequests;
- // The value is always true after the first start even the extractor is closed
+ // The value is always true after the first start, even if the source is closed.
protected final AtomicBoolean hasBeenStarted = new AtomicBoolean(false);
protected String userId;
protected String userName;
diff --git a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java
index 83e5b370d6877..6bc23bf85c35e 100644
--- a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java
+++ b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/subscription/meta/consumer/ConsumerGroupMeta.java
@@ -104,7 +104,8 @@ private boolean shouldRecordSubscriptionCreationTime() {
return Collections.emptySet();
}
- // no need to check consumerIdToConsumerMeta here to avoid potential inconsistent meta
+ // No need to check consumerIdToConsumerMeta here; this avoids potentially inconsistent
+ // metadata.
final Set unsubscribedTopicNames = new HashSet<>();
currentMeta
@@ -133,7 +134,7 @@ public void checkAuthorityBeforeJoinConsumerGroup(final ConsumerMeta consumerMet
if (!match) {
final String exceptionMessage =
String.format(
- "Failed to create consumer %s because inconsistent username & password under the same consumer group, expected %s:%s, actual %s:%s",
+ "Failed to create consumer %s because of inconsistent username and password under the same consumer group, expected %s:%s, actual %s:%s",
consumerMeta.getConsumerId(),
existedConsumerMeta.getUsername(),
existedConsumerMeta.getPassword(),