[
https://issues.apache.org/jira/browse/RANGER-5796?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Akash Gupta resolved RANGER-5796.
---------------------------------
Resolution: Fixed
> Concurrent GRANT requests from Impala-shell fail with MySQL x_policy unique
> constraint violations (UK_service_signature, UK_name_service_zone) exposed as
> raw HTTP 400 errors
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: RANGER-5796
> URL: https://issues.apache.org/jira/browse/RANGER-5796
> Project: Ranger
> Issue Type: Bug
> Components: Ranger
> Reporter: Akash Gupta
> Priority: Major
> Fix For: 3.0.0
>
>
> Ranger Admin's policy creation code path (invoked when Impala sends a GRANT
> request requiring a new policy row) is not thread-safe under concurrent
> execution.
> When multiple GRANT statements execute in parallel, they trigger MySQL Unique
> Key constraint violations on the table. Rather than handling these race
> conditions gracefully or surfacing a retryable conflict, Ranger Admin
> propagates raw JDBC/EclipseLink database stack traces to the REST client as
> an {*}HTTP 400 Bad Request{*}.
> {*}Sequential execution of the exact same GRANT operations on same resources
> and roles succeeds without issue{*}, confirming this is strictly a
> concurrency control defect in Ranger Admin.
> h3. *Expected Behaviour*
> # *Concurrency Control:* Ranger Admin should serialise or merge concurrent
> create-policy requests cleanly (returning HTTP 200), or return an actionable
> *HTTP 409 Conflict* allowing clients to retry.
> # *Unique Naming:* Policy name generation must use thread-safe unique
> identifiers (e.g., UUIDs or sequence numbers) rather than
> millisecond-resolution timestamps.
> # *Abstraction:* Internal database implementation details (EclipseLink,
> x_policy, JDBC types, MySQL 1062 codes) must never cross the REST API
> boundary.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)