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

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


The following commit(s) were added to refs/heads/master by this push:
     new f9af5f1c29 Add option for ignoreCrcMismatch for upsert-compaction task 
(#14668)
f9af5f1c29 is described below

commit f9af5f1c29ce5d0f4402e5970c35a86211a5f3a8
Author: Pratik Tibrewal <tibrewalprati...@gmail.com>
AuthorDate: Wed Dec 18 00:25:22 2024 +0530

    Add option for ignoreCrcMismatch for upsert-compaction task (#14668)
---
 .../java/org/apache/pinot/core/common/MinionConstants.java     | 10 ++++++++++
 .../tasks/upsertcompaction/UpsertCompactionTaskExecutor.java   |  9 ++++++---
 .../tasks/upsertcompaction/UpsertCompactionTaskGenerator.java  |  3 +++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git 
a/pinot-core/src/main/java/org/apache/pinot/core/common/MinionConstants.java 
b/pinot-core/src/main/java/org/apache/pinot/core/common/MinionConstants.java
index 08b0eca909..7a276d6254 100644
--- a/pinot-core/src/main/java/org/apache/pinot/core/common/MinionConstants.java
+++ b/pinot-core/src/main/java/org/apache/pinot/core/common/MinionConstants.java
@@ -219,6 +219,16 @@ public class MinionConstants {
      */
     public static final String SNAPSHOT = "snapshot";
 
+    /**
+     * key representing if upsert compaction task executor should ignore crc 
mismatch or not during task execution
+     */
+    public static final String IGNORE_CRC_MISMATCH_KEY = "ignoreCrcMismatch";
+
+    /**
+     * default value for the key IGNORE_CRC_MISMATCH_KEY: false
+     */
+    public static final boolean DEFAULT_IGNORE_CRC_MISMATCH = false;
+
     /**
      * number of segments to query in one batch to fetch valid doc id 
metadata, by default 500
      */
diff --git 
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
 
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
index 12f9ee12bb..e5469a22ae 100644
--- 
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
+++ 
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskExecutor.java
@@ -26,6 +26,7 @@ import 
org.apache.pinot.common.metadata.segment.SegmentZKMetadataCustomMapModifi
 import org.apache.pinot.common.metrics.MinionMeter;
 import org.apache.pinot.common.restlet.resources.ValidDocIdsType;
 import org.apache.pinot.core.common.MinionConstants;
+import org.apache.pinot.core.common.MinionConstants.UpsertCompactionTask;
 import org.apache.pinot.core.minion.PinotTaskConfig;
 import 
org.apache.pinot.plugin.minion.tasks.BaseSingleSegmentConversionExecutor;
 import org.apache.pinot.plugin.minion.tasks.MinionTaskUtils;
@@ -58,11 +59,13 @@ public class UpsertCompactionTaskExecutor extends 
BaseSingleSegmentConversionExe
     TableConfig tableConfig = getTableConfig(tableNameWithType);
 
     String validDocIdsTypeStr =
-        
configs.getOrDefault(MinionConstants.UpsertCompactionTask.VALID_DOC_IDS_TYPE, 
ValidDocIdsType.SNAPSHOT.name());
+        configs.getOrDefault(UpsertCompactionTask.VALID_DOC_IDS_TYPE, 
ValidDocIdsType.SNAPSHOT.name());
     SegmentMetadataImpl segmentMetadata = new SegmentMetadataImpl(indexDir);
     String originalSegmentCrcFromTaskGenerator = 
configs.get(MinionConstants.ORIGINAL_SEGMENT_CRC_KEY);
     String crcFromDeepStorageSegment = segmentMetadata.getCrc();
-    if 
(!originalSegmentCrcFromTaskGenerator.equals(crcFromDeepStorageSegment)) {
+    boolean ignoreCrcMismatch = 
Boolean.parseBoolean(configs.getOrDefault(UpsertCompactionTask.IGNORE_CRC_MISMATCH_KEY,
+        String.valueOf(UpsertCompactionTask.DEFAULT_IGNORE_CRC_MISMATCH)));
+    if (!ignoreCrcMismatch && 
!originalSegmentCrcFromTaskGenerator.equals(crcFromDeepStorageSegment)) {
       String message = String.format("Crc mismatched between ZK and deepstore 
copy of segment: %s. Expected crc "
               + "from ZK: %s, crc from deepstore: %s", segmentName, 
originalSegmentCrcFromTaskGenerator,
           crcFromDeepStorageSegment);
@@ -145,7 +148,7 @@ public class UpsertCompactionTaskExecutor extends 
BaseSingleSegmentConversionExe
   protected SegmentZKMetadataCustomMapModifier 
getSegmentZKMetadataCustomMapModifier(PinotTaskConfig pinotTaskConfig,
       SegmentConversionResult segmentConversionResult) {
     return new 
SegmentZKMetadataCustomMapModifier(SegmentZKMetadataCustomMapModifier.ModifyMode.UPDATE,
-        
Collections.singletonMap(MinionConstants.UpsertCompactionTask.TASK_TYPE + 
MinionConstants.TASK_TIME_SUFFIX,
+        Collections.singletonMap(UpsertCompactionTask.TASK_TYPE + 
MinionConstants.TASK_TIME_SUFFIX,
             String.valueOf(System.currentTimeMillis())));
   }
 }
diff --git 
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskGenerator.java
 
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskGenerator.java
index 2fa814db01..77aaefc069 100644
--- 
a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskGenerator.java
+++ 
b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/upsertcompaction/UpsertCompactionTaskGenerator.java
@@ -185,6 +185,9 @@ public class UpsertCompactionTaskGenerator extends 
BaseTaskGenerator {
         configs.put(MinionConstants.UPLOAD_URL_KEY, 
_clusterInfoAccessor.getVipUrl() + "/segments");
         configs.put(MinionConstants.ORIGINAL_SEGMENT_CRC_KEY, 
String.valueOf(segment.getCrc()));
         configs.put(UpsertCompactionTask.VALID_DOC_IDS_TYPE, 
validDocIdsType.toString());
+        configs.put(UpsertCompactionTask.IGNORE_CRC_MISMATCH_KEY,
+            
taskConfigs.getOrDefault(UpsertCompactionTask.IGNORE_CRC_MISMATCH_KEY,
+            String.valueOf(UpsertCompactionTask.DEFAULT_IGNORE_CRC_MISMATCH)));
         pinotTaskConfigs.add(new 
PinotTaskConfig(UpsertCompactionTask.TASK_TYPE, configs));
         numTasks++;
       }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to