accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eric Newton (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-1889) ZooKeeperInstance close method should mark instance closed.
Date Fri, 20 Dec 2013 17:34:31 GMT

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

Eric Newton commented on ACCUMULO-1889:
---------------------------------------

[~bhavanki] it is ok, but it's not really obvious that it is.

The uses of the instance in that code uses a lower-level API, and doesn't use it to create
connectors.  It just references instanceId and zookeeper values.

It might fail in the future if someone changes the code to use a higher level API.  We may
be safe from that because the higher level API needs the Locator to work.  We could scramble
the state of the Instance in Instance.close, and then we would not be able to close it like
I did in 
{{InputConfigurator.getTabletLocator()}}.

> ZooKeeperInstance close method should mark instance closed.
> -----------------------------------------------------------
>
>                 Key: ACCUMULO-1889
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1889
>             Project: Accumulo
>          Issue Type: Bug
>    Affects Versions: 1.4.5, 1.5.1, 1.6.0
>            Reporter: Sean Busbey
>            Assignee: Sean Busbey
>             Fix For: 1.4.5, 1.5.1, 1.6.0
>
>         Attachments: ACCUMULO-1889.1.patch.txt
>
>
> (1.4.5 and 1.5.1 impact presumes ACCUMULO-1858 gets applied)
> The current close() implementation on ZooKeeperInstance only marks a given instance as
closed if the outstanding client count is 0.
> {code}
>   public synchronized void close() throws AccumuloException {
>     if (!closed && clientInstances.decrementAndGet() == 0) {
>       try {
>         zooCache.close();
>         ThriftUtil.close();
>       } catch (InterruptedException e) {
>         clientInstances.incrementAndGet();
>         throw new AccumuloException("Issues closing ZooKeeper.");
>       }
>       closed = true;
>     }
>   }
> {code}
> This is incorrect for two reason:
> 1) It allows continued operations on a given ZKI after it has had close() called on it
> 2) It allows a given ZKI to decrement the number of open clients more than once



--
This message was sent by Atlassian JIRA
(v6.1.4#6159)

Mime
View raw message