You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by "Trym R. Møller" <tr...@sigmat.dk> on 2012/11/09 14:41:34 UTC

SolrZKClient changed interface

Hi

The constructor of SolrZKClient has changed, I expect to ensure clean up 
of resources. The strategy is as follows:
connManager = new ConnectionManager(...)
try {
     ...
} catch (Throwable e) {
       connManager.close();
       throw new RuntimeException();
}
try {
   connManager.waitForConnected(clientConnectTimeout);
} catch (Throwable e) {
   connManager.close();
   throw new RuntimeException();
}

This results in a different exception (RuntimeException) returned from 
the constructor as earlier (nice exceptions as UnknownHostException, 
TimeoutException).

Can this be changed so we keep the old nice exceptions e.g. as follows 
(requiring the constructor to declare these) or at least include them as 
cause in the RuntimeException?

boolean closeBecauseOfException = true;
try {
     ...
    connManager.waitForConnected(clientConnectTimeout);
    closeBecauseOfException = false
} finally {
     if (closeBecauseOfException) {
         connManager.close();
     }
}

Any comments appreciated.

Best regards Trym

http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_0/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java

Re: SolrZKClient changed interface

Posted by Per Steffensen <st...@designware.dk>.
Hi Trym

I believe one of the reasons that they started throwing 
RuntimeExceptions insted of UnknownHostException, TimeoutException etc 
is that the method signature has changed to not have a "throws"-part. 
They probably do not want do deal with those checked exceptions. Im not 
sure I completely understand your suggestion, but if they want to keep 
the method signature this way, there is not way to get checked 
excpetions (like UnknownHostException and TimeoutException) out of this 
method - therefore best solution is at least to include the actual 
exceptions as cause on the RuntimeExceptions. Or maybe it is just an 
accident that the checked excpetions was removed from the method 
signature, and then of course you can add them again at make sure the 
actual exceptions are propagated correctly.

Regards, Per Steffensen

Trym R. Møller skrev:
> Hi
>
> The constructor of SolrZKClient has changed, I expect to ensure clean 
> up of resources. The strategy is as follows:
> connManager = new ConnectionManager(...)
> try {
>     ...
> } catch (Throwable e) {
>       connManager.close();
>       throw new RuntimeException();
> }
> try {
>   connManager.waitForConnected(clientConnectTimeout);
> } catch (Throwable e) {
>   connManager.close();
>   throw new RuntimeException();
> }
>
> This results in a different exception (RuntimeException) returned from 
> the constructor as earlier (nice exceptions as UnknownHostException, 
> TimeoutException).
>
> Can this be changed so we keep the old nice exceptions e.g. as follows 
> (requiring the constructor to declare these) or at least include them 
> as cause in the RuntimeException?
>
> boolean closeBecauseOfException = true;
> try {
>     ...
>    connManager.waitForConnected(clientConnectTimeout);
>    closeBecauseOfException = false
> } finally {
>     if (closeBecauseOfException) {
>         connManager.close();
>     }
> }
>
> Any comments appreciated.
>
> Best regards Trym
>
> http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_0/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java 
>
>


Re: SolrZKClient changed interface

Posted by "Trym R. Møller" <tr...@sigmat.dk>.
Can anyone verify that the jira has been created sensible?
Thanks in advance.

https://issues.apache.org/jira/browse/SOLR-4066

Best regards Trym

Den 10-11-2012 00:54, Mark Miller skrev:
> Please file a JIRA issue for this change.
>
> - Mark
>
> On Nov 9, 2012, at 8:41 AM, Trym R. Møller <tr...@sigmat.dk> wrote:
>
>> Hi
>>
>> The constructor of SolrZKClient has changed, I expect to ensure clean up of resources. The strategy is as follows:
>> connManager = new ConnectionManager(...)
>> try {
>>     ...
>> } catch (Throwable e) {
>>       connManager.close();
>>       throw new RuntimeException();
>> }
>> try {
>>   connManager.waitForConnected(clientConnectTimeout);
>> } catch (Throwable e) {
>>   connManager.close();
>>   throw new RuntimeException();
>> }
>>
>> This results in a different exception (RuntimeException) returned from the constructor as earlier (nice exceptions as UnknownHostException, TimeoutException).
>>
>> Can this be changed so we keep the old nice exceptions e.g. as follows (requiring the constructor to declare these) or at least include them as cause in the RuntimeException?
>>
>> boolean closeBecauseOfException = true;
>> try {
>>     ...
>>    connManager.waitForConnected(clientConnectTimeout);
>>    closeBecauseOfException = false
>> } finally {
>>     if (closeBecauseOfException) {
>>         connManager.close();
>>     }
>> }
>>
>> Any comments appreciated.
>>
>> Best regards Trym
>>
>> http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_0/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java


Re: SolrZKClient changed interface

Posted by Mark Miller <ma...@gmail.com>.
Please file a JIRA issue for this change.

- Mark

On Nov 9, 2012, at 8:41 AM, Trym R. Møller <tr...@sigmat.dk> wrote:

> Hi
> 
> The constructor of SolrZKClient has changed, I expect to ensure clean up of resources. The strategy is as follows:
> connManager = new ConnectionManager(...)
> try {
>    ...
> } catch (Throwable e) {
>      connManager.close();
>      throw new RuntimeException();
> }
> try {
>  connManager.waitForConnected(clientConnectTimeout);
> } catch (Throwable e) {
>  connManager.close();
>  throw new RuntimeException();
> }
> 
> This results in a different exception (RuntimeException) returned from the constructor as earlier (nice exceptions as UnknownHostException, TimeoutException).
> 
> Can this be changed so we keep the old nice exceptions e.g. as follows (requiring the constructor to declare these) or at least include them as cause in the RuntimeException?
> 
> boolean closeBecauseOfException = true;
> try {
>    ...
>   connManager.waitForConnected(clientConnectTimeout);
>   closeBecauseOfException = false
> } finally {
>    if (closeBecauseOfException) {
>        connManager.close();
>    }
> }
> 
> Any comments appreciated.
> 
> Best regards Trym
> 
> http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_4_0/solr/solrj/src/java/org/apache/solr/common/cloud/SolrZkClient.java