Skip to content

Commit d7af8bf

Browse files
committed
Close stuff when constructing CategorizePackedValuesBlockHash fails
1 parent 9f770d5 commit d7af8bf

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

x-pack/plugin/esql/compute/src/main/java/org/elasticsearch/compute/aggregation/blockhash/CategorizePackedValuesBlockHash.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
public class CategorizePackedValuesBlockHash extends BlockHash {
4040

4141
private final AggregatorMode aggregatorMode;
42-
private final List<GroupSpec> specs;
4342
private final CategorizeBlockHash categorizeBlockHash;
4443
private final PackedValuesBlockHash packedValuesBlockHash;
4544

@@ -52,14 +51,20 @@ public class CategorizePackedValuesBlockHash extends BlockHash {
5251
) {
5352
super(blockFactory);
5453
this.aggregatorMode = aggregatorMode;
55-
this.specs = specs;
56-
categorizeBlockHash = new CategorizeBlockHash(blockFactory, specs.get(0).channel(), aggregatorMode, analysisRegistry);
5754

58-
List<GroupSpec> newSpecs = new ArrayList<>(specs);
59-
newSpecs.set(0, new GroupSpec(-1, ElementType.INT));
60-
packedValuesBlockHash = new PackedValuesBlockHash(newSpecs, blockFactory, emitBatchSize);
61-
62-
// TODO: close stuff upon failure
55+
List<GroupSpec> packedValuesBlockHashSpecs = new ArrayList<>(specs);
56+
packedValuesBlockHashSpecs.set(0, new GroupSpec(-1, ElementType.INT));
57+
58+
boolean success = false;
59+
try {
60+
categorizeBlockHash = new CategorizeBlockHash(blockFactory, specs.get(0).channel(), aggregatorMode, analysisRegistry);
61+
packedValuesBlockHash = new PackedValuesBlockHash(packedValuesBlockHashSpecs, blockFactory, emitBatchSize);
62+
success = true;
63+
} finally {
64+
if (success == false) {
65+
close();
66+
}
67+
}
6368
}
6469

6570
@Override

0 commit comments

Comments
 (0)