This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 299a110536428a0a28674a5781459622c0b90997
Author: Benoit Tellier <[email protected]>
AuthorDate: Thu Jun 10 10:51:17 2021 +0700

    JAMES-3594 LDAP user counting: avoid extra requests for each users
---
 .../org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java     | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git 
a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
 
b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
index 81b8375..7a2301b 100644
--- 
a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
+++ 
b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyLDAPUsersDAO.java
@@ -276,7 +276,7 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, 
Configurable {
     @Override
     public int countUsers() throws UsersRepositoryException {
         try {
-            return Mono.fromCallable(() -> doCountUsers())
+            return Mono.fromCallable(() -> Math.toIntExact(doCountUsers()))
                 .retryWhen(ldapConfiguration.retrySpec())
                 .block();
         } catch (Exception e) {
@@ -287,11 +287,15 @@ public class ReadOnlyLDAPUsersDAO implements UsersDAO, 
Configurable {
         }
     }
 
-    private int doCountUsers() throws LDAPException {
-        return Math.toIntExact(getValidUsers().stream()
+    private long doCountUsers() throws LDAPException {
+        if (!ldapConfiguration.getRestriction().isActivated()) {
+            return getAllUsernamesFromLDAP().count();
+        }
+
+        return getValidUsers().stream()
             .map(Throwing.function(this::buildUser).sneakyThrow())
             .flatMap(Optional::stream)
-            .count());
+            .count();
     }
 
     @Override

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to