[ 
https://issues.apache.org/jira/browse/BOOKKEEPER-826?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14733955#comment-14733955
 ] 

Sijie Guo commented on BOOKKEEPER-826:
--------------------------------------

[~zhaijia] thank you for your patch. but the change here isn't safe. since 
after ensemble change, it would unset successful results which would break the 
ack quorum constraint. sendSuccessfulCallback just after ensemble change isn't 
safe. I would propose a different patch.

> PendingAddOp is ignoring ack response after meet ack quorum constraint 
> -----------------------------------------------------------------------
>
>                 Key: BOOKKEEPER-826
>                 URL: https://issues.apache.org/jira/browse/BOOKKEEPER-826
>             Project: Bookkeeper
>          Issue Type: Improvement
>          Components: bookkeeper-client
>            Reporter: Charles X
>            Assignee: Jia Zhai
>         Attachments: BOOKKEEPER-826.patch
>
>
> PendingAddOp is set to completed when it meets ack quorum.
> {code}
>         if (ackSet.addBookieAndCheck(bookieIndex) && !completed) {
>             completed = true;
>             LOG.debug("Complete (lid:{}, eid:{}).", ledgerId, entryId);
>             // when completed an entry, try to send success add callbacks in 
> order
>             lh.sendAddSuccessCallbacks();
>         }
> {code}
> responses are ignored after completed flag is set.
> {code}
>        if (completed) {
>             // I am already finished, ignore incoming responses.
>             // otherwise, we might hit the following error handling logic, 
> which might cause bad things.
>             return;
>         }
> {code}
> It is not a correctness problem, but it would introduce performance issue 
> during ensemble change. A callback (could be acknowledge before ensemble 
> change) has to be delayed to ensemble change completion.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to