This is an automated email from the ASF dual-hosted git repository. cshannon pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/accumulo.git
commit e3039f402bcc725dbf48e18a22f69267323935f1 Merge: 9d9bcc1d48 802b6e948d Author: Christopher L. Shannon <cshan...@apache.org> AuthorDate: Mon Mar 11 11:16:11 2024 -0400 Merge branch '2.1' .../core/metadata/schema/TabletsMetadata.java | 2 +- .../core/metadata/schema/TabletMetadataTest.java | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --cc core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java index 5287d689ba,67a22ccd3f..9a352b82d5 --- a/core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java +++ b/core/src/test/java/org/apache/accumulo/core/metadata/schema/TabletMetadataTest.java @@@ -41,7 -41,8 +43,9 @@@ import java.util.Map import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; +import java.util.UUID; + import java.util.concurrent.atomic.AtomicBoolean; + import java.util.stream.Stream; import org.apache.accumulo.core.data.Key; import org.apache.accumulo.core.data.Mutation; @@@ -259,30 -259,27 +263,51 @@@ public class TabletMetadataTest assertFalse(tm.hasCurrent()); } + @Test + public void testMergedColumn() { + KeyExtent extent = new KeyExtent(TableId.of("5"), new Text("df"), new Text("da")); + + // Test merged column set + Mutation mutation = TabletColumnFamily.createPrevRowMutation(extent); + MERGED_COLUMN.put(mutation, MERGED_VALUE); + TabletMetadata tm = TabletMetadata.convertRow(toRowMap(mutation).entrySet().iterator(), + EnumSet.of(ColumnType.MERGED), true); + assertTrue(tm.hasMerged()); + + // Column not set + mutation = TabletColumnFamily.createPrevRowMutation(extent); + tm = TabletMetadata.convertRow(toRowMap(mutation).entrySet().iterator(), + EnumSet.of(ColumnType.MERGED), true); + assertFalse(tm.hasMerged()); + + // MERGED Column not fetched + mutation = TabletColumnFamily.createPrevRowMutation(extent); + tm = TabletMetadata.convertRow(toRowMap(mutation).entrySet().iterator(), + EnumSet.of(ColumnType.PREV_ROW), true); + assertThrows(IllegalStateException.class, tm::hasMerged); + } + + @Test + public void testTabletsMetadataAutoClose() throws Exception { + AtomicBoolean closeCalled = new AtomicBoolean(); + AutoCloseable autoCloseable = () -> closeCalled.set(true); + Constructor<TabletsMetadata> tmConstructor = + TabletsMetadata.class.getDeclaredConstructor(AutoCloseable.class, Iterable.class); + tmConstructor.setAccessible(true); + + try (TabletsMetadata ignored = tmConstructor.newInstance(autoCloseable, List.of())) { + // test autoCloseable used directly on TabletsMetadata + } + assertTrue(closeCalled.get()); + + closeCalled.set(false); + try (Stream<TabletMetadata> ignored = + tmConstructor.newInstance(autoCloseable, List.of()).stream()) { + // test stream delegates to close on TabletsMetadata + } + assertTrue(closeCalled.get()); + } + private SortedMap<Key,Value> toRowMap(Mutation mutation) { SortedMap<Key,Value> rowMap = new TreeMap<>(); mutation.getUpdates().forEach(cu -> {