You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by lu...@apache.org on 2026/04/23 17:02:29 UTC

(cassandra-analytics) branch trunk updated: CASSANALYTICS-156: Reading BTI may require partitions and rows indexes Patch by Lukasz Antoniak; Reviewed by Yifan Cai for CASSANALYTICS-156

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

lukasz-antoniak pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/cassandra-analytics.git


The following commit(s) were added to refs/heads/trunk by this push:
     new a5241234 CASSANALYTICS-156: Reading BTI may require partitions and rows indexes Patch by Lukasz Antoniak; Reviewed by Yifan Cai for CASSANALYTICS-156
a5241234 is described below

commit a5241234aa53027f77c8309202c02261cb1c0997
Author: Lukasz Antoniak <Lu...@gmail.com>
AuthorDate: Wed Apr 22 12:06:53 2026 +0200

    CASSANALYTICS-156: Reading BTI may require partitions and rows indexes
    Patch by Lukasz Antoniak; Reviewed by Yifan Cai for CASSANALYTICS-156
---
 CHANGES.txt                                         |  1 +
 .../org/apache/cassandra/spark/data/SSTable.java    |  6 +++---
 .../spark/data/partitioner/SingleReplicaTests.java  | 21 ++++++++++++++++-----
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/CHANGES.txt b/CHANGES.txt
index fb5e79a2..c436add1 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,6 @@
 0.4.0
 -----
+ * Reading BTI may require partitions and rows indexes (CASSANALYTICS-156)
  * Make KafkaPublisher class generic to publish GenericRecords for different value serializers (CASSANALYTICS-154)
  * Cannot read start offset from BTI index with big partitions (CASSANALYTICS-151)
  * BufferingInputStream fails to read last unaligned chunk (CASSANALYTICS-147)
diff --git a/cassandra-analytics-common/src/main/java/org/apache/cassandra/spark/data/SSTable.java b/cassandra-analytics-common/src/main/java/org/apache/cassandra/spark/data/SSTable.java
index 61214e6f..f2febcbe 100644
--- a/cassandra-analytics-common/src/main/java/org/apache/cassandra/spark/data/SSTable.java
+++ b/cassandra-analytics-common/src/main/java/org/apache/cassandra/spark/data/SSTable.java
@@ -111,10 +111,10 @@ public abstract class SSTable implements Serializable, CassandraFile
         {
             throw new IncompleteSSTableException(FileType.SUMMARY, FileType.INDEX);
         }
-        // For BTI format, we just need partitions index
-        if (isBtiFormat() && isMissing(FileType.PARTITIONS_INDEX))
+        // For BTI format, we may need both - partitions and rows index
+        if (isBtiFormat() && (isMissing(FileType.PARTITIONS_INDEX) || isMissing(FileType.ROWS_INDEX)))
         {
-            throw new IncompleteSSTableException(FileType.PARTITIONS_INDEX);
+            throw new IncompleteSSTableException(FileType.PARTITIONS_INDEX, FileType.ROWS_INDEX);
         }
     }
 
diff --git a/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/data/partitioner/SingleReplicaTests.java b/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/data/partitioner/SingleReplicaTests.java
index acaa4de2..434f8f63 100644
--- a/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/data/partitioner/SingleReplicaTests.java
+++ b/cassandra-analytics-core/src/test/java/org/apache/cassandra/spark/data/partitioner/SingleReplicaTests.java
@@ -84,12 +84,20 @@ public class SingleReplicaTests
         runTest(dataFileName, false, FileType.SUMMARY);
     }
 
-    @ParameterizedTest
-    @MethodSource("dataFileNames")
-    public void testMissingOnlyIndexFile(String dataFileName) throws ExecutionException, InterruptedException, IOException
+    @Test
+    public void testBigMissingOnlyIndexFile() throws ExecutionException, InterruptedException, IOException
     {
         // Index.db can be missing if we can use Summary.db
-        runTest(dataFileName, false, FileType.INDEX);
+        runTest("na-1-big-Data.db", false, FileType.INDEX);
+    }
+
+    @Test
+    public void testBtiMissingPartitionsRowsIndexFile()
+    {
+        assertThatThrownBy(() -> runTest("da-1-bti-Data.db", true, FileType.PARTITIONS_INDEX))
+        .isInstanceOf(IOException.class);
+        assertThatThrownBy(() -> runTest("da-1-bti-Data.db", true, FileType.ROWS_INDEX))
+        .isInstanceOf(IOException.class);
     }
 
     @ParameterizedTest
@@ -268,6 +276,9 @@ public class SingleReplicaTests
 
     public static List<Named<String>> dataFileNames()
     {
-        return Arrays.asList(Named.of("BIG", "na-1-big-Data.db"));
+        return Arrays.asList(
+        Named.of("BIG", "na-1-big-Data.db"),
+        Named.of("BTI", "da-1-bti-Data.db")
+        );
     }
 }


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