[
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)