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

Michael Han commented on ZOOKEEPER-2511:
----------------------------------------

bq.  The fun thing is, we don't actually need that "throws 
InterruptedException" (nothing in the method throws an exception, everything is 
caught elsewhere in the stack). So I imagine it is kept there for API 
compatibility purposes.

Regarding this, should we try fix the interface?

Dig a little bit of history and the change is made in ZOOKEEPER-63 where we 
moved a chunk of code that could throw InterruptedException from 
ZooKeeper::close into a try catch block of ClientCnx::close which catches the 
InterruptedException.
{code}
 RequestHeader h = new RequestHeader();         
 h.setType(ZooDefs.OpCode.closeSession);                
 cnxn.submitRequest(h, null, null, null);
{code}

In ClientCnx::close:
{code}
 try {
    RequestHeader h = new RequestHeader();
    h.setType(ZooDefs.OpCode.closeSession);

    submitRequest(h, null, null, null);
} catch (InterruptedException e) {
    // ignore, close the send/event threads
} finally {
    disconnect();
}
{code}

I see a couple of solutions:
* Don't catch InterruptedException in ClientCnx::close. No signature change to 
ZooKeeper::close. 
* Just remove throw InterruptedException from ZooKeeper::close, because it does 
not throw such exception. Client code that catching this exception will need 
update to remove the catch, so this is not backward compatible.
* Do nothing with regards to fix the interface, and use the solution proposed 
in this patch to suppress warning.


> Implement AutoCloseable in ZooKeeper.java
> -----------------------------------------
>
>                 Key: ZOOKEEPER-2511
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2511
>             Project: ZooKeeper
>          Issue Type: Improvement
>            Reporter: Abraham Fine
>            Assignee: Abraham Fine
>         Attachments: ZOOKEEPER-2511.patch
>
>
> As a java developer I would like to be able to use try-with-resource blocks 
> with ZooKeeper objects in order to make closing sessions easier.



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

Reply via email to