Skip to content

Commit 2a33050

Browse files
authored
Arrow: Add a precondition check in allocateFieldVector (#13949)
1 parent be03c99 commit 2a33050

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

arrow/src/main/java/org/apache/iceberg/arrow/vectorized/VectorizedArrowReader.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ public VectorHolder read(VectorHolder reuse, int numValsToRead) {
145145
// The vector may already exist but be of a different type, clear it
146146
if (vec != null) {
147147
vec.close();
148+
vec = null;
148149
}
149150

150151
allocateFieldVector(dictEncoded);
@@ -217,6 +218,10 @@ public VectorHolder read(VectorHolder reuse, int numValsToRead) {
217218
}
218219

219220
private void allocateFieldVector(boolean dictionaryEncodedVector) {
221+
// Allocate-only: caller must ensure there is no active vector in use.
222+
Preconditions.checkState(
223+
vec == null,
224+
"Allocation must be called only when the previous vector instance was released");
220225
if (dictionaryEncodedVector) {
221226
allocateDictEncodedVector();
222227
} else {

0 commit comments

Comments
 (0)