sk0x50 commented on code in PR #5197:
URL: https://github.com/apache/ignite-3/pull/5197#discussion_r1956185499


##########
modules/partition-replicator/src/integrationTest/java/org/apache/ignite/internal/partition/replicator/ItReplicaLifecycleTest.java:
##########
@@ -842,6 +856,97 @@ public void testScanCloseReplicaRequest(TestInfo testInfo) 
throws Exception {
         assertDoesNotThrow(tx::commit);
     }
 
+    @Test
+    public void testCatalogCompaction(TestInfo testInfo) throws Exception {
+        // How often we update the low water mark.
+        long lowWatermarkUpdateInterval = 500;
+        updateLowWatermarkConfiguration(lowWatermarkUpdateInterval * 2, 
lowWatermarkUpdateInterval);
+
+        // Prepare a single node cluster.
+        startNodes(testInfo, 1);
+        Node node = getNode(0);
+
+        List<Set<Assignment>> assignments = 
PartitionDistributionUtils.calculateAssignments(
+                nodes.values().stream().map(n -> n.name).collect(toList()), 1, 
1);
+
+        List<TokenizedAssignments> tokenizedAssignments = assignments.stream()
+                .map(a -> new TokenizedAssignmentsImpl(a, Integer.MIN_VALUE))
+                .collect(toList());
+
+        
placementDriver.setPrimary(node.clusterService.topologyService().localMember());
+        placementDriver.setAssignments(tokenizedAssignments);
+
+        forceCheckpoint(node);
+
+        String zoneName = "test-zone";
+        createZone(node, zoneName, 1, 1);
+        int zoneId = DistributionZonesTestUtil.getZoneId(node.catalogManager, 
zoneName, node.hybridClock.nowLong());
+        prepareTableIdToZoneIdConverter(node, zoneId);
+
+        int catalogVersion1 = getLatestCatalogVersion(node);
+
+        String tableName1 = "test_table_1";
+        createTable(node, zoneName, tableName1);
+
+        String tableName2 = "test_table_2";
+        createTable(node, zoneName, tableName2);
+
+        int tableId = TableTestUtils.getTableId(node.catalogManager, 
tableName2, node.hybridClock.nowLong());
+        TableViewInternal tableViewInternal = node.tableManager.table(tableId);
+        KeyValueView<Long, Integer> tableView = 
tableViewInternal.keyValueView(Long.class, Integer.class);
+
+        // Write 2 rows to the table.
+        Map<Long, Integer> valuesToPut = Map.of(0L, 0, 1L, 1);
+        assertDoesNotThrow(() -> tableView.putAll(null, valuesToPut));
+
+        forceCheckpoint(node);
+
+        int catalogVersion2 = getLatestCatalogVersion(node);
+        assertThat("The catalog version did not changed [initial=" + 
catalogVersion1 + ", latest=" + catalogVersion2 + ']',
+                catalogVersion2, greaterThan(catalogVersion1));
+
+        expectEarliestCatalogVersion(node, catalogVersion2 - 1);

Review Comment:
   Well, it can be added, however it seems to me that this check is not good 
enough. We cannot control compaction directly. We explicitly force checkpoint 
to ensure that compaction is triggered, but it can happen right before the 
`forceCheckpoint()` and so this may lead to assertion error. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@ignite.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to