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

Josh Elser updated ACCUMULO-2743:
---------------------------------

    Issue Type: Sub-task  (was: Improvement)
        Parent: ACCUMULO-2589

> Improve stale-reads with ZooKeeper-backed data
> ----------------------------------------------
>
>                 Key: ACCUMULO-2743
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-2743
>             Project: Accumulo
>          Issue Type: Sub-task
>            Reporter: Josh Elser
>             Fix For: 1.7.0
>
>
> Writing test code against Accumulo, especially via MiniAccumuloCluster, can 
> be extremely frustrating. ZooKeeper is used for managing table 
> configurations, among other things, to allow all tabletservers to be aware of 
> the state of a table.
> The problem is that each tabletserver uses a Watcher to see when updates 
> occur, and then it updates an internal cache of these properties. This is a 
> problem even on an instance with a single tserver when setting a table 
> property (configuring an iterator is a good example). The setTableProperty 
> command is implemented via the Master, not a tserver like fetching the table 
> configuration is implemented, which means that you're racing against the 
> Watcher in the tserver.
> The cause of this is that test code gets riddled with code like the following:
> {code}
> String myProperty = tableConfiguration.getProperty("myProperty");
> for (int i = 0; i < retries && null == myProperty; i++) {
>   myProperty = tableConfiguration.getProperty("myProperty");
>   Thread.sleep(some_millis);
> }
> // Hope that you actually saw the update
> Assert.assertNotNull(myProperty)
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to