Repository: cassandra Updated Branches: refs/heads/trunk 6ba099940 -> 17624248e
Make CassandraException unchecked, extend RuntimeException Patch by Robert Stupp, reviewed by Sylvain Lebresne for CASSANDRA-8560 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/17624248 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/17624248 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/17624248 Branch: refs/heads/trunk Commit: 17624248efc316de125d1bc3c6be4f0cb4e174a2 Parents: 6ba0999 Author: Robert Stupp <sn...@snazy.de> Authored: Mon Jan 19 09:22:51 2015 +0100 Committer: Robert Stupp <sn...@snazy.de> Committed: Mon Jan 19 09:22:51 2015 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/auth/CassandraAuthorizer.java | 17 +- .../cassandra/auth/PasswordAuthenticator.java | 25 +-- .../org/apache/cassandra/client/RingCache.java | 2 +- .../org/apache/cassandra/config/CFMetaData.java | 28 +-- .../apache/cassandra/cql3/QueryProcessor.java | 117 ++++-------- .../org/apache/cassandra/cql3/TypeCast.java | 21 +-- .../apache/cassandra/cql3/UntypedResultSet.java | 16 +- .../cql3/statements/CreateTableStatement.java | 19 +- .../statements/SchemaAlteringStatement.java | 17 +- .../cql3/statements/TruncateStatement.java | 10 +- .../db/index/SecondaryIndexManager.java | 11 +- .../db/marshal/DynamicCompositeType.java | 22 +-- .../exceptions/CassandraException.java | 2 +- .../apache/cassandra/hadoop/ConfigHelper.java | 24 +-- .../hadoop/pig/AbstractCassandraStorage.java | 4 - .../io/compress/CompressionParameters.java | 9 +- .../locator/AbstractReplicationStrategy.java | 24 +-- .../cassandra/schema/LegacySchemaTables.java | 178 ++++++++----------- .../org/apache/cassandra/tracing/Tracing.java | 5 - .../org/apache/cassandra/cql3/CQLTester.java | 73 ++------ .../cassandra/cql3/ThriftCompatibilityTest.java | 13 +- 22 files changed, 187 insertions(+), 451 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index f5a10ee..41bdba9 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 3.0 + * Make CassandraException unchecked, extend RuntimeException (CASSANDRA-8560) * Support direct buffer decompression for reads (CASSANDRA-8464) * DirectByteBuffer compatible LZ4 methods (CASSANDRA-7039) * Add role based access control (CASSANDRA-7653) http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/auth/CassandraAuthorizer.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/auth/CassandraAuthorizer.java b/src/java/org/apache/cassandra/auth/CassandraAuthorizer.java index 6239bc4..1d672b3 100644 --- a/src/java/org/apache/cassandra/auth/CassandraAuthorizer.java +++ b/src/java/org/apache/cassandra/auth/CassandraAuthorizer.java @@ -369,18 +369,11 @@ public class CassandraAuthorizer implements IAuthorizer private SelectStatement prepare(String entityname, String permissionsTable) { - try - { - String query = String.format("SELECT permissions FROM %s.%s WHERE %s = ? AND resource = ?", - AuthKeyspace.NAME, - permissionsTable, - entityname); - return (SelectStatement) QueryProcessor.getStatement(query, ClientState.forInternalCalls()).statement; - } - catch (RequestValidationException e) - { - throw new AssertionError(e); - } + String query = String.format("SELECT permissions FROM %s.%s WHERE %s = ? AND resource = ?", + AuthKeyspace.NAME, + permissionsTable, + entityname); + return (SelectStatement) QueryProcessor.getStatement(query, ClientState.forInternalCalls()).statement; } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java b/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java index 14a6ecf..2ab2316 100644 --- a/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java +++ b/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java @@ -140,18 +140,10 @@ public class PasswordAuthenticator implements IAuthenticator private AuthenticatedUser doAuthenticate(String username, String password, SelectStatement authenticationStatement) throws RequestExecutionException, AuthenticationException { - UntypedResultSet result; - try - { - ResultMessage.Rows rows = authenticationStatement.execute(QueryState.forInternalCalls(), - QueryOptions.forInternalCalls(consistencyForRole(username), - Lists.newArrayList(ByteBufferUtil.bytes(username)))); - result = UntypedResultSet.create(rows.result); - } - catch (RequestValidationException e) - { - throw new AssertionError(e); // not supposed to happen - } + ResultMessage.Rows rows = authenticationStatement.execute(QueryState.forInternalCalls(), + QueryOptions.forInternalCalls(consistencyForRole(username), + Lists.newArrayList(ByteBufferUtil.bytes(username)))); + UntypedResultSet result = UntypedResultSet.create(rows.result); if ((result.isEmpty() || !result.one().has(SALTED_HASH)) || !BCrypt.checkpw(password, result.one().getString(SALTED_HASH))) throw new AuthenticationException("Username and/or password are incorrect"); @@ -161,14 +153,7 @@ public class PasswordAuthenticator implements IAuthenticator private SelectStatement prepare(String query) { - try - { - return (SelectStatement) QueryProcessor.getStatement(query, ClientState.forInternalCalls()).statement; - } - catch (RequestValidationException e) - { - throw new AssertionError(e); - } + return (SelectStatement) QueryProcessor.getStatement(query, ClientState.forInternalCalls()).statement; } private class PlainTextSaslAuthenticator implements SaslNegotiator http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/client/RingCache.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/client/RingCache.java b/src/java/org/apache/cassandra/client/RingCache.java index 5865cd0..1a9ff0b 100644 --- a/src/java/org/apache/cassandra/client/RingCache.java +++ b/src/java/org/apache/cassandra/client/RingCache.java @@ -88,7 +88,7 @@ public class RingCache } } } - catch (InvalidRequestException | IOException e) + catch (IOException e) { throw new RuntimeException(e); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/config/CFMetaData.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/config/CFMetaData.java b/src/java/org/apache/cassandra/config/CFMetaData.java index cb176f2..138acac 100644 --- a/src/java/org/apache/cassandra/config/CFMetaData.java +++ b/src/java/org/apache/cassandra/config/CFMetaData.java @@ -291,19 +291,12 @@ public final class CFMetaData public static CFMetaData compile(String cql, String keyspace) { - try - { - CFStatement parsed = (CFStatement)QueryProcessor.parseStatement(cql); - parsed.prepareKeyspace(keyspace); - CreateTableStatement statement = (CreateTableStatement) parsed.prepare().statement; - CFMetaData cfm = newSystemMetadata(keyspace, statement.columnFamily(), "", statement.comparator); - statement.applyPropertiesTo(cfm); - return cfm.rebuild(); - } - catch (RequestValidationException e) - { - throw new RuntimeException(e); - } + CFStatement parsed = (CFStatement)QueryProcessor.parseStatement(cql); + parsed.prepareKeyspace(keyspace); + CreateTableStatement statement = (CreateTableStatement) parsed.prepare().statement; + CFMetaData cfm = newSystemMetadata(keyspace, statement.columnFamily(), "", statement.comparator); + statement.applyPropertiesTo(cfm); + return cfm.rebuild(); } /** @@ -730,14 +723,7 @@ public final class CFMetaData */ public boolean reload() { - try - { - return apply(LegacySchemaTables.createTableFromName(ksName, cfName)); - } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } + return apply(LegacySchemaTables.createTableFromName(ksName, cfName)); } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/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 f746a85..3821e99 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -31,6 +31,7 @@ import com.googlecode.concurrentlinkedhashmap.EntryWeigher; import com.googlecode.concurrentlinkedhashmap.EvictionListener; import org.antlr.runtime.*; +import org.apache.cassandra.exceptions.CassandraException; import org.apache.cassandra.service.MigrationListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -73,7 +74,7 @@ public class QueryProcessor implements QueryHandler private static final MemoryMeter meter = new MemoryMeter().withGuessing(MemoryMeter.Guess.FALLBACK_BEST).ignoreKnownSingletons(); private static final long MAX_CACHE_PREPARED_MEMORY = Runtime.getRuntime().maxMemory() / 256; - private static EntryWeigher<MD5Digest, ParsedStatement.Prepared> cqlMemoryUsageWeigher = new EntryWeigher<MD5Digest, ParsedStatement.Prepared>() + private static final EntryWeigher<MD5Digest, ParsedStatement.Prepared> cqlMemoryUsageWeigher = new EntryWeigher<MD5Digest, ParsedStatement.Prepared>() { @Override public int weightOf(MD5Digest key, ParsedStatement.Prepared value) @@ -82,7 +83,7 @@ public class QueryProcessor implements QueryHandler } }; - private static EntryWeigher<Integer, ParsedStatement.Prepared> thriftMemoryUsageWeigher = new EntryWeigher<Integer, ParsedStatement.Prepared>() + private static final EntryWeigher<Integer, ParsedStatement.Prepared> thriftMemoryUsageWeigher = new EntryWeigher<Integer, ParsedStatement.Prepared>() { @Override public int weightOf(Integer key, ParsedStatement.Prepared value) @@ -159,14 +160,7 @@ public class QueryProcessor implements QueryHandler InternalStateInstance() { ClientState state = ClientState.forInternalCalls(); - try - { - state.setKeyspace(SystemKeyspace.NAME); - } - catch (InvalidRequestException e) - { - throw new RuntimeException(); - } + state.setKeyspace(SystemKeyspace.NAME); this.queryState = new QueryState(state); } } @@ -268,18 +262,11 @@ public class QueryProcessor implements QueryHandler public static UntypedResultSet process(String query, ConsistencyLevel cl) throws RequestExecutionException { - try - { - ResultMessage result = instance.process(query, QueryState.forInternalCalls(), QueryOptions.forInternalCalls(cl, Collections.<ByteBuffer>emptyList())); - if (result instanceof ResultMessage.Rows) - return UntypedResultSet.create(((ResultMessage.Rows)result).result); - else - return null; - } - catch (RequestValidationException e) - { - throw new RuntimeException(e); - } + ResultMessage result = instance.process(query, QueryState.forInternalCalls(), QueryOptions.forInternalCalls(cl, Collections.<ByteBuffer>emptyList())); + if (result instanceof ResultMessage.Rows) + return UntypedResultSet.create(((ResultMessage.Rows)result).result); + else + return null; } private static QueryOptions makeInternalOptions(ParsedStatement.Prepared prepared, Object[] values) @@ -312,41 +299,23 @@ public class QueryProcessor implements QueryHandler public static UntypedResultSet executeInternal(String query, Object... values) { - try - { - ParsedStatement.Prepared prepared = prepareInternal(query); - ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); - if (result instanceof ResultMessage.Rows) - return UntypedResultSet.create(((ResultMessage.Rows)result).result); - else - return null; - } - catch (RequestExecutionException e) - { - throw new RuntimeException(e); - } - catch (RequestValidationException e) - { - throw new RuntimeException("Error validating " + query, e); - } + ParsedStatement.Prepared prepared = prepareInternal(query); + ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); + if (result instanceof ResultMessage.Rows) + return UntypedResultSet.create(((ResultMessage.Rows)result).result); + else + return null; } public static UntypedResultSet executeInternalWithPaging(String query, int pageSize, Object... values) { - try - { - ParsedStatement.Prepared prepared = prepareInternal(query); - if (!(prepared.statement instanceof SelectStatement)) - throw new IllegalArgumentException("Only SELECTs can be paged"); + ParsedStatement.Prepared prepared = prepareInternal(query); + if (!(prepared.statement instanceof SelectStatement)) + throw new IllegalArgumentException("Only SELECTs can be paged"); - SelectStatement select = (SelectStatement)prepared.statement; - QueryPager pager = QueryPagers.localPager(select.getPageableCommand(makeInternalOptions(prepared, values))); - return UntypedResultSet.create(select, pager, pageSize); - } - catch (RequestValidationException e) - { - throw new RuntimeException("Error validating query" + e); - } + SelectStatement select = (SelectStatement)prepared.statement; + QueryPager pager = QueryPagers.localPager(select.getPageableCommand(makeInternalOptions(prepared, values))); + return UntypedResultSet.create(select, pager, pageSize); } /** @@ -355,24 +324,13 @@ public class QueryProcessor implements QueryHandler */ public static UntypedResultSet executeOnceInternal(String query, Object... values) { - try - { - ParsedStatement.Prepared prepared = parseStatement(query, internalQueryState()); - prepared.statement.validate(internalQueryState().getClientState()); - ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); - if (result instanceof ResultMessage.Rows) - return UntypedResultSet.create(((ResultMessage.Rows)result).result); - else - return null; - } - catch (RequestExecutionException e) - { - throw new RuntimeException(e); - } - catch (RequestValidationException e) - { - throw new RuntimeException("Error validating query " + query, e); - } + ParsedStatement.Prepared prepared = parseStatement(query, internalQueryState()); + prepared.statement.validate(internalQueryState().getClientState()); + ResultMessage result = prepared.statement.executeInternal(internalQueryState(), makeInternalOptions(prepared, values)); + if (result instanceof ResultMessage.Rows) + return UntypedResultSet.create(((ResultMessage.Rows)result).result); + else + return null; } public static UntypedResultSet resultify(String query, Row row) @@ -382,27 +340,18 @@ public class QueryProcessor implements QueryHandler public static UntypedResultSet resultify(String query, List<Row> rows) { - try - { - SelectStatement ss = (SelectStatement) getStatement(query, null).statement; - ResultSet cqlRows = ss.process(rows); - return UntypedResultSet.create(cqlRows); - } - catch (RequestValidationException e) - { - throw new AssertionError(e); - } + SelectStatement ss = (SelectStatement) getStatement(query, null).statement; + ResultSet cqlRows = ss.process(rows); + return UntypedResultSet.create(cqlRows); } public ResultMessage.Prepared prepare(String queryString, QueryState queryState) - throws RequestValidationException { ClientState cState = queryState.getClientState(); return prepare(queryString, cState, cState instanceof ThriftClientState); } public static ResultMessage.Prepared prepare(String queryString, ClientState clientState, boolean forThrift) - throws RequestValidationException { ResultMessage.Prepared existing = getStoredPreparedStatement(queryString, clientState.getRawKeyspace(), forThrift); if (existing != null) @@ -541,6 +490,10 @@ public class QueryProcessor implements QueryHandler return statement; } + catch (CassandraException ce) + { + throw ce; + } catch (RuntimeException re) { logger.error(String.format("The statement: [%s] could not be parsed.", queryStr), re); http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/cql3/TypeCast.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/TypeCast.java b/src/java/org/apache/cassandra/cql3/TypeCast.java index 10b040e..561a158 100644 --- a/src/java/org/apache/cassandra/cql3/TypeCast.java +++ b/src/java/org/apache/cassandra/cql3/TypeCast.java @@ -49,20 +49,13 @@ public class TypeCast implements Term.Raw public AssignmentTestable.TestResult testAssignment(String keyspace, ColumnSpecification receiver) { - try - { - AbstractType<?> castedType = type.prepare(keyspace).getType(); - if (receiver.type.equals(castedType)) - return AssignmentTestable.TestResult.EXACT_MATCH; - else if (receiver.type.isValueCompatibleWith(castedType)) - return AssignmentTestable.TestResult.WEAKLY_ASSIGNABLE; - else - return AssignmentTestable.TestResult.NOT_ASSIGNABLE; - } - catch (InvalidRequestException e) - { - throw new AssertionError(); - } + AbstractType<?> castedType = type.prepare(keyspace).getType(); + if (receiver.type.equals(castedType)) + return AssignmentTestable.TestResult.EXACT_MATCH; + else if (receiver.type.isValueCompatibleWith(castedType)) + return AssignmentTestable.TestResult.WEAKLY_ASSIGNABLE; + else + return AssignmentTestable.TestResult.NOT_ASSIGNABLE; } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/cql3/UntypedResultSet.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/UntypedResultSet.java b/src/java/org/apache/cassandra/cql3/UntypedResultSet.java index 9d5a5f1..64fd60d 100644 --- a/src/java/org/apache/cassandra/cql3/UntypedResultSet.java +++ b/src/java/org/apache/cassandra/cql3/UntypedResultSet.java @@ -175,17 +175,13 @@ public abstract class UntypedResultSet implements Iterable<UntypedResultSet.Row> protected Row computeNext() { - try { - while (currentPage == null || !currentPage.hasNext()) - { - if (pager.isExhausted()) - return endOfData(); - currentPage = select.process(pager.fetchPage(pageSize)).rows.iterator(); - } - return new Row(metadata, currentPage.next()); - } catch (RequestValidationException | RequestExecutionException e) { - throw new RuntimeException(e); + while (currentPage == null || !currentPage.hasNext()) + { + if (pager.isExhausted()) + return endOfData(); + currentPage = select.process(pager.fetchPage(pageSize)).rows.iterator(); } + return new Row(metadata, currentPage.next()); } }; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java index c8c2474..6b32c95 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java @@ -65,19 +65,12 @@ public class CreateTableStatement extends SchemaAlteringStatement this.ifNotExists = ifNotExists; this.staticColumns = staticColumns; - try - { - if (!this.properties.hasProperty(CFPropDefs.KW_COMPRESSION) && CFMetaData.DEFAULT_COMPRESSOR != null) - this.properties.addProperty(CFPropDefs.KW_COMPRESSION, - new HashMap<String, String>() - {{ - put(CompressionParameters.SSTABLE_COMPRESSION, CFMetaData.DEFAULT_COMPRESSOR); - }}); - } - catch (SyntaxException e) - { - throw new AssertionError(e); - } + if (!this.properties.hasProperty(CFPropDefs.KW_COMPRESSION) && CFMetaData.DEFAULT_COMPRESSOR != null) + this.properties.addProperty(CFPropDefs.KW_COMPRESSION, + new HashMap<String, String>() + {{ + put(CompressionParameters.SSTABLE_COMPRESSION, CFMetaData.DEFAULT_COMPRESSOR); + }}); } public void checkAccess(ClientState state) throws UnauthorizedException, InvalidRequestException http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java b/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java index 018d244..b0d67ac 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java @@ -87,18 +87,11 @@ public abstract class SchemaAlteringStatement extends CFStatement implements CQL public ResultMessage executeInternal(QueryState state, QueryOptions options) { - try - { - boolean didChangeSchema = announceMigration(true); - if (!didChangeSchema) - return new ResultMessage.Void(); + boolean didChangeSchema = announceMigration(true); + if (!didChangeSchema) + return new ResultMessage.Void(); - Event.SchemaChange ce = changeEvent(); - return ce == null ? new ResultMessage.Void() : new ResultMessage.SchemaChange(ce); - } - catch (RequestValidationException e) - { - throw new RuntimeException(e); - } + Event.SchemaChange ce = changeEvent(); + return ce == null ? new ResultMessage.Void() : new ResultMessage.SchemaChange(ce); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java b/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java index ef1c4a4..16c531c 100644 --- a/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java @@ -62,15 +62,7 @@ public class TruncateStatement extends CFStatement implements CQLStatement { StorageProxy.truncateBlocking(keyspace(), columnFamily()); } - catch (UnavailableException e) - { - throw new TruncateException(e); - } - catch (TimeoutException e) - { - throw new TruncateException(e); - } - catch (IOException e) + catch (UnavailableException | TimeoutException | IOException e) { throw new TruncateException(e); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java index 10a7ce3..12cff79 100644 --- a/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java +++ b/src/java/org/apache/cassandra/db/index/SecondaryIndexManager.java @@ -50,7 +50,6 @@ import org.apache.cassandra.db.SystemKeyspace; import org.apache.cassandra.db.compaction.CompactionManager; import org.apache.cassandra.db.composites.CellName; import org.apache.cassandra.db.filter.ExtendedFilter; -import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.io.sstable.ReducingKeyIterator; import org.apache.cassandra.io.sstable.format.SSTableReader; @@ -274,15 +273,7 @@ public class SecondaryIndexManager assert cdef.getIndexType() != null; - SecondaryIndex index; - try - { - index = SecondaryIndex.createInstance(baseCfs, cdef); - } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } + SecondaryIndex index = SecondaryIndex.createInstance(baseCfs, cdef); // Keep a single instance of the index per-cf for row level indexes // since we want all columns to be under the index http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java index d3b0b90..c4514d7 100644 --- a/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java +++ b/src/java/org/apache/cassandra/db/marshal/DynamicCompositeType.java @@ -105,14 +105,6 @@ public class DynamicCompositeType extends AbstractCompositeType { throw new RuntimeException(e); } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } - catch (SyntaxException e) - { - throw new RuntimeException(e); - } } protected AbstractType<?> getComparator(int i, ByteBuffer bb) @@ -180,14 +172,6 @@ public class DynamicCompositeType extends AbstractCompositeType { throw new RuntimeException(e); } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } - catch (SyntaxException e) - { - throw new RuntimeException(e); - } } protected ParsedComparator parseComparator(int i, String part) @@ -304,11 +288,7 @@ public class DynamicCompositeType extends AbstractCompositeType } type = t; } - catch (SyntaxException e) - { - throw new IllegalArgumentException(e); - } - catch (ConfigurationException e) + catch (SyntaxException | ConfigurationException e) { throw new IllegalArgumentException(e); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/exceptions/CassandraException.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/exceptions/CassandraException.java b/src/java/org/apache/cassandra/exceptions/CassandraException.java index aaa8055..58521df 100644 --- a/src/java/org/apache/cassandra/exceptions/CassandraException.java +++ b/src/java/org/apache/cassandra/exceptions/CassandraException.java @@ -17,7 +17,7 @@ */ package org.apache.cassandra.exceptions; -public abstract class CassandraException extends Exception implements TransportException +public abstract class CassandraException extends RuntimeException implements TransportException { private final ExceptionCode code; http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/hadoop/ConfigHelper.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/hadoop/ConfigHelper.java b/src/java/org/apache/cassandra/hadoop/ConfigHelper.java index 6b3c9c5..69504b1 100644 --- a/src/java/org/apache/cassandra/hadoop/ConfigHelper.java +++ b/src/java/org/apache/cassandra/hadoop/ConfigHelper.java @@ -417,14 +417,7 @@ public class ConfigHelper public static IPartitioner getInputPartitioner(Configuration conf) { - try - { - return FBUtilities.newPartitioner(conf.get(INPUT_PARTITIONER_CONFIG)); - } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } + return FBUtilities.newPartitioner(conf.get(INPUT_PARTITIONER_CONFIG)); } public static int getOutputRpcPort(Configuration conf) @@ -454,14 +447,7 @@ public class ConfigHelper public static IPartitioner getOutputPartitioner(Configuration conf) { - try - { - return FBUtilities.newPartitioner(conf.get(OUTPUT_PARTITIONER_CONFIG)); - } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } + return FBUtilities.newPartitioner(conf.get(OUTPUT_PARTITIONER_CONFIG)); } public static String getOutputCompressionClass(Configuration conf) @@ -507,11 +493,7 @@ public class ConfigHelper options.put(CompressionParameters.SSTABLE_COMPRESSION, getOutputCompressionClass(conf)); options.put(CompressionParameters.CHUNK_LENGTH_KB, getOutputCompressionChunkLength(conf)); - try { - return CompressionParameters.create(options); - } catch (ConfigurationException e) { - throw new RuntimeException(e); - } + return CompressionParameters.create(options); } public static boolean getOutputLocalDCOnly(Configuration conf) http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java b/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java index 447c8ce..45f16f2 100644 --- a/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java +++ b/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java @@ -516,10 +516,6 @@ public abstract class AbstractCassandraStorage extends LoadFunc implements Store logger.error("Authentication exception: invalid username and/or password"); throw new IOException(e); } - catch (AuthorizationException e) - { - throw new AssertionError(e); // never actually throws AuthorizationException. - } } // compose the CfDef for the columfamily http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/io/compress/CompressionParameters.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/io/compress/CompressionParameters.java b/src/java/org/apache/cassandra/io/compress/CompressionParameters.java index 0bc2916..88ca396 100644 --- a/src/java/org/apache/cassandra/io/compress/CompressionParameters.java +++ b/src/java/org/apache/cassandra/io/compress/CompressionParameters.java @@ -93,14 +93,7 @@ public class CompressionParameters public CompressionParameters copy() { - try - { - return new CompressionParameters(sstableCompressor, chunkLength, new HashMap<>(otherOptions)); - } - catch (ConfigurationException e) - { - throw new AssertionError(e); // can't happen at this point. - } + return new CompressionParameters(sstableCompressor, chunkLength, new HashMap<>(otherOptions)); } public void setLiveMetadata(final CFMetaData liveMetadata) http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java index 754a96b..059f21a 100644 --- a/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java +++ b/src/java/org/apache/cassandra/locator/AbstractReplicationStrategy.java @@ -251,28 +251,20 @@ public abstract class AbstractReplicationStrategy IEndpointSnitch snitch, Map<String, String> strategyOptions) { + AbstractReplicationStrategy strategy = createInternal(keyspaceName, strategyClass, tokenMetadata, snitch, strategyOptions); + + // Because we used to not properly validate unrecognized options, we only log a warning if we find one. try { - AbstractReplicationStrategy strategy = createInternal(keyspaceName, strategyClass, tokenMetadata, snitch, strategyOptions); - - // Because we used to not properly validate unrecognized options, we only log a warning if we find one. - try - { - strategy.validateExpectedOptions(); - } - catch (ConfigurationException e) - { - logger.warn("Ignoring {}", e.getMessage()); - } - - strategy.validateOptions(); - return strategy; + strategy.validateExpectedOptions(); } catch (ConfigurationException e) { - // If that happens at this point, there is nothing we can do about it. - throw new RuntimeException(e); + logger.warn("Ignoring {}", e.getMessage()); } + + strategy.validateOptions(); + return strategy; } public static void validateReplicationStrategy(String keyspaceName, http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/schema/LegacySchemaTables.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/schema/LegacySchemaTables.java b/src/java/org/apache/cassandra/schema/LegacySchemaTables.java index 4d06863..51040a1 100644 --- a/src/java/org/apache/cassandra/schema/LegacySchemaTables.java +++ b/src/java/org/apache/cassandra/schema/LegacySchemaTables.java @@ -47,7 +47,6 @@ import org.apache.cassandra.dht.Range; import org.apache.cassandra.dht.Token; import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.cassandra.exceptions.InvalidRequestException; -import org.apache.cassandra.exceptions.SyntaxException; import org.apache.cassandra.io.compress.CompressionParameters; import org.apache.cassandra.locator.AbstractReplicationStrategy; import org.apache.cassandra.service.StorageService; @@ -752,17 +751,10 @@ public class LegacySchemaTables { String query = String.format("SELECT * FROM %s.%s", SystemKeyspace.NAME, KEYSPACES); UntypedResultSet.Row row = QueryProcessor.resultify(query, partition).one(); - try - { - return new KSMetaData(row.getString("keyspace_name"), - AbstractReplicationStrategy.getClass(row.getString("strategy_class")), - fromJsonMap(row.getString("strategy_options")), - row.getBoolean("durable_writes")); - } - catch (ConfigurationException e) - { - throw new RuntimeException(e); - } + return new KSMetaData(row.getString("keyspace_name"), + AbstractReplicationStrategy.getClass(row.getString("strategy_class")), + fromJsonMap(row.getString("strategy_options")), + row.getBoolean("durable_writes")); } /* @@ -1040,15 +1032,8 @@ public class LegacySchemaTables CFMetaData cfm = createTableFromTableRowAndColumnsPartition(result, serializedColumns); Row serializedTriggers = readSchemaPartitionForTable(TRIGGERS, ksName, cfName); - try - { - for (TriggerDefinition trigger : createTriggersFromTriggersPartition(serializedTriggers)) - cfm.addTriggerDefinition(trigger); - } - catch (InvalidRequestException e) - { - throw new RuntimeException(e); - } + for (TriggerDefinition trigger : createTriggersFromTriggersPartition(serializedTriggers)) + cfm.addTriggerDefinition(trigger); return cfm; } @@ -1056,80 +1041,73 @@ public class LegacySchemaTables public static CFMetaData createTableFromTableRowAndColumnRows(UntypedResultSet.Row result, UntypedResultSet serializedColumnDefinitions) { - try - { - String ksName = result.getString("keyspace_name"); - String cfName = result.getString("columnfamily_name"); - - AbstractType<?> rawComparator = TypeParser.parse(result.getString("comparator")); - AbstractType<?> subComparator = result.has("subcomparator") ? TypeParser.parse(result.getString("subcomparator")) : null; - ColumnFamilyType cfType = ColumnFamilyType.valueOf(result.getString("type")); - - AbstractType<?> fullRawComparator = CFMetaData.makeRawAbstractType(rawComparator, subComparator); - - List<ColumnDefinition> columnDefs = createColumnsFromColumnRows(serializedColumnDefinitions, - ksName, - cfName, - fullRawComparator, - cfType == ColumnFamilyType.Super); - - boolean isDense = result.has("is_dense") - ? result.getBoolean("is_dense") - : CFMetaData.calculateIsDense(fullRawComparator, columnDefs); - - CellNameType comparator = CellNames.fromAbstractType(fullRawComparator, isDense); - - // if we are upgrading, we use id generated from names initially - UUID cfId = result.has("cf_id") - ? result.getUUID("cf_id") - : CFMetaData.generateLegacyCfId(ksName, cfName); - - CFMetaData cfm = new CFMetaData(ksName, cfName, cfType, comparator, cfId); - cfm.isDense(isDense); - - cfm.readRepairChance(result.getDouble("read_repair_chance")); - cfm.dcLocalReadRepairChance(result.getDouble("local_read_repair_chance")); - cfm.gcGraceSeconds(result.getInt("gc_grace_seconds")); - cfm.defaultValidator(TypeParser.parse(result.getString("default_validator"))); - cfm.keyValidator(TypeParser.parse(result.getString("key_validator"))); - cfm.minCompactionThreshold(result.getInt("min_compaction_threshold")); - cfm.maxCompactionThreshold(result.getInt("max_compaction_threshold")); - if (result.has("comment")) - cfm.comment(result.getString("comment")); - if (result.has("memtable_flush_period_in_ms")) - cfm.memtableFlushPeriod(result.getInt("memtable_flush_period_in_ms")); - cfm.caching(CachingOptions.fromString(result.getString("caching"))); - if (result.has("default_time_to_live")) - cfm.defaultTimeToLive(result.getInt("default_time_to_live")); - if (result.has("speculative_retry")) - cfm.speculativeRetry(CFMetaData.SpeculativeRetry.fromString(result.getString("speculative_retry"))); - cfm.compactionStrategyClass(CFMetaData.createCompactionStrategy(result.getString("compaction_strategy_class"))); - cfm.compressionParameters(CompressionParameters.create(fromJsonMap(result.getString("compression_parameters")))); - cfm.compactionStrategyOptions(fromJsonMap(result.getString("compaction_strategy_options"))); - - if (result.has("min_index_interval")) - cfm.minIndexInterval(result.getInt("min_index_interval")); - - if (result.has("max_index_interval")) - cfm.maxIndexInterval(result.getInt("max_index_interval")); - - if (result.has("bloom_filter_fp_chance")) - cfm.bloomFilterFpChance(result.getDouble("bloom_filter_fp_chance")); - else - cfm.bloomFilterFpChance(cfm.getBloomFilterFpChance()); - - if (result.has("dropped_columns")) - cfm.droppedColumns(convertDroppedColumns(result.getMap("dropped_columns", UTF8Type.instance, LongType.instance))); - - for (ColumnDefinition cd : columnDefs) - cfm.addOrReplaceColumnDefinition(cd); - - return cfm.rebuild(); - } - catch (SyntaxException | ConfigurationException e) - { - throw new RuntimeException(e); - } + String ksName = result.getString("keyspace_name"); + String cfName = result.getString("columnfamily_name"); + + AbstractType<?> rawComparator = TypeParser.parse(result.getString("comparator")); + AbstractType<?> subComparator = result.has("subcomparator") ? TypeParser.parse(result.getString("subcomparator")) : null; + ColumnFamilyType cfType = ColumnFamilyType.valueOf(result.getString("type")); + + AbstractType<?> fullRawComparator = CFMetaData.makeRawAbstractType(rawComparator, subComparator); + + List<ColumnDefinition> columnDefs = createColumnsFromColumnRows(serializedColumnDefinitions, + ksName, + cfName, + fullRawComparator, + cfType == ColumnFamilyType.Super); + + boolean isDense = result.has("is_dense") + ? result.getBoolean("is_dense") + : CFMetaData.calculateIsDense(fullRawComparator, columnDefs); + + CellNameType comparator = CellNames.fromAbstractType(fullRawComparator, isDense); + + // if we are upgrading, we use id generated from names initially + UUID cfId = result.has("cf_id") + ? result.getUUID("cf_id") + : CFMetaData.generateLegacyCfId(ksName, cfName); + + CFMetaData cfm = new CFMetaData(ksName, cfName, cfType, comparator, cfId); + cfm.isDense(isDense); + + cfm.readRepairChance(result.getDouble("read_repair_chance")); + cfm.dcLocalReadRepairChance(result.getDouble("local_read_repair_chance")); + cfm.gcGraceSeconds(result.getInt("gc_grace_seconds")); + cfm.defaultValidator(TypeParser.parse(result.getString("default_validator"))); + cfm.keyValidator(TypeParser.parse(result.getString("key_validator"))); + cfm.minCompactionThreshold(result.getInt("min_compaction_threshold")); + cfm.maxCompactionThreshold(result.getInt("max_compaction_threshold")); + if (result.has("comment")) + cfm.comment(result.getString("comment")); + if (result.has("memtable_flush_period_in_ms")) + cfm.memtableFlushPeriod(result.getInt("memtable_flush_period_in_ms")); + cfm.caching(CachingOptions.fromString(result.getString("caching"))); + if (result.has("default_time_to_live")) + cfm.defaultTimeToLive(result.getInt("default_time_to_live")); + if (result.has("speculative_retry")) + cfm.speculativeRetry(CFMetaData.SpeculativeRetry.fromString(result.getString("speculative_retry"))); + cfm.compactionStrategyClass(CFMetaData.createCompactionStrategy(result.getString("compaction_strategy_class"))); + cfm.compressionParameters(CompressionParameters.create(fromJsonMap(result.getString("compression_parameters")))); + cfm.compactionStrategyOptions(fromJsonMap(result.getString("compaction_strategy_options"))); + + if (result.has("min_index_interval")) + cfm.minIndexInterval(result.getInt("min_index_interval")); + + if (result.has("max_index_interval")) + cfm.maxIndexInterval(result.getInt("max_index_interval")); + + if (result.has("bloom_filter_fp_chance")) + cfm.bloomFilterFpChance(result.getDouble("bloom_filter_fp_chance")); + else + cfm.bloomFilterFpChance(cfm.getBloomFilterFpChance()); + + if (result.has("dropped_columns")) + cfm.droppedColumns(convertDroppedColumns(result.getMap("dropped_columns", UTF8Type.instance, LongType.instance))); + + for (ColumnDefinition cd : columnDefs) + cfm.addOrReplaceColumnDefinition(cd); + + return cfm.rebuild(); } private static Map<ColumnIdentifier, Long> convertDroppedColumns(Map<String, Long> raw) @@ -1467,15 +1445,7 @@ public class LegacySchemaTables private static AbstractType<?> parseType(String str) { - try - { - return TypeParser.parse(str); - } - catch (SyntaxException | ConfigurationException e) - { - // We only use this when reading the schema where we shouldn't get an error - throw new RuntimeException(e); - } + return TypeParser.parse(str); } // We allow method overloads, so a function is not uniquely identified by its name only, but http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/src/java/org/apache/cassandra/tracing/Tracing.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/tracing/Tracing.java b/src/java/org/apache/cassandra/tracing/Tracing.java index d0f496e..930f024 100644 --- a/src/java/org/apache/cassandra/tracing/Tracing.java +++ b/src/java/org/apache/cassandra/tracing/Tracing.java @@ -308,11 +308,6 @@ public class Tracing { StorageProxy.mutate(Arrays.asList(mutation), ConsistencyLevel.ANY); } - catch (UnavailableException | WriteTimeoutException e) - { - // should never happen; ANY does not throw UAE or WTE - throw new AssertionError(e); - } catch (OverloadedException e) { logger.warn("Too many nodes are overloaded to save trace events"); http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/test/unit/org/apache/cassandra/cql3/CQLTester.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/CQLTester.java b/test/unit/org/apache/cassandra/cql3/CQLTester.java index 5611ac6..b01ca9e 100644 --- a/test/unit/org/apache/cassandra/cql3/CQLTester.java +++ b/test/unit/org/apache/cassandra/cql3/CQLTester.java @@ -366,14 +366,7 @@ public abstract class CQLTester tables.add(currentTable); String fullQuery = formatQuery(query); logger.info(fullQuery); - try - { - QueryProcessor.executeOnceInternal(fullQuery); - } - catch (RuntimeException ex) - { - throw ex.getCause(); - } + QueryProcessor.executeOnceInternal(fullQuery); } protected void alterTable(String query) @@ -387,14 +380,7 @@ public abstract class CQLTester { String fullQuery = formatQuery(query); logger.info(fullQuery); - try - { - QueryProcessor.executeOnceInternal(fullQuery); - } - catch (RuntimeException ex) - { - throw ex.getCause(); - } + QueryProcessor.executeOnceInternal(fullQuery); } protected void dropTable(String query) @@ -415,14 +401,7 @@ public abstract class CQLTester { String fullQuery = formatQuery(query); logger.info(fullQuery); - try - { - QueryProcessor.executeOnceInternal(fullQuery); - } - catch (RuntimeException ex) - { - throw ex.getCause(); - } + QueryProcessor.executeOnceInternal(fullQuery); } protected void dropIndex(String query) throws Throwable @@ -486,32 +465,23 @@ public abstract class CQLTester protected UntypedResultSet execute(String query, Object... values) throws Throwable { - try - { - query = formatQuery(query); + query = formatQuery(query); - UntypedResultSet rs; - if (usePrepared) - { - logger.info("Executing: {} with values {}", query, formatAllValues(values)); - rs = QueryProcessor.executeOnceInternal(query, transformValues(values)); - } - else - { - query = replaceValues(query, values); - logger.info("Executing: {}", query); - rs = QueryProcessor.executeOnceInternal(query); - } - if (rs != null) - logger.info("Got {} rows", rs.size()); - return rs; + UntypedResultSet rs; + if (usePrepared) + { + logger.info("Executing: {} with values {}", query, formatAllValues(values)); + rs = QueryProcessor.executeOnceInternal(query, transformValues(values)); } - catch (RuntimeException e) + else { - Throwable cause = e.getCause() != null ? e.getCause() : e; - logger.info("Got error: {}", cause.getMessage() == null ? cause.toString() : cause.getMessage()); - throw cause; + query = replaceValues(query, values); + logger.info("Executing: {}", query); + rs = QueryProcessor.executeOnceInternal(query); } + if (rs != null) + logger.info("Got {} rows", rs.size()); + return rs; } protected void assertRowsNet(int protocolVersion, ResultSet result, Object[]... rows) @@ -660,16 +630,7 @@ public abstract class CQLTester { try { - try - { - execute(query, values); - } - catch (RuntimeException e) - { - Throwable cause = e.getCause(); - if (cause instanceof InvalidRequestException) - throw cause; - } + execute(query, values); String q = USE_PREPARED_VALUES ? query + " (values: " + formatAllValues(values) + ")" : replaceValues(query, values); http://git-wip-us.apache.org/repos/asf/cassandra/blob/17624248/test/unit/org/apache/cassandra/cql3/ThriftCompatibilityTest.java ---------------------------------------------------------------------- diff --git a/test/unit/org/apache/cassandra/cql3/ThriftCompatibilityTest.java b/test/unit/org/apache/cassandra/cql3/ThriftCompatibilityTest.java index 88ee688..3125b28 100644 --- a/test/unit/org/apache/cassandra/cql3/ThriftCompatibilityTest.java +++ b/test/unit/org/apache/cassandra/cql3/ThriftCompatibilityTest.java @@ -41,18 +41,9 @@ public class ThriftCompatibilityTest extends SchemaLoader .addColumnDefinition(integerColumn("thriftcompat", "JdbcInteger"))); } - private static UntypedResultSet execute(String query) throws Throwable + private static UntypedResultSet execute(String query) { - try - { - return QueryProcessor.executeInternal(String.format(query)); - } - catch (RuntimeException exc) - { - if (exc.getCause() != null) - throw exc.getCause(); - throw exc; - } + return QueryProcessor.executeInternal(String.format(query)); } /** Test For CASSANDRA-8178 */