accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Elser (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ACCUMULO-2966) ZooReaderWriter.getInstance ignores changes in params
Date Mon, 06 Apr 2015 01:51:12 GMT

     [ https://issues.apache.org/jira/browse/ACCUMULO-2966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Josh Elser updated ACCUMULO-2966:
---------------------------------
    Fix Version/s:     (was: 1.7.0)
                   1.7.1
                   1.8.0

> 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.5.3, 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)

Mime
View raw message