You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sn...@apache.org on 2016/06/14 17:15:17 UTC
[38/44] usergrid git commit: Separate create vs. get column family
logic.
Separate create vs. get column family logic.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/cc7a8678
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/cc7a8678
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/cc7a8678
Branch: refs/heads/usergrid-1268-akka-211
Commit: cc7a8678481dccda00d867fc363abc0d404f0c37
Parents: fcb347c
Author: Dave Johnson <sn...@apache.org>
Authored: Mon Jun 6 12:23:46 2016 -0400
Committer: Dave Johnson <sn...@apache.org>
Committed: Mon Jun 6 12:23:46 2016 -0400
----------------------------------------------------------------------
.../cassandra/AstyanaxLockManagerImpl.java | 87 ++++++++++++--------
1 file changed, 53 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/cc7a8678/stack/core/src/main/java/org/apache/usergrid/locking/cassandra/AstyanaxLockManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/locking/cassandra/AstyanaxLockManagerImpl.java b/stack/core/src/main/java/org/apache/usergrid/locking/cassandra/AstyanaxLockManagerImpl.java
index 90b9d57..e26aed4 100644
--- a/stack/core/src/main/java/org/apache/usergrid/locking/cassandra/AstyanaxLockManagerImpl.java
+++ b/stack/core/src/main/java/org/apache/usergrid/locking/cassandra/AstyanaxLockManagerImpl.java
@@ -62,13 +62,13 @@ public class AstyanaxLockManagerImpl implements LockManager {
this.cassandraFig = cassandraFig;
this.cassandraCluster = cassandraCluster;
+ this.keyspace = cassandraCluster.getLocksKeyspace();
}
@Override
public void setup() {
try {
- keyspace = cassandraCluster.getLocksKeyspace();
createLocksKeyspace();
columnFamily = createLocksColumnFamily();
} catch (ConnectionException e) {
@@ -78,7 +78,7 @@ public class AstyanaxLockManagerImpl implements LockManager {
@Override
- public Lock createLock(final UUID applicationId, final String... path ){
+ public Lock createLock(final UUID applicationId, final String... path ) {
String lockPath = LockPathBuilder.buildPath( applicationId, path );
@@ -114,7 +114,7 @@ public class AstyanaxLockManagerImpl implements LockManager {
ColumnPrefixDistributedRowLock<String> lock =
- new ColumnPrefixDistributedRowLock<>(keyspace, columnFamily, lockPath)
+ new ColumnPrefixDistributedRowLock<>(keyspace, getLocksColumnFamily(), lockPath)
.expireLockAfter( lockExpiration, TimeUnit.MILLISECONDS)
.withConsistencyLevel(consistencyLevel);
@@ -124,56 +124,75 @@ public class AstyanaxLockManagerImpl implements LockManager {
}
+ private ColumnFamily getLocksColumnFamily() {
- private ColumnFamily createLocksColumnFamily() throws ConnectionException {
+ if ( columnFamily == null ) {
- ColumnFamily<String, String> CF_LOCKS = ColumnFamily.newColumnFamily(
- CF_NAME, StringSerializer.get(), StringSerializer.get() );
+ columnFamily = ColumnFamily.newColumnFamily(
+ CF_NAME, StringSerializer.get(), StringSerializer.get() );
- final KeyspaceDefinition keyspaceDefinition = keyspace.describeKeyspace();
- final ColumnFamilyDefinition existing =
- keyspaceDefinition.getColumnFamily( CF_LOCKS.getName() );
+ if ( logger.isDebugEnabled() ) {
+ try {
+ final KeyspaceDefinition kd = keyspace.describeKeyspace();
+ final ColumnFamilyDefinition cfd = kd.getColumnFamily( columnFamily.getName() );
+ Map<String, Object> options = new HashMap<>( 1 );
+ options.put( "gc_grace_seconds", cfd.getGcGraceSeconds() );
+ options.put( "caching", cfd.getCaching() );
+ options.put( "compaction_strategy", cfd.getCompactionStrategy() );
+ options.put( "compaction_strategy_options", cfd.getCompactionStrategyOptions() );
+ logger.debug( "Locks column family {} exists with options: {}", cfd.getName(), options);
+
+ } catch ( ConnectionException ce ) {
+ logger.warn("Error connecting to Cassandra for debug column family info", ce);
+ }
+ }
+ }
- if ( existing != null ) {
+ return columnFamily;
+ }
- Map<String, Object> existingOptions = new HashMap<>(1);
- existingOptions.put("gc_grace_seconds", existing.getGcGraceSeconds());
- existingOptions.put("caching", existing.getCaching());
- existingOptions.put("compaction_strategy", existing.getCompactionStrategy());
- existingOptions.put("compaction_strategy_options", existing.getCompactionStrategyOptions());
- logger.info( "Locks column family {} exists with options: {}", existing.getName(),
- existingOptions.toString() );
+ private ColumnFamily createLocksColumnFamily() throws ConnectionException {
- return CF_LOCKS;
- }
+ ColumnFamily<String, String> cflocks = ColumnFamily.newColumnFamily(
+ CF_NAME, StringSerializer.get(), StringSerializer.get() );
- MultiTenantColumnFamilyDefinition columnFamilyDefinition = new MultiTenantColumnFamilyDefinition(
- CF_LOCKS,
- BytesType.class.getSimpleName(),
- UTF8Type.class.getSimpleName(),
- BytesType.class.getSimpleName(),
- MultiTenantColumnFamilyDefinition.CacheOption.ALL
- );
+ final KeyspaceDefinition kd = keyspace.describeKeyspace();
+ final ColumnFamilyDefinition cfdef = kd.getColumnFamily( cflocks.getName() );
- Map<String, Object> cfOptions = columnFamilyDefinition.getOptions();
+ if ( cfdef == null ) {
- // Additionally set the gc grace low
- cfOptions.put("gc_grace_seconds", 60);
+ // create only if does not already exist
+ MultiTenantColumnFamilyDefinition mtcfd = new MultiTenantColumnFamilyDefinition(
+ cflocks,
+ BytesType.class.getSimpleName(),
+ UTF8Type.class.getSimpleName(),
+ BytesType.class.getSimpleName(),
+ MultiTenantColumnFamilyDefinition.CacheOption.ALL
+ );
- keyspace.createColumnFamily( columnFamilyDefinition.getColumnFamily() , cfOptions );
+ Map<String, Object> cfOptions = mtcfd.getOptions();
- logger.info( "Created column family {}", columnFamilyDefinition.getOptions() );
+ // Additionally set the gc grace low
+ cfOptions.put( "gc_grace_seconds", 60 );
- return columnFamilyDefinition.getColumnFamily();
- }
+ keyspace.createColumnFamily( mtcfd.getColumnFamily(), cfOptions );
+ logger.info( "Created column family {}", mtcfd.getOptions() );
- private void createLocksKeyspace() throws ConnectionException {
+ cflocks = mtcfd.getColumnFamily();
+
+ } else {
+ return getLocksColumnFamily();
+ }
+
+ return cflocks;
+ }
+ private void createLocksKeyspace() throws ConnectionException {
ImmutableMap.Builder<String, Object> strategyOptions = getKeySpaceProps();