You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2025/04/29 21:32:11 UTC
(ranger) 01/13: RANGER-5124 : The policy and tag active time are not in sync with the last update and policy download
This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch ranger-2.7
in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 21ae4575b855052bd5ac36355bd296796fd76c52
Author: Dineshkumar Yadav <di...@outlook.com>
AuthorDate: Tue Feb 4 11:33:50 2025 +0530
RANGER-5124 : The policy and tag active time are not in sync with the last update and policy download
(cherry picked from commit 852d89486e739349dc2c958d46c2df19a3e3326a)
---
.../main/java/org/apache/ranger/biz/AssetMgr.java | 71 +++++++++++++++-------
1 file changed, 48 insertions(+), 23 deletions(-)
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
index 7ad19bc0c..f1eac0865 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/AssetMgr.java
@@ -720,33 +720,58 @@ private void createOrUpdatePluginInfo(final RangerPluginInfo pluginInfo, int ent
final Runnable commitWork;
if (httpCode == HttpServletResponse.SC_NOT_MODIFIED) {
- if (!pluginActivityAuditLogNotModified) {
+ RangerPluginInfo dbObj = null;
+ Long pluginActivationTime = null;
+ Long dbLastActivationTime = null;
+
+ if (StringUtils.isNotBlank(pluginInfo.getServiceName())) {
+ XXPluginInfo xObj = rangerDaoManager.getXXPluginInfo().find(pluginInfo.getServiceName(), pluginInfo.getHostName(), pluginInfo.getAppType());
+ if (xObj != null) {
+ dbObj = pluginInfoService.populateViewObject(xObj);
+ }
+ }
+
+ // Create or update PluginInfo record after transaction is completed. If it is created in-line here
+ // then the TransactionManager will roll-back the changes because the HTTP return code is
+ // HttpServletResponse.SC_NOT_MODIFIED
+
+ switch (entityType) {
+ case RangerPluginInfo.ENTITY_TYPE_POLICIES:
+ isTagVersionResetNeeded = rangerDaoManager.getXXService().findAssociatedTagService(pluginInfo.getServiceName()) == null;
+
+ pluginActivationTime = pluginInfo.getPolicyActivationTime();
+ dbLastActivationTime = dbObj != null ? dbObj.getPolicyActivationTime() : null;
+ break;
+ case RangerPluginInfo.ENTITY_TYPE_TAGS:
+ isTagVersionResetNeeded = false;
+
+ pluginActivationTime = pluginInfo.getTagActivationTime();
+ dbLastActivationTime = dbObj != null ? dbObj.getTagActivationTime() : null;
+ break;
+ case RangerPluginInfo.ENTITY_TYPE_ROLES:
+ isTagVersionResetNeeded = false;
+
+ pluginActivationTime = pluginInfo.getRoleActivationTime();
+ dbLastActivationTime = dbObj != null ? dbObj.getRoleActivationTime() : null;
+ break;
+ case RangerPluginInfo.ENTITY_TYPE_USERSTORE:
+ isTagVersionResetNeeded = false;
+
+ pluginActivationTime = pluginInfo.getUserStoreActivationTime();
+ dbLastActivationTime = dbObj != null ? dbObj.getUserStoreActivationTime() : null;
+ break;
+ default:
+ isTagVersionResetNeeded = false;
+ break;
+ }
+
+ boolean isLastActivationTimeUpdateNeeded = pluginActivationTime != null && pluginActivationTime > 0 && (dbLastActivationTime == null || !dbLastActivationTime.equals(pluginActivationTime));
+
+ if (!pluginActivityAuditLogNotModified && !isLastActivationTimeUpdateNeeded) {
logger.debug("Not logging HttpServletResponse. SC_NOT_MODIFIED. To enable, set configuration: {}=true", PROP_PLUGIN_ACTIVITY_AUDIT_NOT_MODIFIED);
commitWork = null;
} else {
- // Create or update PluginInfo record after transaction is completed. If it is created in-line here
- // then the TransactionManager will roll-back the changes because the HTTP return code is
- // HttpServletResponse.SC_NOT_MODIFIED
-
- switch (entityType) {
- case RangerPluginInfo.ENTITY_TYPE_POLICIES:
- isTagVersionResetNeeded = rangerDaoManager.getXXService().findAssociatedTagService(pluginInfo.getServiceName()) == null;
- break;
- case RangerPluginInfo.ENTITY_TYPE_TAGS:
- isTagVersionResetNeeded = false;
- break;
- case RangerPluginInfo.ENTITY_TYPE_ROLES:
- isTagVersionResetNeeded = false;
- break;
- case RangerPluginInfo.ENTITY_TYPE_USERSTORE:
- isTagVersionResetNeeded = false;
- break;
- default:
- isTagVersionResetNeeded = false;
- break;
- }
-
commitWork = new Runnable() {
@Override
public void run() {