[
https://issues.apache.org/jira/browse/RANGER-5476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18055723#comment-18055723
]
Naoki Takezoe commented on RANGER-5476:
---------------------------------------
[~vyommani] Thank you for your comment. That's totally right and the fix sounds
good.
On the other hand, implicitly requiring interruption from outside to stop
RangerAdminClient (= RangerRESTClient) might not be a good design in terms of
API contracts. Therefore, I though it might be better to add close() or stop()
to RangerAdminClient and call it from outside explicitly.
However, maybe API design is another subject. I'm fine with fixing
InterruptedException handling in RangerRESTClient.shoudRetry() alone. Will this
issue be fixed soon? Or should I send a pull request?
> PolicyRefresher.stopRefresher() can deadlock when retrying HTTP request
> -----------------------------------------------------------------------
>
> Key: RANGER-5476
> URL: https://issues.apache.org/jira/browse/RANGER-5476
> Project: Ranger
> Issue Type: Bug
> Components: Ranger
> Affects Versions: 2.7.0
> Reporter: Naoki Takezoe
> Priority: Major
>
> PolicyRefresher.stopRefresher() can deadlock when it's called while
> RangerRESTClient is retying server error, because it interrupts itself and
> wait for the completion of the thread:
> https://github.com/apache/ranger/blob/fe379d0a40aa4ae93c978a2c4d3a77fc9df2fbbb/agents-common/src/main/java/org/apache/ranger/plugin/util/PolicyRefresher.java#L167-L175
> But this interruption is caught and ignored in RangerRESTClient when it's
> retrying server error, so PolicyRefresher will never get control back.
> https://github.com/apache/ranger/blob/fe379d0a40aa4ae93c978a2c4d3a77fc9df2fbbb/agents-common/src/main/java/org/apache/ranger/plugin/util/RangerRESTClient.java#L665-L669
> It looks like RangerRESTClient shouldn't ignore InterruptedException but I
> wonder if it affect existing use cases. Rather, it might be better to provide
> a way to stop RangerAdminClient safely and call it from
> PolicyRefresher.stopRefresher().
--
This message was sent by Atlassian Jira
(v8.20.10#820010)