Martin Peřina has uploaded a new change for review.

Change subject: core: Fix group id on updating cache of users
......................................................................

core: Fix group id on updating cache of users

When db users cache is updated in refreshAllUsers, also user groups
membership is updated. If some group is not in local db, by mistake
externald id of group is set to user groups instead of internal one.
This patch sets empty GUID for groups that are not stored in local db.

Change-Id: I84d04420bc508f482c6ed4466e6937d8741bfe62
Bug-Url: https://bugzilla.redhat.com/1073235
Signed-off-by: Martin Perina <mper...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
1 file changed, 12 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/52/25452/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
index 5965087..37ba9ad 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/DbUserCacheManager.java
@@ -17,7 +17,9 @@
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.common.utils.ExternalId;
+import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.dao.DbGroupDAO;
 import org.ovirt.engine.core.dao.DbUserDAO;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
@@ -213,19 +215,23 @@
         StringBuilder groupNamesBuffer = new StringBuilder();
         StringBuilder groupIdsBuffer = new StringBuilder();
         boolean first = true;
+        DbGroupDAO groupDao = DbFacade.getInstance().getDbGroupDao();
         for (DirectoryGroup directoryGroup : directoryUser.getGroups()) {
             if (!first) {
                 groupNamesBuffer.append(',');
                 groupIdsBuffer.append(',');
             }
             DbGroup dbGroup = groupsMap.get(directoryGroup.getId());
-            if (dbGroup != null) {
-                groupNamesBuffer.append(dbGroup.getName());
-                groupIdsBuffer.append(dbGroup.getExternalId());
-            } else {
-                groupNamesBuffer.append(directoryGroup.getName());
-                groupIdsBuffer.append(directoryGroup.getId());
+            if (dbGroup == null) {
+                dbGroup = groupDao.getByExternalId(dbUser.getDomain(), 
directoryGroup.getId());
             }
+            if (dbGroup == null) {
+                // group is not in map or db
+                groupIdsBuffer.append(Guid.Empty);
+            } else {
+                groupIdsBuffer.append(dbGroup.getId());
+            }
+            groupNamesBuffer.append(directoryGroup.getName());
             first = false;
         }
         String groupNames = groupNamesBuffer.toString();


-- 
To view, visit http://gerrit.ovirt.org/25452
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I84d04420bc508f482c6ed4466e6937d8741bfe62
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.4
Gerrit-Owner: Martin Peřina <mper...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to