TakaHiR07 commented on PR #21552:
URL: https://github.com/apache/pulsar/pull/21552#issuecomment-1818210566
> As you described in the issue, it seems the ledger doesn't replicate
successfully to the new ensemble. The metadata is still the old one:
>
> ```
> Read of ledger entry failed: L1705537 E0-E0, Sent to [bookie-1, bookie-2,
bookie-3], Heard from [] : bitset = {}, Error = 'Bookie handle is not
available'. First unread entry is (-1, rc = null)
> ```
>
> It is still trying to read the old ensembles.
>
> `asyncOpenLedgerNoRecovery` is not recommended because it could receive
different responses on the different bookies. It violates the bookie's write
consistent policy. For example, when you write 3 bookies and you need 2 bookie
ack but only receive one ack. Using this API can read that entry from one
bookie but can not read it from the another the failed write bookie. The write
client know it's a failed write. But the read client can read it.
Replicate of auto-recovery is success, metadata on zk is the new one, but
metadata on CompactTopicContext#ReadLedgerHandle is the old one. And I can read
ledger directly from bookie-shell.
I guess compactedLedger is closed ledger, it should not be write and read at
the same time. Therefore the read client should not be able to read the failed
write entry ??
And I also have a question here. Why asyncOpenLedger not register the zk
listener to update metadata change?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]