You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sn...@apache.org on 2015/12/18 18:15:33 UTC
cassandra git commit: Minor code improvements
Repository: cassandra
Updated Branches:
refs/heads/trunk a0f59dce5 -> 0f5e78078
Minor code improvements
patch by Robert Stupp; reviewed by Stefania for CASSANDRA-10750
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0f5e7807
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0f5e7807
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0f5e7807
Branch: refs/heads/trunk
Commit: 0f5e780781ce3f0cb3732515dacc7e467571a7c9
Parents: a0f59dc
Author: Robert Stupp <sn...@snazy.de>
Authored: Fri Dec 18 09:14:57 2015 -0800
Committer: Robert Stupp <sn...@snazy.de>
Committed: Fri Dec 18 09:14:57 2015 -0800
----------------------------------------------------------------------
.../cassandra/auth/PasswordAuthenticator.java | 4 +-
.../org/apache/cassandra/cql3/CQL3Type.java | 5 -
.../restrictions/PrimaryKeyRestrictionSet.java | 12 --
.../cassandra/cql3/selection/FieldSelector.java | 5 -
.../cql3/statements/BatchStatement.java | 13 +-
.../cql3/statements/ModificationStatement.java | 9 +-
.../apache/cassandra/db/CounterMutation.java | 7 +-
src/java/org/apache/cassandra/db/IMutation.java | 2 +-
.../org/apache/cassandra/db/LegacyLayout.java | 18 +--
src/java/org/apache/cassandra/db/Mutation.java | 7 +-
.../cassandra/db/UnfilteredDeserializer.java | 2 +-
.../db/commitlog/CommitLogReplayer.java | 2 +-
.../db/compaction/CompactionController.java | 5 +-
.../UnfilteredPartitionIterators.java | 6 -
.../apache/cassandra/db/transform/Stack.java | 6 +-
src/java/org/apache/cassandra/dht/Range.java | 8 +-
.../internal/composites/CompositesSearcher.java | 122 +++++++++----------
.../io/sstable/SSTableSimpleIterator.java | 33 ++---
.../io/sstable/format/SSTableReader.java | 2 +-
.../io/util/FileSegmentInputStream.java | 6 -
.../io/util/RebufferingInputStream.java | 12 --
.../locator/NetworkTopologyStrategy.java | 6 -
.../apache/cassandra/metrics/TableMetrics.java | 5 +-
.../cassandra/serializers/AsciiSerializer.java | 2 +-
.../cassandra/serializers/UTF8Serializer.java | 4 +-
.../apache/cassandra/service/CacheService.java | 6 +-
.../apache/cassandra/service/StorageProxy.java | 2 +-
.../apache/cassandra/streaming/StreamPlan.java | 5 +-
.../apache/cassandra/tools/nodetool/Ring.java | 4 +-
.../apache/cassandra/tools/nodetool/Status.java | 4 +-
.../cassandra/utils/HistogramBuilder.java | 7 +-
.../apache/cassandra/utils/IntervalTree.java | 23 ++--
.../apache/cassandra/utils/MergeIterator.java | 3 -
.../org/apache/cassandra/utils/MerkleTree.java | 84 ++++++++-----
.../cassandra/utils/btree/TreeCursor.java | 3 +-
.../org/apache/cassandra/stress/Operation.java | 10 +-
.../operations/predefined/CqlOperation.java | 9 +-
.../predefined/PredefinedOperation.java | 3 +-
.../operations/userdefined/SchemaStatement.java | 9 --
.../userdefined/ValidatingSchemaQuery.java | 17 +--
.../cassandra/stress/util/TimingInterval.java | 3 +-
41 files changed, 223 insertions(+), 272 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/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 0482199..3bee0e3 100644
--- a/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java
+++ b/src/java/org/apache/cassandra/auth/PasswordAuthenticator.java
@@ -213,10 +213,10 @@ public class PasswordAuthenticator implements IAuthenticator
}
}
- if (user == null)
- throw new AuthenticationException("Authentication ID must not be null");
if (pass == null)
throw new AuthenticationException("Password must not be null");
+ if (user == null)
+ throw new AuthenticationException("Authentication ID must not be null");
username = new String(user, StandardCharsets.UTF_8);
password = new String(pass, StandardCharsets.UTF_8);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/cql3/CQL3Type.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CQL3Type.java b/src/java/org/apache/cassandra/cql3/CQL3Type.java
index 4e67346..989fcf8 100644
--- a/src/java/org/apache/cassandra/cql3/CQL3Type.java
+++ b/src/java/org/apache/cassandra/cql3/CQL3Type.java
@@ -815,11 +815,6 @@ public interface CQL3Type
return true;
}
- public boolean isCollection()
- {
- return false;
- }
-
public void freeze() throws InvalidRequestException
{
for (CQL3Type.Raw t : types)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java b/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
index 0730593..d24799a 100644
--- a/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
+++ b/src/java/org/apache/cassandra/cql3/restrictions/PrimaryKeyRestrictionSet.java
@@ -138,24 +138,12 @@ final class PrimaryKeyRestrictionSet extends AbstractPrimaryKeyRestrictions
}
@Override
- public boolean isOnToken()
- {
- return false;
- }
-
- @Override
public boolean isContains()
{
return contains;
}
@Override
- public boolean isMultiColumn()
- {
- return false;
- }
-
- @Override
public Iterable<Function> getFunctions()
{
return restrictions.getFunctions();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java b/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
index 63b6cc6..965a01a 100644
--- a/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
+++ b/src/java/org/apache/cassandra/cql3/selection/FieldSelector.java
@@ -65,11 +65,6 @@ final class FieldSelector extends Selector
};
}
- public boolean isAggregate()
- {
- return false;
- }
-
public void addInput(int protocolVersion, ResultSetBuilder rs) throws InvalidRequestException
{
selected.addInput(protocolVersion, rs);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
index 1f1d507..2701322 100644
--- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
@@ -48,7 +48,7 @@ import static org.apache.cassandra.cql3.statements.RequestValidations.checkFalse
*/
public class BatchStatement implements CQLStatement
{
- public static enum Type
+ public enum Type
{
LOGGED, UNLOGGED, COUNTER
}
@@ -258,7 +258,7 @@ public class BatchStatement implements CQLStatement
/**
* Checks batch size to ensure threshold is met. If not, a warning is logged.
*
- * @param cfs ColumnFamilies that will store the batch's mutations.
+ * @param updates - the batch mutations.
*/
public static void verifyBatchSize(Iterable<PartitionUpdate> updates) throws InvalidRequestException
{
@@ -438,14 +438,7 @@ public class BatchStatement implements CQLStatement
private ResultMessage executeInternalWithoutCondition(QueryState queryState, QueryOptions options) throws RequestValidationException, RequestExecutionException
{
for (IMutation mutation : getMutations(BatchQueryOptions.withoutPerStatementVariables(options), true, queryState.getTimestamp()))
- {
- assert mutation instanceof Mutation || mutation instanceof CounterMutation;
-
- if (mutation instanceof Mutation)
- ((Mutation) mutation).apply();
- else if (mutation instanceof CounterMutation)
- ((CounterMutation) mutation).apply();
- }
+ mutation.apply();
return null;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index 08b8527..ca3b5bc 100644
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@ -550,14 +550,7 @@ public abstract class ModificationStatement implements CQLStatement
public ResultMessage executeInternalWithoutCondition(QueryState queryState, QueryOptions options) throws RequestValidationException, RequestExecutionException
{
for (IMutation mutation : getMutations(options, true, queryState.getTimestamp()))
- {
- assert mutation instanceof Mutation || mutation instanceof CounterMutation;
-
- if (mutation instanceof Mutation)
- ((Mutation) mutation).apply();
- else if (mutation instanceof CounterMutation)
- ((CounterMutation) mutation).apply();
- }
+ mutation.apply();
return null;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/CounterMutation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/CounterMutation.java b/src/java/org/apache/cassandra/db/CounterMutation.java
index 6818513..87ca71a 100644
--- a/src/java/org/apache/cassandra/db/CounterMutation.java
+++ b/src/java/org/apache/cassandra/db/CounterMutation.java
@@ -110,7 +110,7 @@ public class CounterMutation implements IMutation
*
* @return the applied resulting Mutation
*/
- public Mutation apply() throws WriteTimeoutException
+ public Mutation applyCounterMutation() throws WriteTimeoutException
{
Mutation result = new Mutation(getKeyspaceName(), key());
Keyspace keyspace = Keyspace.open(getKeyspaceName());
@@ -132,6 +132,11 @@ public class CounterMutation implements IMutation
}
}
+ public void apply()
+ {
+ applyCounterMutation();
+ }
+
private void grabCounterLocks(Keyspace keyspace, List<Lock> locks) throws WriteTimeoutException
{
long startTime = System.nanoTime();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/IMutation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/IMutation.java b/src/java/org/apache/cassandra/db/IMutation.java
index aad35c3..c734e16 100644
--- a/src/java/org/apache/cassandra/db/IMutation.java
+++ b/src/java/org/apache/cassandra/db/IMutation.java
@@ -17,7 +17,6 @@
*/
package org.apache.cassandra.db;
-import java.nio.ByteBuffer;
import java.util.Collection;
import java.util.UUID;
@@ -25,6 +24,7 @@ import org.apache.cassandra.db.partitions.PartitionUpdate;
public interface IMutation
{
+ public void apply();
public String getKeyspaceName();
public Collection<UUID> getColumnFamilyIds();
public DecoratedKey key();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/LegacyLayout.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/LegacyLayout.java b/src/java/org/apache/cassandra/db/LegacyLayout.java
index 91b7755..95bf0e5 100644
--- a/src/java/org/apache/cassandra/db/LegacyLayout.java
+++ b/src/java/org/apache/cassandra/db/LegacyLayout.java
@@ -652,16 +652,18 @@ public abstract class LegacyLayout
protected LegacyCell computeNext()
{
- if (currentRow.hasNext())
- return currentRow.next();
+ while (true)
+ {
+ if (currentRow.hasNext())
+ return currentRow.next();
- if (!iterator.hasNext())
- return endOfData();
+ if (!iterator.hasNext())
+ return endOfData();
- Pair<LegacyRangeTombstoneList, Iterator<LegacyCell>> row = fromRow(metadata, iterator.next());
- deletions.addAll(row.left);
- currentRow = row.right;
- return computeNext();
+ Pair<LegacyRangeTombstoneList, Iterator<LegacyCell>> row = fromRow(metadata, iterator.next());
+ deletions.addAll(row.left);
+ currentRow = row.right;
+ }
}
};
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/Mutation.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/Mutation.java b/src/java/org/apache/cassandra/db/Mutation.java
index cbc7e17..f165909 100644
--- a/src/java/org/apache/cassandra/db/Mutation.java
+++ b/src/java/org/apache/cassandra/db/Mutation.java
@@ -34,15 +34,12 @@ import org.apache.cassandra.io.util.DataOutputPlus;
import org.apache.cassandra.net.MessageOut;
import org.apache.cassandra.net.MessagingService;
import org.apache.cassandra.utils.ByteBufferUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
// TODO convert this to a Builder pattern instead of encouraging M.add directly,
// which is less-efficient since we have to keep a mutable HashMap around
public class Mutation implements IMutation
{
public static final MutationSerializer serializer = new MutationSerializer();
- private static final Logger logger = LoggerFactory.getLogger(Mutation.class);
public static final String FORWARD_TO = "FWD_TO";
public static final String FORWARD_FROM = "FWD_FRM";
@@ -251,7 +248,7 @@ public class Mutation implements IMutation
buff.append(", modifications=[");
if (shallow)
{
- List<String> cfnames = new ArrayList<String>(modifications.size());
+ List<String> cfnames = new ArrayList<>(modifications.size());
for (UUID cfid : modifications.keySet())
{
CFMetaData cfm = Schema.instance.getCFMetaData(cfid);
@@ -261,7 +258,7 @@ public class Mutation implements IMutation
}
else
{
- buff.append("\n ").append(StringUtils.join(modifications.values(), "\n ")).append("\n");
+ buff.append("\n ").append(StringUtils.join(modifications.values(), "\n ")).append('\n');
}
return buff.append("])").toString();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
index bf9c2b8..a9b2903 100644
--- a/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
+++ b/src/java/org/apache/cassandra/db/UnfilteredDeserializer.java
@@ -432,7 +432,7 @@ public abstract class UnfilteredDeserializer
return false;
}
}
- return next != null;
+ return true;
}
private Unfiltered readRow(LegacyLayout.LegacyAtom first)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
index 5010696..0c71871 100644
--- a/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
+++ b/src/java/org/apache/cassandra/db/commitlog/CommitLogReplayer.java
@@ -455,7 +455,7 @@ public class CommitLogReplayer
int uncompressedLength = replayEnd - replayPos;
if (uncompressedLength > uncompressedBuffer.length)
uncompressedBuffer = new byte[(int) (1.2 * uncompressedLength)];
- compressedLength = compressor.uncompress(buffer, 0, compressedLength, uncompressedBuffer, 0);
+ compressor.uncompress(buffer, 0, compressedLength, uncompressedBuffer, 0);
sectionReader = new FileSegmentInputStream(ByteBuffer.wrap(uncompressedBuffer), reader.getPath(), replayPos);
errorContext = "compressed section at " + start + " in " + errorContext;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/compaction/CompactionController.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionController.java b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
index 259e1b9..a7224a1 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionController.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionController.java
@@ -190,9 +190,8 @@ public class CompactionController implements AutoCloseable
{
// if we don't have bloom filter(bf_fp_chance=1.0 or filter file is missing),
// we check index file instead.
- if (sstable.getBloomFilter() instanceof AlwaysPresentFilter && sstable.getPosition(key, SSTableReader.Operator.EQ, false) != null)
- min = Math.min(min, sstable.getMinTimestamp());
- else if (sstable.getBloomFilter().isPresent(key))
+ if ((sstable.getBloomFilter() instanceof AlwaysPresentFilter && sstable.getPosition(key, SSTableReader.Operator.EQ, false) != null)
+ || sstable.getBloomFilter().isPresent(key))
min = Math.min(min, sstable.getMinTimestamp());
}
return min;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/partitions/UnfilteredPartitionIterators.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/partitions/UnfilteredPartitionIterators.java b/src/java/org/apache/cassandra/db/partitions/UnfilteredPartitionIterators.java
index a3f7981..d214da2 100644
--- a/src/java/org/apache/cassandra/db/partitions/UnfilteredPartitionIterators.java
+++ b/src/java/org/apache/cassandra/db/partitions/UnfilteredPartitionIterators.java
@@ -177,12 +177,6 @@ public abstract class UnfilteredPartitionIterators
{
private final List<UnfilteredRowIterator> toMerge = new ArrayList<>(iterators.size());
- @Override
- public boolean trivialReduceIsTrivial()
- {
- return false;
- }
-
public void reduce(int idx, UnfilteredRowIterator current)
{
toMerge.add(current);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/db/transform/Stack.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/transform/Stack.java b/src/java/org/apache/cassandra/db/transform/Stack.java
index aac1679..d388f75 100644
--- a/src/java/org/apache/cassandra/db/transform/Stack.java
+++ b/src/java/org/apache/cassandra/db/transform/Stack.java
@@ -4,6 +4,8 @@ import java.util.Arrays;
class Stack
{
+ public static final Transformation[] EMPTY_TRANSFORMATIONS = new Transformation[0];
+ public static final MoreContentsHolder[] EMPTY_MORE_CONTENTS_HOLDERS = new MoreContentsHolder[0];
static final Stack EMPTY = new Stack();
Transformation[] stack;
@@ -24,8 +26,8 @@ class Stack
Stack()
{
- stack = new Transformation[0];
- moreContents = new MoreContentsHolder[0];
+ stack = EMPTY_TRANSFORMATIONS;
+ moreContents = EMPTY_MORE_CONTENTS_HOLDERS;
}
Stack(Stack copy)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/dht/Range.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/dht/Range.java b/src/java/org/apache/cassandra/dht/Range.java
index 985d6f6..1fc6c46 100644
--- a/src/java/org/apache/cassandra/dht/Range.java
+++ b/src/java/org/apache/cassandra/dht/Range.java
@@ -164,7 +164,7 @@ public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implemen
boolean thatwraps = isWrapAround(that.left, that.right);
if (!thiswraps && !thatwraps)
{
- // neither wraps. the straightforward case.
+ // neither wraps: the straightforward case.
if (!(left.compareTo(that.right) < 0 && that.left.compareTo(right) < 0))
return Collections.emptySet();
return rangeSet(new Range<T>(ObjectUtils.max(this.left, that.left),
@@ -172,7 +172,7 @@ public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implemen
}
if (thiswraps && thatwraps)
{
- // if the starts are the same, one contains the other, which we have already ruled out.
+ //both wrap: if the starts are the same, one contains the other, which we have already ruled out.
assert !this.left.equals(that.left);
// two wrapping ranges always intersect.
// since we have already determined that neither this nor that contains the other, we have 2 cases,
@@ -186,9 +186,9 @@ public class Range<T extends RingPosition<T>> extends AbstractBounds<T> implemen
? intersectionBothWrapping(this, that)
: intersectionBothWrapping(that, this);
}
- if (thiswraps && !thatwraps)
+ if (thiswraps) // this wraps, that does not wrap
return intersectionOneWrapping(this, that);
- assert (!thiswraps && thatwraps);
+ // the last case: this does not wrap, that wraps
return intersectionOneWrapping(that, this);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
index 5aaea40..f2d43e3 100644
--- a/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
+++ b/src/java/org/apache/cassandra/index/internal/composites/CompositesSearcher.java
@@ -21,9 +21,6 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import org.apache.cassandra.config.CFMetaData;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.filter.ClusteringIndexNamesFilter;
@@ -41,8 +38,6 @@ import org.apache.cassandra.utils.concurrent.OpOrder;
public class CompositesSearcher extends CassandraIndexSearcher
{
- private static final Logger logger = LoggerFactory.getLogger(CompositesSearcher.class);
-
public CompositesSearcher(ReadCommand command,
RowFilter.Expression expression,
CassandraIndex index)
@@ -95,70 +90,75 @@ public class CompositesSearcher extends CassandraIndexSearcher
private boolean prepareNext()
{
- if (next != null)
- return true;
-
- if (nextEntry == null)
+ while (true)
{
- if (!indexHits.hasNext())
- return false;
+ if (next != null)
+ return true;
- nextEntry = index.decodeEntry(indexKey, indexHits.next());
- }
+ if (nextEntry == null)
+ {
+ if (!indexHits.hasNext())
+ return false;
- // Gather all index hits belonging to the same partition and query the data for those hits.
- // TODO: it's much more efficient to do 1 read for all hits to the same partition than doing
- // 1 read per index hit. However, this basically mean materializing all hits for a partition
- // in memory so we should consider adding some paging mechanism. However, index hits should
- // be relatively small so it's much better than the previous code that was materializing all
- // *data* for a given partition.
- BTreeSet.Builder<Clustering> clusterings = BTreeSet.builder(index.baseCfs.getComparator());
- List<IndexEntry> entries = new ArrayList<>();
- DecoratedKey partitionKey = index.baseCfs.decorateKey(nextEntry.indexedKey);
-
- while (nextEntry != null && partitionKey.getKey().equals(nextEntry.indexedKey))
- {
- // We're queried a slice of the index, but some hits may not match some of the clustering column constraints
- if (isMatchingEntry(partitionKey, nextEntry, command))
+ nextEntry = index.decodeEntry(indexKey, indexHits.next());
+ }
+
+ // Gather all index hits belonging to the same partition and query the data for those hits.
+ // TODO: it's much more efficient to do 1 read for all hits to the same partition than doing
+ // 1 read per index hit. However, this basically mean materializing all hits for a partition
+ // in memory so we should consider adding some paging mechanism. However, index hits should
+ // be relatively small so it's much better than the previous code that was materializing all
+ // *data* for a given partition.
+ BTreeSet.Builder<Clustering> clusterings = BTreeSet.builder(index.baseCfs.getComparator());
+ List<IndexEntry> entries = new ArrayList<>();
+ DecoratedKey partitionKey = index.baseCfs.decorateKey(nextEntry.indexedKey);
+
+ while (nextEntry != null && partitionKey.getKey().equals(nextEntry.indexedKey))
{
- clusterings.add(nextEntry.indexedEntryClustering);
- entries.add(nextEntry);
+ // We're queried a slice of the index, but some hits may not match some of the clustering column constraints
+ if (isMatchingEntry(partitionKey, nextEntry, command))
+ {
+ clusterings.add(nextEntry.indexedEntryClustering);
+ entries.add(nextEntry);
+ }
+
+ nextEntry = indexHits.hasNext() ? index.decodeEntry(indexKey, indexHits.next()) : null;
}
- nextEntry = indexHits.hasNext() ? index.decodeEntry(indexKey, indexHits.next()) : null;
- }
+ // Because we've eliminated entries that don't match the clustering columns, it's possible we added nothing
+ if (clusterings.isEmpty())
+ {
+ continue;
+ }
- // Because we've eliminated entries that don't match the clustering columns, it's possible we added nothing
- if (clusterings.isEmpty())
- return prepareNext();
-
- // Query the gathered index hits. We still need to filter stale hits from the resulting query.
- ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(clusterings.build(), false);
- SinglePartitionReadCommand dataCmd = SinglePartitionReadCommand.create(index.baseCfs.metadata,
- command.nowInSec(),
- command.columnFilter(),
- command.rowFilter(),
- DataLimits.NONE,
- partitionKey,
- filter);
- @SuppressWarnings("resource") // We close right away if empty, and if it's assign to next it will be called either
- // by the next caller of next, or through closing this iterator is this come before.
- UnfilteredRowIterator dataIter = filterStaleEntries(dataCmd.queryMemtableAndDisk(index.baseCfs,
- executionController.baseReadOpOrderGroup()),
- indexKey.getKey(),
- entries,
- executionController.writeOpOrderGroup(),
- command.nowInSec());
-
-
- if (dataIter.isEmpty())
- {
- dataIter.close();
- return prepareNext();
- }
+ // Query the gathered index hits. We still need to filter stale hits from the resulting query.
+ ClusteringIndexNamesFilter filter = new ClusteringIndexNamesFilter(clusterings.build(), false);
+ SinglePartitionReadCommand dataCmd = SinglePartitionReadCommand.create(index.baseCfs.metadata,
+ command.nowInSec(),
+ command.columnFilter(),
+ command.rowFilter(),
+ DataLimits.NONE,
+ partitionKey,
+ filter);
+ @SuppressWarnings("resource") // We close right away if empty, and if it's assign to next it will be called either
+ // by the next caller of next, or through closing this iterator is this come before.
+ UnfilteredRowIterator dataIter = filterStaleEntries(dataCmd.queryMemtableAndDisk(index.baseCfs,
+ executionController.baseReadOpOrderGroup()),
+ indexKey.getKey(),
+ entries,
+ executionController.writeOpOrderGroup(),
+ command.nowInSec());
+
+
+ if (dataIter.isEmpty())
+ {
+ dataIter.close();
+ continue;
+ }
- next = dataIter;
- return true;
+ next = dataIter;
+ return true;
+ }
}
public void remove()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/io/sstable/SSTableSimpleIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleIterator.java b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleIterator.java
index 365d469..2f4df1a 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableSimpleIterator.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableSimpleIterator.java
@@ -139,24 +139,27 @@ public abstract class SSTableSimpleIterator extends AbstractIterator<Unfiltered>
protected Unfiltered computeNext()
{
- try
+ while (true)
{
- if (!deserializer.hasNext())
- return endOfData();
-
- Unfiltered unfiltered = deserializer.readNext();
- if (metadata.isStaticCompactTable() && unfiltered.kind() == Unfiltered.Kind.ROW)
+ try
{
- Row row = (Row) unfiltered;
- ColumnDefinition def = metadata.getColumnDefinition(LegacyLayout.encodeClustering(metadata, row.clustering()));
- if (def != null && def.isStatic())
- return computeNext();
+ if (!deserializer.hasNext())
+ return endOfData();
+
+ Unfiltered unfiltered = deserializer.readNext();
+ if (metadata.isStaticCompactTable() && unfiltered.kind() == Unfiltered.Kind.ROW)
+ {
+ Row row = (Row) unfiltered;
+ ColumnDefinition def = metadata.getColumnDefinition(LegacyLayout.encodeClustering(metadata, row.clustering()));
+ if (def != null && def.isStatic())
+ continue;
+ }
+ return unfiltered;
+ }
+ catch (IOException e)
+ {
+ throw new IOError(e);
}
- return unfiltered;
- }
- catch (IOException e)
- {
- throw new IOError(e);
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
index afd0a1e..971e8f2 100644
--- a/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/format/SSTableReader.java
@@ -818,7 +818,7 @@ public abstract class SSTableReader extends SSTable implements SelfRefCounted<SS
while ((indexPosition = primaryIndex.getFilePointer()) != indexSize)
{
ByteBuffer key = ByteBufferUtil.readWithShortLength(primaryIndex);
- RowIndexEntry indexEntry = rowIndexSerializer.deserialize(primaryIndex);
+ /*RowIndexEntry indexEntry = */rowIndexSerializer.deserialize(primaryIndex);
DecoratedKey decoratedKey = decorateKey(key);
if (first == null)
first = decoratedKey;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/io/util/FileSegmentInputStream.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/util/FileSegmentInputStream.java b/src/java/org/apache/cassandra/io/util/FileSegmentInputStream.java
index 425c7d6..b6cf94a 100644
--- a/src/java/org/apache/cassandra/io/util/FileSegmentInputStream.java
+++ b/src/java/org/apache/cassandra/io/util/FileSegmentInputStream.java
@@ -68,12 +68,6 @@ public class FileSegmentInputStream extends DataInputBuffer implements FileDataI
buffer.position((int) (pos - offset));
}
- @Override
- public boolean markSupported()
- {
- return false;
- }
-
public FileMark mark()
{
throw new UnsupportedOperationException();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/io/util/RebufferingInputStream.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/util/RebufferingInputStream.java b/src/java/org/apache/cassandra/io/util/RebufferingInputStream.java
index 3068746..d85f1be 100644
--- a/src/java/org/apache/cassandra/io/util/RebufferingInputStream.java
+++ b/src/java/org/apache/cassandra/io/util/RebufferingInputStream.java
@@ -275,16 +275,4 @@ public abstract class RebufferingInputStream extends InputStream implements Data
return -1;
}
}
-
- @Override
- public void reset() throws IOException
- {
- throw new IOException("mark/reset not supported");
- }
-
- @Override
- public boolean markSupported()
- {
- return false;
- }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java b/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
index 9f74dcc..f0342d4 100644
--- a/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
+++ b/src/java/org/apache/cassandra/locator/NetworkTopologyStrategy.java
@@ -223,10 +223,4 @@ public class NetworkTopologyStrategy extends AbstractReplicationStrategy
validateReplicationFactor(e.getValue());
}
}
-
- public Collection<String> recognizedOptions()
- {
- // We explicitely allow all options
- return null;
- }
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/metrics/TableMetrics.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/metrics/TableMetrics.java b/src/java/org/apache/cassandra/metrics/TableMetrics.java
index a8fcc77..c8c214e 100644
--- a/src/java/org/apache/cassandra/metrics/TableMetrics.java
+++ b/src/java/org/apache/cassandra/metrics/TableMetrics.java
@@ -42,6 +42,9 @@ import static org.apache.cassandra.metrics.CassandraMetricsRegistry.Metrics;
*/
public class TableMetrics
{
+
+ public static final long[] EMPTY = new long[0];
+
/** Total amount of data stored in the memtable that resides on-heap, including column related overhead and partitions overwritten. */
public final Gauge<Long> memtableOnHeapSize;
/** Total amount of data stored in the memtable that resides off-heap, including column related overhead and partitions overwritten. */
@@ -171,7 +174,7 @@ public class TableMetrics
Iterator<SSTableReader> iterator = sstables.iterator();
if (!iterator.hasNext())
{
- return new long[0];
+ return EMPTY;
}
long[] firstBucket = getHistogram.getHistogram(iterator.next()).getBuckets(false);
long[] values = new long[firstBucket.length];
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/serializers/AsciiSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/AsciiSerializer.java b/src/java/org/apache/cassandra/serializers/AsciiSerializer.java
index b013b23..e265cb2 100644
--- a/src/java/org/apache/cassandra/serializers/AsciiSerializer.java
+++ b/src/java/org/apache/cassandra/serializers/AsciiSerializer.java
@@ -35,7 +35,7 @@ public class AsciiSerializer extends AbstractTextSerializer
for (int i = bytes.position(); i < bytes.limit(); i++)
{
byte b = bytes.get(i);
- if (b < 0 || b > 127)
+ if (b < 0)
throw new MarshalException("Invalid byte for ascii: " + Byte.toString(b));
}
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/serializers/UTF8Serializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/serializers/UTF8Serializer.java b/src/java/org/apache/cassandra/serializers/UTF8Serializer.java
index be5d2d6..bb708e0 100644
--- a/src/java/org/apache/cassandra/serializers/UTF8Serializer.java
+++ b/src/java/org/apache/cassandra/serializers/UTF8Serializer.java
@@ -93,10 +93,8 @@ public class UTF8Serializer extends AbstractTextSerializer
if (b == (byte)0xf0)
// 0xf0, 0x90-0xbf, 0x80-0xbf, 0x80-0xbf
state = State.FOUR_90bf;
- else if (b == (byte)0xf4)
- // 0xf4, 0x80-0xbf, 0x80-0xbf, 0x80-0xbf
- state = State.FOUR_80bf_3;
else
+ // 0xf4, 0x80-0xbf, 0x80-0xbf, 0x80-0xbf
// 0xf1-0xf3, 0x80-0xbf, 0x80-0xbf, 0x80-0xbf
state = State.FOUR_80bf_3;
break;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/service/CacheService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CacheService.java b/src/java/org/apache/cassandra/service/CacheService.java
index c51a5d1..03d7cd4 100644
--- a/src/java/org/apache/cassandra/service/CacheService.java
+++ b/src/java/org/apache/cassandra/service/CacheService.java
@@ -64,7 +64,7 @@ public class CacheService implements CacheServiceMBean
public static final String MBEAN_NAME = "org.apache.cassandra.db:type=Caches";
- public static enum CacheType
+ public enum CacheType
{
KEY_CACHE("KeyCache"),
ROW_CACHE("RowCache"),
@@ -72,7 +72,7 @@ public class CacheService implements CacheServiceMBean
private final String name;
- private CacheType(String typeName)
+ CacheType(String typeName)
{
name = typeName;
}
@@ -430,9 +430,9 @@ public class CacheService implements CacheServiceMBean
//Keyspace and CF name are deserialized by AutoSaving cache and used to fetch the CFS provided as a
//parameter so they aren't deserialized here, even though they are serialized by this serializer
final ByteBuffer buffer = ByteBufferUtil.readWithLength(in);
- final int rowsToCache = cfs.metadata.params.caching.rowsPerPartitionToCache();
if (cfs == null || !cfs.isRowCacheEnabled())
return null;
+ final int rowsToCache = cfs.metadata.params.caching.rowsPerPartitionToCache();
assert(!cfs.isIndex());//Shouldn't have row cache entries for indexes
return StageManager.getStage(Stage.READ).submit(new Callable<Pair<RowCacheKey, IRowCacheEntry>>()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index dcc1b7b..f161607 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -1393,7 +1393,7 @@ public class StorageProxy implements StorageProxyMBean
{
assert mutation instanceof CounterMutation;
- Mutation result = ((CounterMutation) mutation).apply();
+ Mutation result = ((CounterMutation) mutation).applyCounterMutation();
responseHandler.response(null);
Set<InetAddress> remotes = Sets.difference(ImmutableSet.copyOf(targets),
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/streaming/StreamPlan.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/streaming/StreamPlan.java b/src/java/org/apache/cassandra/streaming/StreamPlan.java
index f0fdd55..e9d43cb 100644
--- a/src/java/org/apache/cassandra/streaming/StreamPlan.java
+++ b/src/java/org/apache/cassandra/streaming/StreamPlan.java
@@ -32,6 +32,7 @@ import org.apache.cassandra.utils.UUIDGen;
*/
public class StreamPlan
{
+ public static final String[] EMPTY_COLUMN_FAMILIES = new String[0];
private final UUID planId = UUIDGen.getTimeUUID();
private final String description;
private final List<StreamEventHandler> handlers = new ArrayList<>();
@@ -75,7 +76,7 @@ public class StreamPlan
*/
public StreamPlan requestRanges(InetAddress from, InetAddress connecting, String keyspace, Collection<Range<Token>> ranges)
{
- return requestRanges(from, connecting, keyspace, ranges, new String[0]);
+ return requestRanges(from, connecting, keyspace, ranges, EMPTY_COLUMN_FAMILIES);
}
/**
@@ -116,7 +117,7 @@ public class StreamPlan
*/
public StreamPlan transferRanges(InetAddress to, InetAddress connecting, String keyspace, Collection<Range<Token>> ranges)
{
- return transferRanges(to, connecting, keyspace, ranges, new String[0]);
+ return transferRanges(to, connecting, keyspace, ranges, EMPTY_COLUMN_FAMILIES);
}
/**
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/tools/nodetool/Ring.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/Ring.java b/src/java/org/apache/cassandra/tools/nodetool/Ring.java
index 03d9449..55220a1 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/Ring.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/Ring.java
@@ -88,7 +88,7 @@ public class Ring extends NodeToolCmd
}
catch (IllegalArgumentException ex)
{
- System.out.printf("%nError: " + ex.getMessage() + "%n");
+ System.out.printf("%nError: %s%n", ex.getMessage());
return;
}
@@ -174,4 +174,4 @@ public class Ring extends NodeToolCmd
}
System.out.println();
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/tools/nodetool/Status.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/nodetool/Status.java b/src/java/org/apache/cassandra/tools/nodetool/Status.java
index 99f745d..a43b703 100644
--- a/src/java/org/apache/cassandra/tools/nodetool/Status.java
+++ b/src/java/org/apache/cassandra/tools/nodetool/Status.java
@@ -81,7 +81,7 @@ public class Status extends NodeToolCmd
}
catch (IllegalArgumentException ex)
{
- System.out.printf("%nError: " + ex.getMessage() + "%n");
+ System.out.printf("%nError: %s%n", ex.getMessage());
System.exit(1);
}
@@ -204,4 +204,4 @@ public class Status extends NodeToolCmd
return format;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/utils/HistogramBuilder.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/HistogramBuilder.java b/src/java/org/apache/cassandra/utils/HistogramBuilder.java
index 5d22352..093c52c 100644
--- a/src/java/org/apache/cassandra/utils/HistogramBuilder.java
+++ b/src/java/org/apache/cassandra/utils/HistogramBuilder.java
@@ -25,6 +25,9 @@ import java.util.Arrays;
public class HistogramBuilder
{
+ public static final long[] EMPTY_LONG_ARRAY = new long[]{};
+ public static final long[] ZERO = new long[]{ 0 };
+
public HistogramBuilder() {}
public HistogramBuilder(long[] values)
{
@@ -73,7 +76,7 @@ public class HistogramBuilder
final long[] values = this.values;
if (count == 0)
- return new EstimatedHistogram(new long[] { }, new long[] { 0 });
+ return new EstimatedHistogram(EMPTY_LONG_ARRAY, ZERO);
long min = Long.MAX_VALUE, max = Long.MIN_VALUE;
double sum = 0, sumsq = 0;
@@ -114,7 +117,7 @@ public class HistogramBuilder
// minormax == mean we have no range to produce, but given the exclusive starts
// that begin at zero by default (or -Inf) in EstimatedHistogram we have to generate a min range
// to indicate where we start from
- return ismin ? new long[] { mean - 1 } : new long[0];
+ return ismin ? new long[] { mean - 1 } : EMPTY_LONG_ARRAY;
if (stdev < 1)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/utils/IntervalTree.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/IntervalTree.java b/src/java/org/apache/cassandra/utils/IntervalTree.java
index b92112e..4cf1222 100644
--- a/src/java/org/apache/cassandra/utils/IntervalTree.java
+++ b/src/java/org/apache/cassandra/utils/IntervalTree.java
@@ -272,20 +272,21 @@ public class IntervalTree<C extends Comparable<? super C>, D, I extends Interval
protected I computeNext()
{
- if (current != null && current.hasNext())
- return current.next();
-
- IntervalNode node = stack.pollFirst();
- if (node == null)
- return endOfData();
+ while (true)
+ {
+ if (current != null && current.hasNext())
+ return current.next();
- current = node.intersectsLeft.iterator();
+ IntervalNode node = stack.pollFirst();
+ if (node == null)
+ return endOfData();
- // We know this is the smaller not returned yet, but before doing
- // its parent, we must do everyone on it's right.
- gotoMinOf(node.right);
+ current = node.intersectsLeft.iterator();
- return computeNext();
+ // We know this is the smaller not returned yet, but before doing
+ // its parent, we must do everyone on it's right.
+ gotoMinOf(node.right);
+ }
}
private void gotoMinOf(IntervalNode node)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/utils/MergeIterator.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/MergeIterator.java b/src/java/org/apache/cassandra/utils/MergeIterator.java
index 0cc5306..70daad9 100644
--- a/src/java/org/apache/cassandra/utils/MergeIterator.java
+++ b/src/java/org/apache/cassandra/utils/MergeIterator.java
@@ -17,11 +17,8 @@
*/
package org.apache.cassandra.utils;
-import java.io.Closeable;
import java.util.*;
-import org.apache.cassandra.utils.AbstractIterator;
-
/** Merges sorted input iterators which individually contain unique items. */
public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implements IMergeIterator<In, Out>
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/utils/MerkleTree.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/MerkleTree.java b/src/java/org/apache/cassandra/utils/MerkleTree.java
index b3bccac..bc39b91 100644
--- a/src/java/org/apache/cassandra/utils/MerkleTree.java
+++ b/src/java/org/apache/cassandra/utils/MerkleTree.java
@@ -326,19 +326,28 @@ public class MerkleTree implements Serializable
TreeRange getHelper(Hashable hashable, Token pleft, Token pright, byte depth, Token t)
{
- if (hashable instanceof Leaf)
+ while (true)
{
- // we've reached a hash: wrap it up and deliver it
- return new TreeRange(this, pleft, pright, depth, hashable);
+ if (hashable instanceof Leaf)
+ {
+ // we've reached a hash: wrap it up and deliver it
+ return new TreeRange(this, pleft, pright, depth, hashable);
+ }
+ // else: node.
+
+ Inner node = (Inner) hashable;
+ depth = inc(depth);
+ if (Range.contains(pleft, node.token, t))
+ { // left child contains token
+ hashable = node.lchild;
+ pright = node.token;
+ }
+ else
+ { // else: right child contains token
+ hashable = node.rchild;
+ pleft = node.token;
+ }
}
- // else: node.
-
- Inner node = (Inner)hashable;
- if (Range.contains(pleft, node.token, t))
- // left child contains token
- return getHelper(node.lchild, pleft, node.token, inc(depth), t);
- // else: right child contains token
- return getHelper(node.rchild, node.token, pright, inc(depth), t);
}
/**
@@ -404,33 +413,42 @@ public class MerkleTree implements Serializable
*/
private Hashable findHelper(Hashable current, Range<Token> activeRange, Range<Token> find) throws StopRecursion
{
- if (current instanceof Leaf)
+ while (true)
{
- if (!find.contains(activeRange))
- // we are not fully contained in this range!
- throw new StopRecursion.BadRange();
- return current;
- }
- // else: node.
+ if (current instanceof Leaf)
+ {
+ if (!find.contains(activeRange))
+ // we are not fully contained in this range!
+ throw new StopRecursion.BadRange();
+ return current;
+ }
+ // else: node.
- Inner node = (Inner)current;
- Range<Token> leftRange = new Range<Token>(activeRange.left, node.token);
- Range<Token> rightRange = new Range<Token>(node.token, activeRange.right);
+ Inner node = (Inner) current;
+ Range<Token> leftRange = new Range<>(activeRange.left, node.token);
+ Range<Token> rightRange = new Range<>(node.token, activeRange.right);
- if (find.contains(activeRange))
- // this node is fully contained in the range
- return node.calc();
+ if (find.contains(activeRange))
+ // this node is fully contained in the range
+ return node.calc();
- // else: one of our children contains the range
+ // else: one of our children contains the range
- if (leftRange.contains(find))
- // left child contains/matches the range
- return findHelper(node.lchild, leftRange, find);
- else if (rightRange.contains(find))
- // right child contains/matches the range
- return findHelper(node.rchild, rightRange, find);
- else
- throw new StopRecursion.BadRange();
+ if (leftRange.contains(find))
+ { // left child contains/matches the range
+ current = node.lchild;
+ activeRange = leftRange;
+ }
+ else if (rightRange.contains(find))
+ { // right child contains/matches the range
+ current = node.rchild;
+ activeRange = rightRange;
+ }
+ else
+ {
+ throw new StopRecursion.BadRange();
+ }
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/src/java/org/apache/cassandra/utils/btree/TreeCursor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/btree/TreeCursor.java b/src/java/org/apache/cassandra/utils/btree/TreeCursor.java
index 5e55698..60c0eb9 100644
--- a/src/java/org/apache/cassandra/utils/btree/TreeCursor.java
+++ b/src/java/org/apache/cassandra/utils/btree/TreeCursor.java
@@ -219,8 +219,7 @@ class TreeCursor<K> extends NodeCursor<K>
return;
}
- NodeCursor<K> cur = this.cur;
- cur = root();
+ NodeCursor<K> cur = root();
assert cur.nodeOffset == 0;
while (true)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/tools/stress/src/org/apache/cassandra/stress/Operation.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/Operation.java b/tools/stress/src/org/apache/cassandra/stress/Operation.java
index 4123911..139dd53 100644
--- a/tools/stress/src/org/apache/cassandra/stress/Operation.java
+++ b/tools/stress/src/org/apache/cassandra/stress/Operation.java
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -15,6 +15,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.cassandra.stress;
import java.io.IOException;
@@ -24,7 +25,6 @@ import java.util.List;
import com.google.common.util.concurrent.RateLimiter;
import org.apache.cassandra.stress.generate.*;
-import org.apache.cassandra.stress.settings.OptionDistribution;
import org.apache.cassandra.stress.settings.OptionRatioDistribution;
import org.apache.cassandra.stress.settings.SettingsLog;
import org.apache.cassandra.stress.settings.StressSettings;
@@ -141,11 +141,13 @@ public abstract class Operation
*/
public abstract void run(ThriftClient client) throws IOException;
- public void run(SimpleClient client) throws IOException {
+ public void run(SimpleClient client) throws IOException
+ {
throw new UnsupportedOperationException();
}
- public void run(JavaDriverClient client) throws IOException {
+ public void run(JavaDriverClient client) throws IOException
+ {
throw new UnsupportedOperationException();
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/tools/stress/src/org/apache/cassandra/stress/operations/predefined/CqlOperation.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/predefined/CqlOperation.java b/tools/stress/src/org/apache/cassandra/stress/operations/predefined/CqlOperation.java
index afdc0b1..097c1a0 100644
--- a/tools/stress/src/org/apache/cassandra/stress/operations/predefined/CqlOperation.java
+++ b/tools/stress/src/org/apache/cassandra/stress/operations/predefined/CqlOperation.java
@@ -49,6 +49,9 @@ import org.apache.thrift.TException;
public abstract class CqlOperation<V> extends PredefinedOperation
{
+ public static final ByteBuffer[][] EMPTY_BYTE_BUFFERS = new ByteBuffer[0][];
+ public static final byte[][] EMPTY_BYTE_ARRAYS = new byte[0][];
+
protected abstract List<Object> getQueryParameters(byte[] key);
protected abstract String buildQuery();
protected abstract CqlRunOp<V> buildRunOp(ClientWrapper client, String query, Object queryId, List<Object> params, ByteBuffer key);
@@ -455,7 +458,7 @@ public abstract class CqlOperation<V> extends PredefinedOperation
public ByteBuffer[][] apply(ResultSet result)
{
if (result == null)
- return new ByteBuffer[0][];
+ return EMPTY_BYTE_BUFFERS;
List<Row> rows = result.all();
ByteBuffer[][] r = new ByteBuffer[rows.size()][];
@@ -481,7 +484,7 @@ public abstract class CqlOperation<V> extends PredefinedOperation
public ByteBuffer[][] apply(ResultMessage result)
{
if (!(result instanceof ResultMessage.Rows))
- return new ByteBuffer[0][];
+ return EMPTY_BYTE_BUFFERS;
ResultMessage.Rows rows = ((ResultMessage.Rows) result);
ByteBuffer[][] r = new ByteBuffer[rows.result.size()][];
@@ -536,7 +539,7 @@ public abstract class CqlOperation<V> extends PredefinedOperation
{
if (result == null)
- return new byte[0][];
+ return EMPTY_BYTE_ARRAYS;
List<Row> rows = result.all();
byte[][] r = new byte[rows.size()][];
for (int i = 0 ; i < r.length ; i++)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/tools/stress/src/org/apache/cassandra/stress/operations/predefined/PredefinedOperation.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/predefined/PredefinedOperation.java b/tools/stress/src/org/apache/cassandra/stress/operations/predefined/PredefinedOperation.java
index 66f232a..b435abb 100644
--- a/tools/stress/src/org/apache/cassandra/stress/operations/predefined/PredefinedOperation.java
+++ b/tools/stress/src/org/apache/cassandra/stress/operations/predefined/PredefinedOperation.java
@@ -34,6 +34,7 @@ import org.apache.cassandra.thrift.SliceRange;
public abstract class PredefinedOperation extends Operation
{
+ public static final byte[] EMPTY_BYTE_ARRAY = {};
public final Command type;
private final Distribution columnCount;
private Object cqlCache;
@@ -106,7 +107,7 @@ public abstract class PredefinedOperation extends Operation
{
predicate.setSlice_range(new SliceRange()
.setStart(settings.columns.names.get(lb))
- .setFinish(new byte[] {})
+ .setFinish(EMPTY_BYTE_ARRAY)
.setReversed(false)
.setCount(count())
);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java
index 49891ec..1c88490 100644
--- a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java
+++ b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/SchemaStatement.java
@@ -20,8 +20,6 @@ package org.apache.cassandra.stress.operations.userdefined;
*
*/
-
-import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -37,7 +35,6 @@ import org.apache.cassandra.stress.generate.Row;
import org.apache.cassandra.stress.settings.StressSettings;
import org.apache.cassandra.stress.util.JavaDriverClient;
import org.apache.cassandra.stress.util.Timer;
-import org.apache.cassandra.transport.SimpleClient;
public abstract class SchemaStatement extends Operation
{
@@ -91,12 +88,6 @@ public abstract class SchemaStatement extends Operation
return args;
}
- @Override
- public void run(SimpleClient client) throws IOException
- {
- throw new UnsupportedOperationException();
- }
-
abstract class Runner implements RunOp
{
int partitionCount;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java
index 8bdde51..c07328a 100644
--- a/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java
+++ b/tools/stress/src/org/apache/cassandra/stress/operations/userdefined/ValidatingSchemaQuery.java
@@ -26,7 +26,6 @@ import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import com.datastax.driver.core.*;
@@ -42,13 +41,11 @@ import org.apache.cassandra.thrift.Compression;
import org.apache.cassandra.thrift.CqlResult;
import org.apache.cassandra.thrift.CqlRow;
import org.apache.cassandra.thrift.ThriftConversion;
-import org.apache.cassandra.transport.SimpleClient;
import org.apache.cassandra.utils.Pair;
import org.apache.thrift.TException;
public class ValidatingSchemaQuery extends Operation
{
- final Random random = new Random();
private Pair<Row, Row> bounds;
final int clusteringComponents;
@@ -57,12 +54,6 @@ public class ValidatingSchemaQuery extends Operation
final int[] argumentIndex;
final Object[] bindBuffer;
- @Override
- public void run(SimpleClient client) throws IOException
- {
- throw new UnsupportedOperationException();
- }
-
private ValidatingSchemaQuery(Timer timer, StressSettings settings, PartitionGenerator generator, SeedManager seedManager, ValidatingStatement[] statements, ConsistencyLevel cl, int clusteringComponents)
{
super(timer, settings, new DataSpec(generator, seedManager, new DistributionFixed(1), settings.insert.rowPopulationRatio.get(), 1));
@@ -280,14 +271,14 @@ public class ValidatingSchemaQuery extends Operation
{
StringBuilder cc = new StringBuilder();
StringBuilder arg = new StringBuilder();
- cc.append("("); arg.append("(");
+ cc.append('('); arg.append('(');
for (int d = 0 ; d <= depth ; d++)
{
- if (d > 0) { cc.append(","); arg.append(","); }
+ if (d > 0) { cc.append(','); arg.append(','); }
cc.append(metadata.getClusteringColumns().get(d).getName());
- arg.append("?");
+ arg.append('?');
}
- cc.append(")"); arg.append(")");
+ cc.append(')'); arg.append(')');
ValidatingStatement[] statements = new ValidatingStatement[depth < maxDepth ? 1 : 4];
int i = 0;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0f5e7807/tools/stress/src/org/apache/cassandra/stress/util/TimingInterval.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/util/TimingInterval.java b/tools/stress/src/org/apache/cassandra/stress/util/TimingInterval.java
index 6be71c8..89995dd 100644
--- a/tools/stress/src/org/apache/cassandra/stress/util/TimingInterval.java
+++ b/tools/stress/src/org/apache/cassandra/stress/util/TimingInterval.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ThreadLocalRandom;
// used for both single timer results and merged timer results
public final class TimingInterval
{
+ public static final long[] EMPTY_SAMPLE = new long[0];
// nanos
private final long start;
private final long end;
@@ -56,7 +57,7 @@ public final class TimingInterval
maxLatency = totalLatency = 0;
partitionCount = rowCount = operationCount = errorCount = 0;
pauseStart = pauseLength = 0;
- sample = new SampleOfLongs(new long[0], 1d);
+ sample = new SampleOfLongs(EMPTY_SAMPLE, 1d);
}
TimingInterval(long start, long end, long maxLatency, long pauseStart, long pauseLength, long partitionCount,