Skip to content

Commit 6bd00d1

Browse files
Remove DirectReaders
1 parent 19c46c3 commit 6bd00d1

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

src/java/org/apache/cassandra/index/sai/disk/v1/bitpack/AbstractBlockPackedReader.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
*/
1818
package org.apache.cassandra.index.sai.disk.v1.bitpack;
1919

20+
import java.util.Set;
21+
import java.util.stream.Collectors;
2022
import javax.annotation.concurrent.NotThreadSafe;
2123

24+
import com.google.common.collect.Sets;
25+
2226
import org.apache.cassandra.index.sai.disk.io.SeekingRandomAccessInput;
23-
import org.apache.cassandra.index.sai.disk.v1.DirectReaders;
2427
import org.apache.cassandra.index.sai.disk.v1.LongArray;
2528
import org.apache.lucene.store.IndexInput;
2629
import org.apache.lucene.util.LongValues;
@@ -29,6 +32,11 @@
2932
@NotThreadSafe
3033
public abstract class AbstractBlockPackedReader implements LongArray
3134
{
35+
public static final Set<Integer> SUPPORTED_BITS_PER_VALUE = Sets.newHashSet(0, 1, 2, 4, 8, 12, 16, 20, 24, 28, 32, 40, 48, 56, 64);
36+
public static final String SUPPORTED_BITS_PER_VALUE_STRING = SUPPORTED_BITS_PER_VALUE.stream()
37+
.map(i -> Integer.toString(i))
38+
.collect(Collectors.joining(", "));
39+
3240
private final int blockShift;
3341
private final int blockMask;
3442
private final long valueCount;

src/java/org/apache/cassandra/index/sai/disk/v1/bitpack/BlockPackedReader.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.apache.cassandra.index.sai.disk.io.IndexFileUtils;
2323
import org.apache.cassandra.index.sai.disk.io.IndexInputReader;
24-
import org.apache.cassandra.index.sai.disk.v1.DirectReaders;
2524
import org.apache.cassandra.index.sai.disk.v1.LongArray;
2625
import org.apache.cassandra.index.sai.disk.v1.SAICodecUtils;
2726
import org.apache.cassandra.io.util.FileHandle;
@@ -32,6 +31,8 @@
3231
import static org.apache.cassandra.index.sai.disk.v1.SAICodecUtils.checkBlockSize;
3332
import static org.apache.cassandra.index.sai.disk.v1.SAICodecUtils.numBlocks;
3433
import static org.apache.cassandra.index.sai.disk.v1.SAICodecUtils.readVLong;
34+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE;
35+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE_STRING;
3536
import static org.apache.lucene.util.BitUtil.zigZagDecode;
3637

3738
/**
@@ -70,10 +71,10 @@ public BlockPackedReader(FileHandle file, NumericValuesMeta meta) throws IOExcep
7071
{
7172
final int token = in.readByte() & 0xFF;
7273
final int bitsPerValue = token >>> BlockPackedWriter.BPV_SHIFT;
73-
if (!DirectReaders.SUPPORTED_BITS_PER_VALUE.contains(bitsPerValue))
74+
if (!SUPPORTED_BITS_PER_VALUE.contains(bitsPerValue))
7475
{
7576
throw new CorruptIndexException(String.format("Block %d is corrupted. Bits per value is %d. Supported values are %s.",
76-
i, bitsPerValue, DirectReaders.SUPPORTED_BITS_PER_VALUE_STRING), in);
77+
i, bitsPerValue, SUPPORTED_BITS_PER_VALUE_STRING), in);
7778
}
7879
if ((token & BlockPackedWriter.MIN_VALUE_EQUALS_0) == 0)
7980
{

src/java/org/apache/cassandra/index/sai/disk/v1/bitpack/MonotonicBlockPackedReader.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import org.apache.cassandra.index.sai.disk.io.IndexFileUtils;
2323
import org.apache.cassandra.index.sai.disk.io.IndexInputReader;
24-
import org.apache.cassandra.index.sai.disk.v1.DirectReaders;
2524
import org.apache.cassandra.index.sai.disk.v1.LongArray;
2625
import org.apache.cassandra.index.sai.disk.v1.SAICodecUtils;
2726
import org.apache.cassandra.io.util.FileHandle;
@@ -33,6 +32,8 @@
3332

3433
import static org.apache.cassandra.index.sai.disk.v1.SAICodecUtils.checkBlockSize;
3534
import static org.apache.cassandra.index.sai.disk.v1.SAICodecUtils.numBlocks;
35+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE;
36+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE_STRING;
3637

3738
/**
3839
* Provides non-blocking, random access to a stream written with {@link MonotonicBlockPackedWriter}.
@@ -71,10 +72,10 @@ public MonotonicBlockPackedReader(FileHandle file, NumericValuesMeta meta) throw
7172
minValuesBuilder.add(in.readZLong());
7273
averages[i] = Float.intBitsToFloat(in.readInt());
7374
final int bitsPerValue = in.readVInt();
74-
if (!DirectReaders.SUPPORTED_BITS_PER_VALUE.contains(bitsPerValue))
75+
if (!SUPPORTED_BITS_PER_VALUE.contains(bitsPerValue))
7576
{
7677
throw new CorruptIndexException(String.format("Block %d is corrupted. Bits per value is %d. Supported values are %s.",
77-
i, bitsPerValue, DirectReaders.SUPPORTED_BITS_PER_VALUE_STRING), in);
78+
i, bitsPerValue, SUPPORTED_BITS_PER_VALUE_STRING), in);
7879
}
7980
blockBitsPerValue[i] = (byte) bitsPerValue;
8081
// when bitsPerValue is 0, block offset won't be used

src/java/org/apache/cassandra/index/sai/disk/v1/postings/PostingsReader.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@
3939
import org.apache.lucene.util.LongValues;
4040
import org.apache.lucene.util.packed.DirectReader;
4141

42+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE;
43+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE_STRING;
44+
4245

4346
/**
4447
* Reads, decompresses and decodes postings lists written by {@link PostingsWriter}.
@@ -112,21 +115,21 @@ public BlocksSummary(IndexInput input, long offset) throws IOException
112115
long maxBlockValuesOffset = input.getFilePointer() + maxBlockValuesLength;
113116

114117
byte offsetBitsPerValue = input.readByte();
115-
if (!DirectReaders.SUPPORTED_BITS_PER_VALUE.contains((int)offsetBitsPerValue))
118+
if (!SUPPORTED_BITS_PER_VALUE.contains((int)offsetBitsPerValue))
116119
{
117120
throw new CorruptIndexException(
118121
String.format("Postings list header is corrupted: Bits per value for block offsets is %s. Supported values are %s.",
119-
offsetBitsPerValue, DirectReaders.SUPPORTED_BITS_PER_VALUE_STRING), input);
122+
offsetBitsPerValue, SUPPORTED_BITS_PER_VALUE_STRING), input);
120123
}
121124
this.offsets = new LongArrayReader(randomAccessInput, offsetBitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(randomAccessInput, offsetBitsPerValue, input.getFilePointer()), numBlocks);
122125

123126
input.seek(maxBlockValuesOffset);
124127
byte valuesBitsPerValue = input.readByte();
125-
if (!DirectReaders.SUPPORTED_BITS_PER_VALUE.contains((int)valuesBitsPerValue))
128+
if (!SUPPORTED_BITS_PER_VALUE.contains((int)valuesBitsPerValue))
126129
{
127130
throw new CorruptIndexException(
128131
String.format("Postings list header is corrupted: Bits per value for value samples is %s. Supported values are %s.",
129-
valuesBitsPerValue, DirectReaders.SUPPORTED_BITS_PER_VALUE_STRING), input);
132+
valuesBitsPerValue, SUPPORTED_BITS_PER_VALUE_STRING), input);
130133
}
131134
this.maxValues = new LongArrayReader(randomAccessInput, valuesBitsPerValue == 0 ? LongValues.ZEROES : DirectReader.getInstance(randomAccessInput, valuesBitsPerValue, input.getFilePointer()), numBlocks);
132135
}

src/java/org/apache/cassandra/index/sai/disk/v1/postings/PostingsWriter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
import org.agrona.collections.LongArrayList;
3131
import org.apache.cassandra.index.sai.IndexContext;
3232
import org.apache.cassandra.index.sai.disk.io.IndexOutputWriter;
33-
import org.apache.cassandra.index.sai.disk.v1.DirectReaders;
33+
import org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader;
3434
import org.apache.cassandra.index.sai.postings.PostingList;
3535
import org.apache.cassandra.index.sai.disk.format.IndexComponent;
3636
import org.apache.cassandra.index.sai.disk.format.IndexDescriptor;
@@ -42,6 +42,8 @@
4242

4343
import static com.google.common.base.Preconditions.checkArgument;
4444
import static java.lang.Math.max;
45+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE;
46+
import static org.apache.cassandra.index.sai.disk.v1.bitpack.AbstractBlockPackedReader.SUPPORTED_BITS_PER_VALUE_STRING;
4547

4648

4749
/**
@@ -278,8 +280,8 @@ private void writePostingsBlock() throws IOException
278280
{
279281
final int bitsPerValue = maxDelta == 0 ? 0 : DirectWriter.unsignedBitsRequired(maxDelta);
280282

281-
assert DirectReaders.SUPPORTED_BITS_PER_VALUE.contains(bitsPerValue) :
282-
"Unsupported bits per value of " + bitsPerValue + " bits. Supported values are: " + DirectReaders.SUPPORTED_BITS_PER_VALUE_STRING;
283+
assert SUPPORTED_BITS_PER_VALUE.contains(bitsPerValue) :
284+
"Unsupported bits per value of " + bitsPerValue + " bits. Supported values are: " + SUPPORTED_BITS_PER_VALUE_STRING;
283285

284286
// If we have a first posting, indicating that this is the first block in the posting list
285287
// then write it prior to the deltas.

0 commit comments

Comments
 (0)