MahmoudHassanen99 commented on code in PR #10872:
URL: https://github.com/apache/ozone/pull/10872#discussion_r3700048242
##########
hadoop-ozone/multitenancy-ranger/src/main/java/org/apache/hadoop/ozone/om/multitenant/RangerClientMultiTenantAccessController.java:
##########
@@ -313,6 +384,13 @@ public void deleteRole(String roleName) throws IOException
{
try {
client.deleteRole(roleName, shortName, rangerServiceName);
} catch (RangerServiceException e) {
+ // If the role does not exist, silently return.
+ // This makes tenant deletion tolerant of partial previous state,
+ // e.g. when one role was deleted but another was not.
+ if (isNotFoundException(e)) {
Review Comment:
Hi @smengcl,
Thanks for the feedback
We agree with your point, swallowing duplicate creation errors to return
success risks leaving mismatched policies in Ranger. That's why I've switched
creation back to a fail-fast approach.
We have updated the PR to remove generalized idempotency on creation while
keeping tenant deletion safe.
### Summary of Changes in this PR:
1. **Creation is Fail-Fast (`createPolicy` / `createRole`):** Removed
duplicate error suppression. If a Ranger policy or role already exists,
creation fails fast and aborts tenant provisioning cleanly to prevent policy
mismatch.
2. **Deletion is Idempotent (`deletePolicy` / `deleteRole`):** Retained the
`isRoleNotFoundException` logic (handling Ranger's HTTP 400/404 response quirks
for missing entities) strictly for `delete` calls. This guarantees tenant
teardown is idempotent and won't block OM metadata cleanup if a Ranger entity
is already gone.
3. **Mutable Collections Fix:** Converted all lists in `toRangerPolicy` to
`new ArrayList<>()` to fix `UnsupportedOperationException` issues with Ranger
SDK calls.
### Local CLI Verification & Behavior Proof:
* **OM Level Safety:** Verified that OM blocks duplicate tenant creation
early at the metadata level (`TENANT_ALREADY_EXISTS`) before touching Ranger.
* **Ranger Level Safety:** Verified that if a matching role/policy already
exists in Ranger, the creation call fails fast with an explicit Ranger
exception rather than returning a false-positive success over mismatched
resources.
* **Deletion Lifecycle:** Verified that deleting a tenant unlinks OM
metadata and safely cleans up Ranger entities without throwing 400/404 errors
if entities are missing.
Any full, state-aware policy reconciliation for creation/updates will be
handled in a dedicated follow-up Jira.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]