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]

Reply via email to