From e2013b91626a4c693053e9859add68ff371f2298 Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Fri, 30 Nov 2012 04:29:51 -0500
Subject: [PATCH] significantly reduce write operations to backing user system.

---
 src/com/gitblit/LdapUserService.java |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/com/gitblit/LdapUserService.java b/src/com/gitblit/LdapUserService.java
index 8da0ca3..b5d87a6 100644
--- a/src/com/gitblit/LdapUserService.java
+++ b/src/com/gitblit/LdapUserService.java
@@ -24,6 +24,9 @@
 import java.util.List;
 import java.util.Map;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import com.gitblit.models.TeamModel;
 import com.gitblit.models.UserModel;
 import com.gitblit.utils.ArrayUtils;
@@ -40,8 +43,6 @@
 import com.unboundid.ldap.sdk.extensions.StartTLSExtendedRequest;
 import com.unboundid.util.ssl.SSLUtil;
 import com.unboundid.util.ssl.TrustAllTrustManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 /**
  * Implementation of an LDAP user service.
@@ -122,15 +123,17 @@
                         }
                     }
 
-                    for (UserModel user : ldapUsers.values()) {
-                        // Push the ldap looked up values to backing file
-                        super.updateUserModel(user);
-                        if (!supportsTeamMembershipChanges()) {
-                            for (TeamModel userTeam : user.teams)
-                                updateTeamModel(userTeam);
-                        }
-                    }
+                    super.updateUserModels(ldapUsers.values());
 
+                    if (!supportsTeamMembershipChanges()) {
+                        final Map<String, TeamModel> userTeams = new HashMap<String, TeamModel>();
+                        for (UserModel user : ldapUsers.values()) {
+                            for (TeamModel userTeam : user.teams) {
+                                userTeams.put(userTeam.name, userTeam);
+                            }
+                        }
+                        updateTeamModels(userTeams.values());
+                    }
                 }
             } finally {
                 ldapConnection.close();

--
Gitblit v1.9.1