You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by bd...@apache.org on 2020/04/11 00:57:15 UTC

[cassandra] branch trunk updated: Replace array iterators with get by index

This is an automated email from the ASF dual-hosted git repository.

bdeggleston pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 543bbdd  Replace array iterators with get by index
543bbdd is described below

commit 543bbdd9b630a77cff40cc266b427946688805ed
Author: Blake Eggleston <bd...@gmail.com>
AuthorDate: Thu Oct 17 15:37:20 2019 -0700

    Replace array iterators with get by index
    
    Patch by Blake Eggleston; Reviewed by Benedict Elliott Smith for CASSANDRA-15394
---
 CHANGES.txt                                                  |  1 +
 .../cassandra/db/compaction/AbstractCompactionStrategy.java  | 12 +++++++-----
 .../apache/cassandra/db/compaction/CompactionIterator.java   |  8 ++++++--
 src/java/org/apache/cassandra/db/rows/EncodingStats.java     |  3 ++-
 src/java/org/apache/cassandra/db/rows/Row.java               |  7 ++++---
 src/java/org/apache/cassandra/utils/MergeIterator.java       |  3 ++-
 6 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index c1e5aeb..dc04d30 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 4.0-alpha4
+ * Replace array iterators with get by index (CASSANDRA-15394)
  * Minimize BTree iterator allocations (CASSANDRA-15389)
  * Add client request size server metrics (CASSANDRA-15704)
  * Add additional logging around FileUtils and compaction leftover cleanup (CASSANDRA-15705)
diff --git a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
index ad494b1..30b4cb8 100644
--- a/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/AbstractCompactionStrategy.java
@@ -316,8 +316,8 @@ public abstract class AbstractCompactionStrategy
         public long getTotalBytesScanned()
         {
             long bytesScanned = 0L;
-            for (ISSTableScanner scanner : scanners)
-                bytesScanned += scanner.getBytesScanned();
+            for (int i=0, isize=scanners.size(); i<isize; i++)
+                bytesScanned += scanners.get(i).getBytesScanned();
 
             return bytesScanned;
         }
@@ -325,8 +325,8 @@ public abstract class AbstractCompactionStrategy
         public long getTotalCompressedSize()
         {
             long compressedSize = 0;
-            for (ISSTableScanner scanner : scanners)
-                compressedSize += scanner.getCompressedLengthInBytes();
+            for (int i=0, isize=scanners.size(); i<isize; i++)
+                compressedSize += scanners.get(i).getCompressedLengthInBytes();
 
             return compressedSize;
         }
@@ -336,8 +336,10 @@ public abstract class AbstractCompactionStrategy
             double compressed = 0.0;
             double uncompressed = 0.0;
 
-            for (ISSTableScanner scanner : scanners)
+            for (int i=0, isize=scanners.size(); i<isize; i++)
             {
+                @SuppressWarnings("resource")
+                ISSTableScanner scanner = scanners.get(i);
                 compressed += scanner.getCompressedLengthInBytes();
                 uncompressed += scanner.getLengthInBytes();
             }
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java b/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java
index 1128108..ce3bb6c 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionIterator.java
@@ -152,8 +152,10 @@ public class CompactionIterator extends CompactionInfo.Holder implements Unfilte
             public UnfilteredRowIterators.MergeListener getRowMergeListener(DecoratedKey partitionKey, List<UnfilteredRowIterator> versions)
             {
                 int merged = 0;
-                for (UnfilteredRowIterator iter : versions)
+                for (int i=0, isize=versions.size(); i<isize; i++)
                 {
+                    @SuppressWarnings("resource")
+                    UnfilteredRowIterator iter = versions.get(i);
                     if (iter != null)
                         merged++;
                 }
@@ -167,8 +169,10 @@ public class CompactionIterator extends CompactionInfo.Holder implements Unfilte
 
                 Columns statics = Columns.NONE;
                 Columns regulars = Columns.NONE;
-                for (UnfilteredRowIterator iter : versions)
+                for (int i=0, isize=versions.size(); i<isize; i++)
                 {
+                    @SuppressWarnings("resource")
+                    UnfilteredRowIterator iter = versions.get(i);
                     if (iter != null)
                     {
                         statics = statics.mergeTo(iter.columns().statics);
diff --git a/src/java/org/apache/cassandra/db/rows/EncodingStats.java b/src/java/org/apache/cassandra/db/rows/EncodingStats.java
index 4a7bb19..c73728d 100644
--- a/src/java/org/apache/cassandra/db/rows/EncodingStats.java
+++ b/src/java/org/apache/cassandra/db/rows/EncodingStats.java
@@ -119,8 +119,9 @@ public class EncodingStats
             return function.apply(values.get(0));
 
         Collector collector = new Collector();
-        for (V v : values)
+        for (int i=0, isize=values.size(); i<isize; i++)
         {
+            V v = values.get(i);
             EncodingStats stats = function.apply(v);
             if (stats.minTimestamp != TIMESTAMP_EPOCH)
                 collector.updateTimestamp(stats.minTimestamp);
diff --git a/src/java/org/apache/cassandra/db/rows/Row.java b/src/java/org/apache/cassandra/db/rows/Row.java
index ee93da4..3703d549 100644
--- a/src/java/org/apache/cassandra/db/rows/Row.java
+++ b/src/java/org/apache/cassandra/db/rows/Row.java
@@ -786,9 +786,9 @@ public interface Row extends Unfiltered, Iterable<ColumnData>
                 if (column.isSimple())
                 {
                     Cell merged = null;
-                    for (ColumnData data : versions)
+                    for (int i=0, isize=versions.size(); i<isize; i++)
                     {
-                        Cell cell = (Cell)data;
+                        Cell cell = (Cell) versions.get(i);
                         if (!activeDeletion.deletes(cell))
                             merged = merged == null ? cell : Cells.reconcile(merged, cell);
                     }
@@ -799,8 +799,9 @@ public interface Row extends Unfiltered, Iterable<ColumnData>
                     complexBuilder.newColumn(column);
                     complexCells.clear();
                     DeletionTime complexDeletion = DeletionTime.LIVE;
-                    for (ColumnData data : versions)
+                    for (int i=0, isize=versions.size(); i<isize; i++)
                     {
+                        ColumnData data = versions.get(i);
                         ComplexColumnData cd = (ComplexColumnData)data;
                         if (cd.complexDeletion().supersedes(complexDeletion))
                             complexDeletion = cd.complexDeletion();
diff --git a/src/java/org/apache/cassandra/utils/MergeIterator.java b/src/java/org/apache/cassandra/utils/MergeIterator.java
index 1f196fb..6713dd0 100644
--- a/src/java/org/apache/cassandra/utils/MergeIterator.java
+++ b/src/java/org/apache/cassandra/utils/MergeIterator.java
@@ -52,8 +52,9 @@ public abstract class MergeIterator<In,Out> extends AbstractIterator<Out> implem
 
     public void close()
     {
-        for (Iterator<In> iterator : this.iterators)
+        for (int i=0, isize=iterators.size(); i<isize; i++)
         {
+            Iterator<In> iterator = iterators.get(i);
             try
             {
                 if (iterator instanceof AutoCloseable)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org