> On Oct. 17, 2024, 5:17 p.m., Abhay Kulkarni wrote:
> > Added a minor comment to the test code. It looks good overall. However, it
> > is not clear how and where the dedupTags() is called multiple times during
> > the initialization of the plugin as described in the original description
> > of the JIRA.
I saw this issue in Ranger admin while retrieving policies for a given
resource, from RangerAdminTagEnricher.enrich(). Here is the stack from jstack.
RangerTagEnricher.setServiceTags() calls dedupTags() on a ServiceTags instance
that is already deduped!
"http-nio-6080-exec-8" #40 daemon prio=5 os_prio=0 tid=0x0000ffffa5212000
nid=0x15d1 runnable [0x0000ffff7b3f9000]
java.lang.Thread.State: RUNNABLE
at
org.apache.ranger.plugin.util.ServiceTags.dedupTags(ServiceTags.java:283)
at
org.apache.ranger.plugin.contextenricher.RangerTagEnricher.setServiceTags(RangerTagEnricher.java:322)
at
org.apache.ranger.plugin.contextenricher.RangerTagEnricher.setServiceTags(RangerTagEnricher.java:290)
at
org.apache.ranger.common.RangerAdminTagEnricher.refreshTagsIfNeeded(RangerAdminTagEnricher.java:164)
- locked <0x00000000f8a29400> (a
org.apache.ranger.common.RangerAdminTagEnricher)
at
org.apache.ranger.common.RangerAdminTagEnricher.enrich(RangerAdminTagEnricher.java:105)
at
org.apache.ranger.plugin.service.RangerDefaultRequestProcessor.enrich(RangerDefaultRequestProcessor.java:158)
at
org.apache.ranger.plugin.service.RangerDefaultRequestProcessor.preProcess(RangerDefaultRequestProcessor.java:137)
at
org.apache.ranger.biz.RangerPolicyAdminImpl.getMatchingPolicies(RangerPolicyAdminImpl.java:647)
> On Oct. 17, 2024, 5:17 p.m., Abhay Kulkarni wrote:
> > agents-common/src/test/java/org/apache/ranger/plugin/util/TestServiceTags.java
> > Lines 85 (patched)
> > <https://reviews.apache.org/r/75232/diff/1/?file=2293803#file2293803line85>
> >
> > Consider adding
> >
> > assertEquals(0, svcTags.dedupTags());
> >
> > after this line and after line 97.
Multiple calls to dedupTags() is covered in a separate test -
testDedup_DupTagsWithAttr_MultipleCalls(). Any reason to add it here as well?
May be testDedup_DupTagsWithAttr_MultipleCalls() can be removed then?
- Madhan
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/75232/#review226978
-----------------------------------------------------------
On Oct. 17, 2024, 1:29 a.m., Madhan Neethiraj wrote:
>
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/75232/
> -----------------------------------------------------------
>
> (Updated Oct. 17, 2024, 1:29 a.m.)
>
>
> Review request for ranger, Abhishek Kumar, Anand Nadar, Asit Vadhavkar,
> Fateh Singh, Abhay Kulkarni, Pradeep Agrawal, Radhika Kundam, Ramesh Mani,
> and Sailaja Polavarapu.
>
>
> Bugs: RANGER-4956
> https://issues.apache.org/jira/browse/RANGER-4956
>
>
> Repository: ranger
>
>
> Description
> -------
>
> - dedupTags() on a ServiceTag instance can result in infinite loop when its
> cachedTags is already populated (by an earlier call or via a copy
> constructor), as it tries to replace a tag with itself. Updated to avoid such
> replacement.
>
>
> Diffs
> -----
>
> agents-common/src/main/java/org/apache/ranger/plugin/util/ServiceTags.java
> cc2ebe53a
>
> agents-common/src/test/java/org/apache/ranger/plugin/util/TestServiceTags.java
> PRE-CREATION
>
>
> Diff: https://reviews.apache.org/r/75232/diff/1/
>
>
> Testing
> -------
>
> - added unit tests to verify dedupTags()
> - verified that all unit tests pass
>
>
> Thanks,
>
> Madhan Neethiraj
>
>