accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Elser (JIRA)" <>
Subject [jira] [Commented] (ACCUMULO-3242) Consolidate ZK code WRT retries
Date Fri, 17 Oct 2014 15:52:33 GMT


Josh Elser commented on ACCUMULO-3242:

Actually, as much as I like the RetryingInvocationHandler, I think it needs to go away. It
makes correctly handling non-idempotent ZK ops very difficult.

e.g. for zk.create(), you could get a connectionloss after the node is created but before
the ack is received. On the retry of the create, we want to return successfully if we get
a node exists exception (assuming the NodeExistsPolicy is skip). Doing retries in two places
makes it much more difficult to have a correctly observed bounded retry policy (10 retries
with backoff, then failure).

It's a bit more code to repeat if we remove the RetryingInvocationHandler, but we would also
alleviate confusion for ourselves in regards to which impl to use. On the bright side through,
the retry logic would still be centered in the ZooReader(Writer) class(es).

> Consolidate ZK code WRT retries
> -------------------------------
>                 Key: ACCUMULO-3242
>                 URL:
>             Project: Accumulo
>          Issue Type: Bug
>          Components: master, tserver
>            Reporter: Josh Elser
>            Assignee: Josh Elser
>             Fix For: 1.6.2, 1.7.0
> A couple of general ZK things that should be fixed up:
> # Multiple means of automatic retrying of recoverable ZooKeeper errors through use of
an InvocationHandler and a Proxy around IZooReader(Writer)
> # Encapsulate retry logic
> # Switch over callers to use the retrying instance instead of the non-retrying instance

This message was sent by Atlassian JIRA

View raw message