This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch dev/1.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/dev/1.3 by this push:
new 37fced1ce05 Subscription: detect outdated subscription event for
tsfile message (#15430) (#15460)
37fced1ce05 is described below
commit 37fced1ce05b9cf86d23964a41e76557b948e629
Author: VGalaxies <[email protected]>
AuthorDate: Wed May 7 15:15:36 2025 +0800
Subscription: detect outdated subscription event for tsfile message
(#15430) (#15460)
---
.../subscription/consumer/SubscriptionConsumer.java | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
index 324797967fb..8cbe1b23cb3 100644
---
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
+++
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/subscription/consumer/SubscriptionConsumer.java
@@ -711,7 +711,7 @@ abstract class SubscriptionConsumer implements
AutoCloseable {
final Path filePath = getFilePath(commitContext, topicName, fileName,
true, true);
final File file = filePath.toFile();
try (final RandomAccessFile fileWriter = new RandomAccessFile(file, "rw"))
{
- return Optional.of(pollFileInternal(commitContext, fileName, file,
fileWriter, timer));
+ return pollFileInternal(commitContext, fileName, file, fileWriter,
timer);
} catch (final Exception e) {
if (!(e instanceof SubscriptionPollTimeoutException)) {
inFlightFilesCommitContextSet.remove(commitContext);
@@ -724,7 +724,7 @@ abstract class SubscriptionConsumer implements
AutoCloseable {
}
}
- private SubscriptionMessage pollFileInternal(
+ private Optional<SubscriptionMessage> pollFileInternal(
final SubscriptionCommitContext commitContext,
final String rawFileName,
final File file,
@@ -757,13 +757,10 @@ abstract class SubscriptionConsumer implements
AutoCloseable {
final List<SubscriptionPollResponse> responses =
pollFileInternal(commitContext, writingOffset, timer.remainingMs());
- // It's agreed that the server will always return at least one response,
even in case of
- // failure.
+ // If responses is empty, it means that some outdated subscription
events may be being polled,
+ // so just return.
if (responses.isEmpty()) {
- final String errorMessage =
- String.format("SubscriptionConsumer %s poll empty response", this);
- LOGGER.warn(errorMessage);
- throw new SubscriptionRuntimeNonCriticalException(errorMessage);
+ return Optional.empty();
}
// only one SubscriptionEvent polled currently
@@ -872,7 +869,7 @@ abstract class SubscriptionConsumer implements
AutoCloseable {
// generate subscription message
inFlightFilesCommitContextSet.remove(commitContext);
- return new SubscriptionMessage(commitContext,
file.getAbsolutePath());
+ return Optional.of(new SubscriptionMessage(commitContext,
file.getAbsolutePath()));
}
case ERROR:
{