Skip to content

Commit e3039f4

Browse files
committed
Merge branch '2.1'
2 parents 9d9bcc1 + 802b6e9 commit e3039f4

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

core/src/main/java/org/apache/accumulo/core/metadata/schema/TabletsMetadata.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,6 @@ public Iterator<TabletMetadata> iterator() {
644644
}
645645

646646
public Stream<TabletMetadata> stream() {
647-
return StreamSupport.stream(tablets.spliterator(), false);
647+
return StreamSupport.stream(tablets.spliterator(), false).onClose(this::close);
648648
}
649649
}

core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java

+25
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,17 @@
3535
import static org.junit.jupiter.api.Assertions.assertThrows;
3636
import static org.junit.jupiter.api.Assertions.assertTrue;
3737

38+
import java.lang.reflect.Constructor;
3839
import java.util.EnumSet;
3940
import java.util.LinkedHashSet;
41+
import java.util.List;
4042
import java.util.Map;
4143
import java.util.Set;
4244
import java.util.SortedMap;
4345
import java.util.TreeMap;
4446
import java.util.UUID;
47+
import java.util.concurrent.atomic.AtomicBoolean;
48+
import java.util.stream.Stream;
4549

4650
import org.apache.accumulo.core.data.Key;
4751
import org.apache.accumulo.core.data.Mutation;
@@ -283,6 +287,27 @@ public void testMergedColumn() {
283287
assertThrows(IllegalStateException.class, tm::hasMerged);
284288
}
285289

290+
@Test
291+
public void testTabletsMetadataAutoClose() throws Exception {
292+
AtomicBoolean closeCalled = new AtomicBoolean();
293+
AutoCloseable autoCloseable = () -> closeCalled.set(true);
294+
Constructor<TabletsMetadata> tmConstructor =
295+
TabletsMetadata.class.getDeclaredConstructor(AutoCloseable.class, Iterable.class);
296+
tmConstructor.setAccessible(true);
297+
298+
try (TabletsMetadata ignored = tmConstructor.newInstance(autoCloseable, List.of())) {
299+
// test autoCloseable used directly on TabletsMetadata
300+
}
301+
assertTrue(closeCalled.get());
302+
303+
closeCalled.set(false);
304+
try (Stream<TabletMetadata> ignored =
305+
tmConstructor.newInstance(autoCloseable, List.of()).stream()) {
306+
// test stream delegates to close on TabletsMetadata
307+
}
308+
assertTrue(closeCalled.get());
309+
}
310+
286311
private SortedMap<Key,Value> toRowMap(Mutation mutation) {
287312
SortedMap<Key,Value> rowMap = new TreeMap<>();
288313
mutation.getUpdates().forEach(cu -> {

0 commit comments

Comments
 (0)