Add global pinot.md5.disabled switch and enforce MD5 guards#17800
Add global pinot.md5.disabled switch and enforce MD5 guards#17800xiangfu0 merged 1 commit intoapache:masterfrom
Conversation
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #17800 +/- ##
=========================================
Coverage 63.23% 63.23%
- Complexity 1454 1456 +2
=========================================
Files 3185 3186 +1
Lines 191549 191551 +2
Branches 29301 29306 +5
=========================================
+ Hits 121117 121127 +10
+ Misses 60967 60951 -16
- Partials 9465 9473 +8
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Adds a global runtime switch to disable MD5-dependent code paths across Pinot, wiring it into node startup and enforcing the restriction in upsert/dedup hashing and filesystem plugins.
Changes:
- Introduces
pinot.md5.disabled(CommonConstants) and new global switchPinotMd5Mode, initialized from broker/controller/server/minion configs. - Enforces MD5 disabling for upsert/dedup table validation and in
HashUtils.hashPrimaryKey(...)(runtime fail-safe). - Updates ADLS/S3 filesystem behavior to respect the global MD5 disable switch and adds targeted unit tests.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
pinot-spi/src/main/java/org/apache/pinot/spi/utils/PinotMd5Mode.java |
Adds global MD5 disable mode holder. |
pinot-spi/src/test/java/org/apache/pinot/spi/utils/PinotMd5ModeTest.java |
Tests setter/getter and system-property initialization behavior. |
pinot-spi/src/main/java/org/apache/pinot/spi/utils/CommonConstants.java |
Adds pinot.md5.disabled config key constant. |
pinot-server/src/main/java/org/apache/pinot/server/starter/helix/BaseServerStarter.java |
Initializes PinotMd5Mode from server config at startup. |
pinot-broker/src/main/java/org/apache/pinot/broker/broker/helix/BaseBrokerStarter.java |
Initializes PinotMd5Mode from broker config at startup. |
pinot-controller/src/main/java/org/apache/pinot/controller/BaseControllerStarter.java |
Initializes PinotMd5Mode from controller config at startup. |
pinot-minion/src/main/java/org/apache/pinot/minion/BaseMinionStarter.java |
Initializes PinotMd5Mode from minion config at startup. |
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/TableConfigUtils.java |
Rejects MD5 hash function for upsert/dedup when MD5 is globally disabled. |
pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/TableConfigUtilsTest.java |
Adds validation tests for upsert/dedup MD5 rejection when disabled. |
pinot-segment-local/src/main/java/org/apache/pinot/segment/local/utils/HashUtils.java |
Adds runtime guard to block MD5 hashing when disabled. |
pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/HashUtilsTest.java |
Adds test ensuring MD5 hashing throws when disabled. |
pinot-plugins/pinot-file-system/pinot-s3/src/main/java/org/apache/pinot/plugin/filesystem/S3Config.java |
Rejects useLegacyMd5Plugin=true when MD5 is globally disabled. |
pinot-plugins/pinot-file-system/pinot-s3/src/test/java/org/apache/pinot/plugin/filesystem/S3ConfigTest.java |
Adds test for legacy MD5 plugin rejection when disabled. |
pinot-plugins/pinot-file-system/pinot-adls/src/main/java/org/apache/pinot/plugin/filesystem/ADLSGen2PinotFS.java |
Forces checksum behavior off when MD5 is globally disabled; avoids computing file MD5 when disabled. |
pinot-plugins/pinot-file-system/pinot-adls/src/test/java/org/apache/pinot/plugin/filesystem/test/ADLSGen2PinotFSTest.java |
Adds test coverage for checksum being disabled when MD5 is disabled. |
...file-system/pinot-adls/src/main/java/org/apache/pinot/plugin/filesystem/ADLSGen2PinotFS.java
Outdated
Show resolved
Hide resolved
...em/pinot-adls/src/test/java/org/apache/pinot/plugin/filesystem/test/ADLSGen2PinotFSTest.java
Outdated
Show resolved
Hide resolved
pinot-spi/src/main/java/org/apache/pinot/spi/utils/PinotMd5Mode.java
Outdated
Show resolved
Hide resolved
6ee97e6 to
a8d6623
Compare
pinot-spi/src/main/java/org/apache/pinot/spi/utils/PinotMd5Mode.java
Outdated
Show resolved
Hide resolved
...file-system/pinot-adls/src/main/java/org/apache/pinot/plugin/filesystem/ADLSGen2PinotFS.java
Show resolved
Hide resolved
a8d6623 to
d4423a7
Compare
Summary
pinot.md5.disabled(defaultfalse) viaCommonConstantsand newPinotMd5Mode.PinotMd5Modefrom node startup config in broker/controller/server/minion.HashUtils.hashPrimaryKey(...).md5()behavior unchanged.enableChecksum=truewhile MD5 is globally disabled, fail fast withIllegalStateException.useLegacyMd5Plugin=truewhen MD5 is globally disabled.Testing
./mvnw -pl pinot-spi -Dtest=PinotMd5ModeTest test./mvnw -pl pinot-segment-local -am -Dtest=TableConfigUtilsTest,HashUtilsTest -Dsurefire.failIfNoSpecifiedTests=false -Dcheckstyle.skip=true test./mvnw -pl pinot-plugins/pinot-file-system/pinot-s3 -am -Dtest=S3ConfigTest -Dsurefire.failIfNoSpecifiedTests=false -Dcheckstyle.skip=true test./mvnw -pl pinot-plugins/pinot-file-system/pinot-adls -am -Dtest=ADLSGen2PinotFSTest -Dsurefire.failIfNoSpecifiedTests=false -Dcheckstyle.skip=true test./mvnw -pl pinot-broker,pinot-controller,pinot-server,pinot-minion -am -DskipTests -Dcheckstyle.skip=true compile