git commit: Work around initialization problem
Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 1147ee3a8 - 36cc02ca7 Work around initialization problem Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/36cc02ca Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/36cc02ca Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/36cc02ca Branch: refs/heads/cassandra-2.1 Commit: 36cc02ca76fa11b6b1d2cb24fb068d2a5dfaa842 Parents: 1147ee3 Author: Sylvain Lebresne sylv...@datastax.com Authored: Thu May 22 16:02:23 2014 +0200 Committer: Sylvain Lebresne sylv...@datastax.com Committed: Thu May 22 16:02:23 2014 +0200 -- .../apache/cassandra/cql3/QueryProcessor.java | 46 +--- 1 file changed, 31 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/36cc02ca/src/java/org/apache/cassandra/cql3/QueryProcessor.java -- diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java index fca9c42..fd6e6ce 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -82,7 +82,6 @@ public class QueryProcessor implements QueryHandler // A map for prepared statements used internally (which we don't want to mix with user statement, in particular we don't // bother with expiration on those. private static final ConcurrentMapString, ParsedStatement.Prepared internalStatements = new ConcurrentHashMap(); -private static final QueryState internalQueryState; static { @@ -95,16 +94,33 @@ public class QueryProcessor implements QueryHandler .weigher(thriftMemoryUsageWeigher) .build(); -ClientState state = ClientState.forInternalCalls(); -try -{ -state.setKeyspace(Keyspace.SYSTEM_KS); -} -catch (InvalidRequestException e) +} + +// Work aound initialization dependency +private static enum InternalStateInstance +{ +INSTANCE; + +private final QueryState queryState; + +InternalStateInstance() { -throw new RuntimeException(); +ClientState state = ClientState.forInternalCalls(); +try +{ +state.setKeyspace(Keyspace.SYSTEM_KS); +} +catch (InvalidRequestException e) +{ +throw new RuntimeException(); +} +this.queryState = new QueryState(state); } -internalQueryState = new QueryState(state); +} + +private static QueryState internalQueryState() +{ +return InternalStateInstance.INSTANCE.queryState; } private QueryProcessor() @@ -233,8 +249,8 @@ public class QueryProcessor implements QueryHandler return prepared; // Note: if 2 threads prepare the same query, we'll live so don't bother synchronizing -prepared = parseStatement(query, internalQueryState); -prepared.statement.validate(internalQueryState.getClientState()); +prepared = parseStatement(query, internalQueryState()); +prepared.statement.validate(internalQueryState().getClientState()); internalStatements.putIfAbsent(query, prepared); return prepared; } @@ -244,7 +260,7 @@ public class QueryProcessor implements QueryHandler try { ParsedStatement.Prepared prepared = prepareInternal(query); -ResultMessage result = prepared.statement.executeInternal(internalQueryState, makeInternalOptions(prepared, values)); +ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); if (result instanceof ResultMessage.Rows) return UntypedResultSet.create(((ResultMessage.Rows)result).result); else @@ -286,9 +302,9 @@ public class QueryProcessor implements QueryHandler { try { -ParsedStatement.Prepared prepared = parseStatement(query, internalQueryState); -prepared.statement.validate(internalQueryState.getClientState()); -ResultMessage result = prepared.statement.executeInternal(internalQueryState, makeInternalOptions(prepared, values)); +ParsedStatement.Prepared prepared = parseStatement(query, internalQueryState()); +prepared.statement.validate(internalQueryState().getClientState()); +ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); if (result instanceof
[1/4] git commit: Work around initialization problem
Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 36cc02ca7 - 9bd388780 refs/heads/trunk 5f643ffcc - 864865da9 Work around initialization problem Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/36cc02ca Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/36cc02ca Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/36cc02ca Branch: refs/heads/trunk Commit: 36cc02ca76fa11b6b1d2cb24fb068d2a5dfaa842 Parents: 1147ee3 Author: Sylvain Lebresne sylv...@datastax.com Authored: Thu May 22 16:02:23 2014 +0200 Committer: Sylvain Lebresne sylv...@datastax.com Committed: Thu May 22 16:02:23 2014 +0200 -- .../apache/cassandra/cql3/QueryProcessor.java | 46 +--- 1 file changed, 31 insertions(+), 15 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cassandra/blob/36cc02ca/src/java/org/apache/cassandra/cql3/QueryProcessor.java -- diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java index fca9c42..fd6e6ce 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -82,7 +82,6 @@ public class QueryProcessor implements QueryHandler // A map for prepared statements used internally (which we don't want to mix with user statement, in particular we don't // bother with expiration on those. private static final ConcurrentMapString, ParsedStatement.Prepared internalStatements = new ConcurrentHashMap(); -private static final QueryState internalQueryState; static { @@ -95,16 +94,33 @@ public class QueryProcessor implements QueryHandler .weigher(thriftMemoryUsageWeigher) .build(); -ClientState state = ClientState.forInternalCalls(); -try -{ -state.setKeyspace(Keyspace.SYSTEM_KS); -} -catch (InvalidRequestException e) +} + +// Work aound initialization dependency +private static enum InternalStateInstance +{ +INSTANCE; + +private final QueryState queryState; + +InternalStateInstance() { -throw new RuntimeException(); +ClientState state = ClientState.forInternalCalls(); +try +{ +state.setKeyspace(Keyspace.SYSTEM_KS); +} +catch (InvalidRequestException e) +{ +throw new RuntimeException(); +} +this.queryState = new QueryState(state); } -internalQueryState = new QueryState(state); +} + +private static QueryState internalQueryState() +{ +return InternalStateInstance.INSTANCE.queryState; } private QueryProcessor() @@ -233,8 +249,8 @@ public class QueryProcessor implements QueryHandler return prepared; // Note: if 2 threads prepare the same query, we'll live so don't bother synchronizing -prepared = parseStatement(query, internalQueryState); -prepared.statement.validate(internalQueryState.getClientState()); +prepared = parseStatement(query, internalQueryState()); +prepared.statement.validate(internalQueryState().getClientState()); internalStatements.putIfAbsent(query, prepared); return prepared; } @@ -244,7 +260,7 @@ public class QueryProcessor implements QueryHandler try { ParsedStatement.Prepared prepared = prepareInternal(query); -ResultMessage result = prepared.statement.executeInternal(internalQueryState, makeInternalOptions(prepared, values)); +ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); if (result instanceof ResultMessage.Rows) return UntypedResultSet.create(((ResultMessage.Rows)result).result); else @@ -286,9 +302,9 @@ public class QueryProcessor implements QueryHandler { try { -ParsedStatement.Prepared prepared = parseStatement(query, internalQueryState); -prepared.statement.validate(internalQueryState.getClientState()); -ResultMessage result = prepared.statement.executeInternal(internalQueryState, makeInternalOptions(prepared, values)); +ParsedStatement.Prepared prepared = parseStatement(query, internalQueryState()); +prepared.statement.validate(internalQueryState().getClientState()); +ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values));