You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I searched in the issues and found nothing similar.
Version
pulsar-server-version: 2.9.3.0.5 based on 2.9.3
client-producer-version: c++ 2.9.3
client-consumer-version: go-client
Minimal reproduce step
Continuously send message, receive message and ack.
What did you expect to see?
deserializing message metadata successfully
What did you see instead?
deserializing message metadata error when PersistentMessageExpiryMonitor#expireMessages, which result in topic message can not be cleaned.
markDeletePosition is 48516, so expireMessages need to get the timestamp of 48517. In our production environment, bookie read entry 69134924:48517 successfully, but broker fail in parseMessageMetadata. entry is 3 replication. message retention time is 3 day.
However, the near position such as 48516, 48518, 48519 can read successfully, only 48517 fail.
The stack is as follow
14:12:57.694 [BookKeeperClientWorker-OrderedExecutor-12-0] ERROR org.apache.pulsar.broker.service.persistent.PersistentMessageExpiryMonitor - [persistent://like/baina/like_user_event_0501016-partition-5][cksinker_like_user_event_0501016] Error deserializing message for expiry check
java.lang.IllegalArgumentException: Invalid unknonwn tag type: 7
at org.apache.pulsar.common.api.proto.LightProtoCodec.skipUnknownField(LightProtoCodec.java:270) ~[org.apache.pulsar-pulsar-common-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.pulsar.common.api.proto.MessageMetadata.parseFrom(MessageMetadata.java:1370) ~[org.apache.pulsar-pulsar-common-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.pulsar.common.protocol.Commands.parseMessageMetadata(Commands.java:435) ~[org.apache.pulsar-pulsar-common-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.pulsar.common.protocol.Commands.parseMessageMetadata(Commands.java:422) ~[org.apache.pulsar-pulsar-common-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.pulsar.client.impl.MessageImpl.getEntryTimestamp(MessageImpl.java:284) ~[org.apache.pulsar-pulsar-client-original-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.pulsar.broker.service.persistent.PersistentMessageExpiryMonitor.lambda$expireMessages$0(PersistentMessageExpiryMonitor.java:77) ~[org.apache.pulsar-pulsar-broker-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.bookkeeper.mledger.impl.OpFindNewest.readEntryComplete(OpFindNewest.java:89) ~[org.apache.pulsar-managed-ledger-2.9.3.0.5.jar:2.9.3.0.5]
at org.apache.bookkeeper.mledger.impl.EntryCacheImpl.lambda$asyncReadEntry0$0(EntryCacheImpl.java:222) ~[org.apache.pulsar-managed-ledger-2.9.3.0.5.jar:2.9.3.0.5]
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:714) [?:?]
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
Search before asking
Version
Minimal reproduce step
Continuously send message, receive message and ack.
What did you expect to see?
deserializing message metadata successfully
What did you see instead?
deserializing message metadata error when PersistentMessageExpiryMonitor#expireMessages, which result in topic message can not be cleaned.
markDeletePosition is 48516, so expireMessages need to get the timestamp of 48517. In our production environment, bookie read entry
69134924:48517
successfully, but broker fail inparseMessageMetadata
. entry is 3 replication. message retention time is 3 day.However, the near position such as 48516, 48518, 48519 can read successfully, only 48517 fail.
The stack is as follow
group stats is as follow
Anything else?
No response
Are you willing to submit a PR?
The text was updated successfully, but these errors were encountered: