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