accumulo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Havanki" <bhava...@clouderagovt.com>
Subject Re: Review Request 22685: ACCUMULO-2615 - refactored server configurations
Date Wed, 02 Jul 2014 15:31:26 GMT


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/test/java/org/apache/accumulo/server/conf/ZooCachePropertyAccessorTest.java,
line 45
> > <https://reviews.apache.org/r/22685/diff/2/?file=616153#file616153line45>
> >
> >     use Constants.UTF8?

Yes, will do. It'll be StandardCharsets when this gets merged to master.


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java,
line 58
> > <https://reviews.apache.org/r/22685/diff/2/?file=616152#file616152line58>
> >
> >     Can you edit these to put @Before and @Test on the line prior to method declaration?

I neglected to format this code to our standards, so I'll do that and this will be fixed.
Ugh, I missed three of them. :)


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java,
line 61
> > <https://reviews.apache.org/r/22685/diff/2/?file=616151#file616151line61>
> >
> >     Can you edit htis to put @Before, @BeforeClass, and @Test on the line prior
to method signature?

I neglected to format this code to our standards, so I'll do that and this will be fixed.


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java,
line 58
> > <https://reviews.apache.org/r/22685/diff/2/?file=616150#file616150line58>
> >
> >     can you format these to put @Before and @Test on the line prior ot the method
signatutre?

I neglected to format this code to our standards, so I'll do that and this will be fixed.


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java,
lines 171-179
> > <https://reviews.apache.org/r/22685/diff/2/?file=616145#file616145line171>
> >
> >     can you add a javadoc about what cache is getting invalidated?

Sure. I'll do the same for NamespaceConfiguration.


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java,
lines 69-70
> > <https://reviews.apache.org/r/22685/diff/2/?file=616145#file616145line69>
> >
> >     Is there any problem with these being long lived, e.g. in case a particular
table is deleted and then recreated with different configuration?

I don't believe so. Here's some background info.

- The ZooCachePropertyAccessor object is really just a wrapper around a ZooCache and contains
the logic for finding namespace-specific or table-specific ZK data in the ZooCache. So the
key is whether the ZooCache stays valid.
- A watcher is set when the ZooCache is initially created. The watcher pays attention to changes
under the ZK node that holds configuration data for the table. I expect that if a table is
deleted, then its configuration data is removed from ZK and so the watcher will be notified
and update the cache. Alternatively, if a table is re-created, then the data would be flushed
and/or reinitialized, and again the watcher would find out. So I'm relying on the ZooCache
to work correctly.


> On July 2, 2014, 10:24 a.m., Sean Busbey wrote:
> > server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java,
lines 66-76
> > <https://reviews.apache.org/r/22685/diff/2/?file=616145#file616145line66>
> >
> >     Is the additional synchronized block needed here?
> >     
> >     The method is already synchronized, the member is private, and I don't see it
used anywhere outside of the method.

The getPropCacheAccessor() method (and the invalidateCache() method too) synchronize on the
class instance for thread-safe access to the propCacheAccessor field, so that the field is
only initialized once. The synchronized block inside getPropCacheAccessor guards access to
the static propCaches map, across all class instances, so that two TableConfiguration objects
won't create two accessor objects for the same table.

So the synchronizations are for separate reasons. At least, that's my take on it. Definitely
check if that makes sense.


- Bill


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/22685/#review47187
-----------------------------------------------------------


On June 27, 2014, 1:11 p.m., Bill Havanki wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/22685/
> -----------------------------------------------------------
> 
> (Updated June 27, 2014, 1:11 p.m.)
> 
> 
> Review request for accumulo.
> 
> 
> Bugs: ACCUMULO-2615
>     https://issues.apache.org/jira/browse/ACCUMULO-2615
> 
> 
> Repository: accumulo
> 
> 
> Description
> -------
> 
> What started out as a simplification effort on server configurations ended up with results
that aren't so much simpler but are hopefully more straightforward. Here is a summary of the
more important changes.
> 
> * ServerConfiguration is deprecated in favor of the new ServerConfigurationFactory.
> * ServerConfigurationFactory caches configurations not just but namespace or table ID,
but also by instance ID.
> * ZooConfigurationFactory takes over the creation logic from ZooConfiguration. A ZooConfiguration
instance is no longer a singleton, but an ordinary instance. ZooConfigurationFactory caches
created ones by instance ID.
> * NamespaceConfiguration and TableConfiguration each keep a static map of ZooCache instances,
rather than a single static instance. The map is keyed by instance ID and namespace/table
(resp.) ID.
> * getParentConfiguration() was added to all appropriate configurations. (I did have an
interface declaring the method but decided it was not useful.)
> * The logic for retrieving properties from ZooCache instances is refactored to a new
ZooCachePropertyAccessor object.
> * NamespaceConfWatcher and TableConfWatcher include the configurations they watch as
fields, so they no longer need to repeatedly look them up (formerly in ServerConfiguration).
As a consequence, the watchers no longer attempt to handle received WatchedEvents for a different
namespace or table. (This *should* never happen - a warning is logged if it does.)
> 
> 
> Diffs
> -----
> 
>   server/base/src/main/java/org/apache/accumulo/server/conf/NamespaceConfWatcher.java
50ab27ee8dcab41d89789ea409f5e554c56163d3 
>   server/base/src/main/java/org/apache/accumulo/server/conf/NamespaceConfiguration.java
ebb098b01798bd4478f7d487909409bd2ca2baf1 
>   server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfiguration.java
2115f3f28557f1a56b4e117a5ce4e0be920a09d7 
>   server/base/src/main/java/org/apache/accumulo/server/conf/ServerConfigurationFactory.java
PRE-CREATION 
>   server/base/src/main/java/org/apache/accumulo/server/conf/TableConfWatcher.java 3c24ec49aa4895283e6556b02ed3479dda560b6b

>   server/base/src/main/java/org/apache/accumulo/server/conf/TableConfiguration.java b538d2ecc16a0c4c0456d491afb5e116ae0000b5

>   server/base/src/main/java/org/apache/accumulo/server/conf/TableParentConfiguration.java
34eb781a5b2807e3457a5f6ac501088ac2fc2e7a 
>   server/base/src/main/java/org/apache/accumulo/server/conf/ZooCachePropertyAccessor.java
PRE-CREATION 
>   server/base/src/main/java/org/apache/accumulo/server/conf/ZooConfiguration.java 696873bb013946c670c9d781cdf43bb0cb143b98

>   server/base/src/main/java/org/apache/accumulo/server/conf/ZooConfigurationFactory.java
PRE-CREATION 
>   server/base/src/test/java/org/apache/accumulo/server/conf/NamespaceConfigurationTest.java
PRE-CREATION 
>   server/base/src/test/java/org/apache/accumulo/server/conf/ServerConfigurationFactoryTest.java
PRE-CREATION 
>   server/base/src/test/java/org/apache/accumulo/server/conf/TableConfigurationTest.java
ae73ba69a87bf40de9ec8c3b8f804bb475a810ef 
>   server/base/src/test/java/org/apache/accumulo/server/conf/ZooCachePropertyAccessorTest.java
PRE-CREATION 
>   server/base/src/test/java/org/apache/accumulo/server/conf/ZooConfigurationFactoryTest.java
PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/22685/diff/
> 
> 
> Testing
> -------
> 
> Unit tests pass. Basic exercising on a one-node cluster (continuous ingest) successful.
All integration tests pass (after ACCUMULO-2951 and related).
> 
> 
> Thanks,
> 
> Bill Havanki
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message