Skip to content

RANGER-5519: introduce ranger-common-utils module#879

Merged
mneethiraj merged 4 commits intoapache:masterfrom
mneethiraj:RANGER-5519
Mar 20, 2026
Merged

RANGER-5519: introduce ranger-common-utils module#879
mneethiraj merged 4 commits intoapache:masterfrom
mneethiraj:RANGER-5519

Conversation

@mneethiraj
Copy link
Contributor

@mneethiraj mneethiraj commented Mar 18, 2026

What changes were proposed in this pull request?

Introduced module ranger-common-utils, to house classes that are shared across multiple modules. This module has much fewer dependencies compared to ranger-plugins-common, which eliminates unnecessary transient dependencies to be dragged in modules trying to reuse classes.

Classes that were duplicated in earlier commit, RANGER-5517, were removed with this changed.

How was this patch tested?

  • verified that all tests pass successfully
  • using docker setup, verified that all servers startup successfully and plugins enforce policies defined in Ranger admin

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new shared Maven module (ranger-common-utils) to host low-dependency utility classes reused across Ranger modules, replacing module-local duplicates and reducing transitive dependency drag from ranger-plugins-common.

Changes:

  • Added new common-utils Maven module that builds org.apache.ranger:ranger-common-utils and moved/shared several utility classes into it.
  • Updated multiple modules and distro assembly descriptors to depend on/include ranger-common-utils.
  • Removed Jersey-specific JsonUtilsV2.readResponse() helpers and updated call sites to parse response entities directly.

Reviewed changes

Copilot reviewed 39 out of 50 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
security-admin/pom.xml Adds dependency on ranger-common-utils.
pom.xml Adds common-utils module to reactor build profiles.
kms/src/main/java/org/apache/ranger/plugin/util/XMLUtils.java Removed duplicate XML utils (now provided via ranger-common-utils).
kms/src/main/java/org/apache/ranger/plugin/util/JsonUtilsV2.java Removed duplicate JSON utils (now provided via ranger-common-utils).
kms/src/main/java/org/apache/ranger/plugin/util/AutoClosableLock.java Removed duplicate lock helper (now provided via ranger-common-utils).
kms/pom.xml Adds dependency on ranger-common-utils.
intg/src/main/java/org/apache/ranger/RangerClient.java Replaces removed JsonUtilsV2.readResponse() usage with jsonToObj(response.getEntity(String.class), ...).
embeddedwebserver/src/main/java/org/apache/ranger/plugin/util/XMLUtils.java Removed duplicate XML utils (now provided via ranger-common-utils).
embeddedwebserver/pom.xml Adds dependency on ranger-common-utils.
distro/src/main/assembly/usersync.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/tagsync.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/storm-agent.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/sample-client.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/ranger-tools.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-yarn.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-trino.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-sqoop.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-solr.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-presto.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-ozone.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-kylin.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-kms.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-kafka.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-elasticsearch.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/plugin-atlas.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/knox-agent.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/kms.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/hive-agent.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/hdfs-agent.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/hbase-agent.xml Includes ranger-common-utils in distro packaging.
distro/src/main/assembly/admin-web.xml Swaps embeddedwebserver/lib includes to add ranger-common-utils.
common-utils/src/test/java/org/apache/ranger/plugin/util/RangerCacheTest.java Adds multi-threaded tests for RangerCache.
common-utils/src/test/java/org/apache/ranger/plugin/util/JavaScriptEditsTest.java Adds tests for JavaScriptEdits.replaceDoubleBrackets().
common-utils/src/main/java/org/apache/ranger/plugin/util/XMLUtils.java New shared XML utility implementation.
common-utils/src/main/java/org/apache/ranger/plugin/util/URLEncoderUtil.java New shared URL-encoding helper.
common-utils/src/main/java/org/apache/ranger/plugin/util/TimedEventUtil.java New shared timed-execution helper.
common-utils/src/main/java/org/apache/ranger/plugin/util/RangerReadWriteLock.java New shared read/write lock wrapper.
common-utils/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracerFactory.java New shared perf tracer factory.
common-utils/src/main/java/org/apache/ranger/plugin/util/RangerPerfTracer.java New shared perf tracing implementation.
common-utils/src/main/java/org/apache/ranger/plugin/util/RangerPerfCollectorTracer.java New shared perf tracer that records aggregated stats.
common-utils/src/main/java/org/apache/ranger/plugin/util/RangerCache.java New shared cache implementation (and minor refactors to use moved lock helper).
common-utils/src/main/java/org/apache/ranger/plugin/util/PerfDataRecorder.java Removes non-JDK/guava usage and returns unmodifiable snapshots.
common-utils/src/main/java/org/apache/ranger/plugin/util/JsonUtilsV2.java New shared JSON utility without Jersey ClientResponse helpers.
common-utils/src/main/java/org/apache/ranger/plugin/util/JavaScriptEdits.java New shared expression rewriter for [[...]] tokens.
common-utils/src/main/java/org/apache/ranger/plugin/util/AutoClosableLock.java New shared lock helper for try-with-resources usage.
common-utils/pom.xml Defines the new ranger-common-utils artifact and its (intended minimal) dependencies.
audit-server/server/pom.xml Adds dependency on ranger-common-utils.
agents-common/src/main/java/org/apache/ranger/plugin/contextenricher/RangerUserStoreRefresher.java Replaces removed JsonUtilsV2.readResponse() usage with jsonToObj(...).
agents-common/src/main/java/org/apache/ranger/admin/client/RangerAdminRESTClient.java Replaces removed JsonUtilsV2.readResponse() usage with jsonToObj(...).
agents-common/pom.xml Adds dependency on ranger-common-utils.
Comments suppressed due to low confidence (1)

common-utils/src/main/java/org/apache/ranger/plugin/util/PerfDataRecorder.java:101

  • exposeStatistics() copies instance.perfStatistics (a Collections.synchronizedMap) without synchronizing on the map (or using instance.lock). Iteration during new HashMap<>(...) can throw ConcurrentModificationException or produce inconsistent snapshots under concurrent recordStatistic() calls. Consider taking instance.lock.getReadLock() here and/or synchronizing on instance.perfStatistics while copying.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

@kumaab kumaab left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@mneethiraj mneethiraj merged commit a8f9717 into apache:master Mar 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants