You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2021/03/18 09:19:42 UTC

[GitHub] [bookkeeper] Vanlightly commented on issue #2615: Ledger recovery can fail due to invalid ensemble creation

Vanlightly commented on issue #2615:
URL: https://github.com/apache/bookkeeper/issues/2615#issuecomment-801763428


   PR is coming very soon. I have modified the unit test to add the following scenario which is another way of reproducing the issue, but with less bookies.
   
   ```
   title Invalid ensemble creation
   
   participant w1
   participant w2
   participant b1
   participant b2
   participant b3
   participant b4
   participant zk
   
   w1->zk:Create ledger (b1,b2)
   w1->b1: e0 (lac -1)
   w1->b2: e0 (lac -1)
   w1->b1: e1 (lac -1)
   w1->b2: e1 (lac -1)
   b1->w1: ack e0
   b2->w1: ack e0
   b1->w1: ack e1
   b2--xw1: nack e1
   w1->zk:new ensemble {b1, b3}, first entry: e1
   w1->b3: e1 (lac 0)
   b3->w1: ack e1
   w2->zk:Start recovery
   w2->b1: Read LAC
   w2->b3: Read LAC
   b1->w2: LAC -1
   b3--xw2: LAC timeout
   note over w1,zk: w2 uses LAC of -1 for recovery
   w2->b1: Read e0
   w2->b3: Read e0
   b1->w1:e0
   b3->w2:e0
   w2->b1:e0
   w2->b3:e0 (e0 not part of this ensemble\nthis write should not occur)
   b1->w2:ack e0
   b3--xw2:nack e0 (some error/timeout)
   w2->zk:new ensemble {b1,b4} first entry: e0
   note over w2,zk:Recovery will now fail as the final ensemble is invalid:\n[e0,{b1,b2],[e1,{b1,b3}],[e0,{b1,b4}]
   ```


----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org