This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch release-1.15
in repository https://gitbox.apache.org/repos/asf/flink.git
The following commit(s) were added to refs/heads/release-1.15 by this push:
new f44ffe5a62e [BP-1.15][FLINK-29613][Connector/Pulsar] Fix wrong batch
size assertion (#21100)
f44ffe5a62e is described below
commit f44ffe5a62ebb8992cfcbce0841a0062b6e3cb4d
Author: tison <[email protected]>
AuthorDate: Wed Oct 19 09:19:43 2022 +0800
[BP-1.15][FLINK-29613][Connector/Pulsar] Fix wrong batch size assertion
(#21100)
This cherry-picks #21069.
Co-authored-by: Yufan Sheng <[email protected]>
---
.../source/enumerator/cursor/MessageIdUtils.java | 24 ++++++++++++----------
.../cursor/start/MessageIdStartCursor.java | 10 ++++-----
.../cursor/stop/MessageIdStopCursor.java | 10 +++------
3 files changed, 21 insertions(+), 23 deletions(-)
diff --git
a/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/MessageIdUtils.java
b/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/MessageIdUtils.java
index a8c3a6b2ef2..0ae1a1fb5b5 100644
---
a/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/MessageIdUtils.java
+++
b/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/MessageIdUtils.java
@@ -25,6 +25,7 @@ import org.apache.pulsar.client.impl.BatchMessageIdImpl;
import org.apache.pulsar.client.impl.MessageIdImpl;
import static org.apache.flink.util.Preconditions.checkArgument;
+import static
org.apache.pulsar.client.impl.MessageIdImpl.convertToMessageIdImpl;
/** The helper class for Pulsar's message id. */
@Internal
@@ -42,11 +43,14 @@ public final class MessageIdUtils {
public static MessageId nextMessageId(MessageId messageId) {
MessageIdImpl idImpl = unwrapMessageId(messageId);
- if (idImpl.getEntryId() < 0) {
- return newMessageId(idImpl.getLedgerId(), 0,
idImpl.getPartitionIndex());
+ long ledgerId = idImpl.getLedgerId();
+ long entryId = idImpl.getEntryId();
+ int partitionIndex = idImpl.getPartitionIndex();
+
+ if (entryId < 0) {
+ return new MessageIdImpl(ledgerId, 0, partitionIndex);
} else {
- return newMessageId(
- idImpl.getLedgerId(), idImpl.getEntryId() + 1,
idImpl.getPartitionIndex());
+ return new MessageIdImpl(ledgerId, entryId + 1, partitionIndex);
}
}
@@ -55,17 +59,15 @@ public final class MessageIdUtils {
* message id. We don't support the batch message for its low performance
now.
*/
public static MessageIdImpl unwrapMessageId(MessageId messageId) {
- MessageIdImpl idImpl = MessageIdImpl.convertToMessageIdImpl(messageId);
+ MessageIdImpl idImpl = convertToMessageIdImpl(messageId);
if (idImpl instanceof BatchMessageIdImpl) {
int batchSize = ((BatchMessageIdImpl) idImpl).getBatchSize();
- checkArgument(batchSize == 1, "We only support normal message id
currently.");
+ checkArgument(
+ batchSize <= 1,
+ "We only support normal message id currently. This batch
size is %d",
+ batchSize);
}
return idImpl;
}
-
- /** Hide the message id implementation. */
- public static MessageId newMessageId(long ledgerId, long entryId, int
partitionIndex) {
- return new MessageIdImpl(ledgerId, entryId, partitionIndex);
- }
}
diff --git
a/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/start/MessageIdStartCursor.java
b/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/start/MessageIdStartCursor.java
index 03d5ba3e133..bf63675f1b4 100644
---
a/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/start/MessageIdStartCursor.java
+++
b/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/start/MessageIdStartCursor.java
@@ -23,7 +23,6 @@ import
org.apache.flink.connector.pulsar.source.enumerator.cursor.StartCursor;
import org.apache.pulsar.client.api.ConsumerBuilder;
import org.apache.pulsar.client.api.MessageId;
-import org.apache.pulsar.client.impl.MessageIdImpl;
import static
org.apache.flink.connector.pulsar.source.enumerator.cursor.MessageIdUtils.nextMessageId;
import static
org.apache.flink.connector.pulsar.source.enumerator.cursor.MessageIdUtils.unwrapMessageId;
@@ -49,11 +48,12 @@ public class MessageIdStartCursor implements StartCursor {
* MessageId#latest}.
*/
public MessageIdStartCursor(MessageId messageId, boolean inclusive) {
- MessageIdImpl idImpl = unwrapMessageId(messageId);
- if (MessageId.earliest.equals(idImpl) ||
MessageId.latest.equals(idImpl) || inclusive) {
- this.messageId = idImpl;
+ if (MessageId.earliest.equals(messageId)
+ || MessageId.latest.equals(messageId)
+ || inclusive) {
+ this.messageId = unwrapMessageId(messageId);
} else {
- this.messageId = nextMessageId(idImpl);
+ this.messageId = nextMessageId(messageId);
}
}
diff --git
a/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/stop/MessageIdStopCursor.java
b/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/stop/MessageIdStopCursor.java
index 03d83aa4495..3e0a86ed8b7 100644
---
a/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/stop/MessageIdStopCursor.java
+++
b/flink-connectors/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/source/enumerator/cursor/stop/MessageIdStopCursor.java
@@ -22,7 +22,6 @@ import
org.apache.flink.connector.pulsar.source.enumerator.cursor.StopCursor;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.MessageId;
-import org.apache.pulsar.client.impl.MessageIdImpl;
import static
org.apache.flink.connector.pulsar.source.enumerator.cursor.MessageIdUtils.unwrapMessageId;
import static org.apache.flink.util.Preconditions.checkArgument;
@@ -41,13 +40,10 @@ public class MessageIdStopCursor implements StopCursor {
private final boolean inclusive;
public MessageIdStopCursor(MessageId messageId, boolean inclusive) {
- MessageIdImpl idImpl = unwrapMessageId(messageId);
- checkArgument(!earliest.equals(idImpl), "MessageId.earliest is not
supported.");
- checkArgument(
- !latest.equals(idImpl),
- "MessageId.latest is not supported, use
LatestMessageStopCursor instead.");
+ checkArgument(!earliest.equals(messageId), "MessageId.earliest is not
supported.");
+ checkArgument(!latest.equals(messageId), "Use LatestMessageStopCursor
instead.");
- this.messageId = idImpl;
+ this.messageId = unwrapMessageId(messageId);
this.inclusive = inclusive;
}