This is an automated email from the ASF dual-hosted git repository.

lzljs3620320 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/paimon.git


The following commit(s) were added to refs/heads/master by this push:
     new 594be5af7 [fix][test] fix unstable random test for manifest full 
compaction (#4354)
594be5af7 is described below

commit 594be5af7264cbc80d1a6b56c1221341b3bdd1e1
Author: LsomeYeah <[email protected]>
AuthorDate: Mon Oct 21 23:22:24 2024 +0800

    [fix][test] fix unstable random test for manifest full compaction (#4354)
---
 .../paimon/manifest/ManifestFileMetaTest.java      | 34 ++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git 
a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
 
b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
index 32b64aa7e..9384eb888 100644
--- 
a/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
+++ 
b/paimon-core/src/test/java/org/apache/paimon/manifest/ManifestFileMetaTest.java
@@ -18,9 +18,11 @@
 
 package org.apache.paimon.manifest;
 
+import org.apache.paimon.data.BinaryRow;
 import org.apache.paimon.fs.Path;
 import org.apache.paimon.fs.local.LocalFileIO;
 import org.apache.paimon.operation.ManifestFileMerger;
+import org.apache.paimon.partition.PartitionPredicate;
 import org.apache.paimon.types.IntType;
 import org.apache.paimon.types.RowType;
 import org.apache.paimon.utils.FailingFileIO;
@@ -40,6 +42,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
@@ -448,7 +452,7 @@ public class ManifestFileMetaTest extends 
ManifestFileMetaTestBase {
         containSameIdentifyEntryFile(fullCompacted, entryIdentifierExpected);
     }
 
-    @RepeatedTest(100)
+    @RepeatedTest(1000)
     public void testRandomFullCompaction() throws Exception {
         List<ManifestFileMeta> input = new ArrayList<>();
         Set<FileEntry.Identifier> manifestEntrySet = new HashSet<>();
@@ -485,6 +489,32 @@ public class ManifestFileMetaTest extends 
ManifestFileMetaTestBase {
                         .collect(Collectors.toList());
         long mustMergeSize =
                 
mustMergedFiles.stream().map(ManifestFileMeta::fileSize).reduce(0L, Long::sum);
+        // manifest files which might be merged
+        List<ManifestFileMeta> toBeMerged = new LinkedList<>(input);
+        if (getPartitionType().getFieldCount() > 0) {
+            Set<BinaryRow> deletePartitions =
+                    deleteManifestEntrySet.stream()
+                            .map(entry -> entry.partition)
+                            .collect(Collectors.toSet());
+            PartitionPredicate predicate =
+                    PartitionPredicate.fromMultiple(getPartitionType(), 
deletePartitions);
+            if (predicate != null) {
+                Iterator<ManifestFileMeta> iterator = toBeMerged.iterator();
+                while (iterator.hasNext()) {
+                    ManifestFileMeta file = iterator.next();
+                    if (file.fileSize() < suggerstSize || 
file.numDeletedFiles() > 0) {
+                        continue;
+                    }
+                    if (!predicate.test(
+                            file.numAddedFiles() + file.numDeletedFiles(),
+                            file.partitionStats().minValues(),
+                            file.partitionStats().maxValues(),
+                            file.partitionStats().nullCounts())) {
+                        iterator.remove();
+                    }
+                }
+            }
+        }
         // manifest files which were not written after full compaction
         List<ManifestFileMeta> notMergedFiles =
                 input.stream()
@@ -503,7 +533,7 @@ public class ManifestFileMetaTest extends 
ManifestFileMetaTestBase {
         if (mustMergeSize < sizeTrigger) {
             assertThat(fullCompacted).isEmpty();
             assertThat(newMetas).isEmpty();
-        } else if (mustMergedFiles.size() <= 1) {
+        } else if (toBeMerged.size() <= 1) {
             assertThat(fullCompacted).isEmpty();
             assertThat(newMetas).isEmpty();
         } else {

Reply via email to