You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Christopher Tubbs (JIRA)" <ji...@apache.org> on 2015/05/22 01:59:17 UTC
[jira] [Updated] (ACCUMULO-2966) ZooReaderWriter.getInstance
ignores changes in params
[ https://issues.apache.org/jira/browse/ACCUMULO-2966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Christopher Tubbs updated ACCUMULO-2966:
----------------------------------------
Fix Version/s: (was: 1.5.3)
This issue was marked to be fixed for 1.5.3. However, no patch has been provided, and development on 1.5 is waning. Non-urgent issues are not likely to be addressed. Users are encouraged to upgrade to a newer version of Accumulo.
It seems that this issue still has a plan agreed to in a previous comment, which involved backporting the factory class back to 1.5. Given the waning of 1.5 development, that part of the plan can probably be omitted.
> ZooReaderWriter.getInstance ignores changes in params
> -----------------------------------------------------
>
> Key: ACCUMULO-2966
> URL: https://issues.apache.org/jira/browse/ACCUMULO-2966
> Project: Accumulo
> Issue Type: Bug
> Components: fate
> Affects Versions: 1.5.0, 1.5.1, 1.6.0
> Reporter: Sean Busbey
> Priority: Minor
> Labels: newbie
> Fix For: 1.6.3, 1.8.0, 1.7.1
>
>
> the factory methods on ZooReaderWriter take parameters for servers, timeout, and authentication, but ignores if those parameters are different from the first invocation.
> {code}
> public static synchronized ZooReaderWriter getInstance(String zookeepers, int timeInMillis, String scheme, byte[] auth) {
> if (instance == null)
> instance = new ZooReaderWriter(zookeepers, timeInMillis, scheme, auth);
> return instance;
> }
> /**
> * get an instance that retries when zookeeper connection errors occur
> *
> * @return an instance that retries when Zookeeper connection errors occur.
> */
> public static synchronized IZooReaderWriter getRetryingInstance(String zookeepers, int timeInMillis, String scheme, byte[] auth) {
> if (retryingInstance == null) {
> IZooReaderWriter inst = getInstance(zookeepers, timeInMillis, scheme, auth);
> InvocationHandler ih = new RetryingInvocationHandler(inst);
> retryingInstance = (IZooReaderWriter) Proxy.newProxyInstance(ZooReaderWriter.class.getClassLoader(), new Class[] {IZooReaderWriter.class}, ih);
> }
> return retryingInstance;
> }
> {code}
> It should either keep a cache keyed on the parameter values or it should throw an exception when they differ from the existing instance.
> Which one depends on wether the intent is to reuse objects or to have ZooReaderWriter be a proper singleton. I'm not sure from context, but I think the cache is the way to go.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)