You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by rc...@apache.org on 2025/09/16 02:33:34 UTC

(james-project) 02/02: JAMES-3758 Batch deletions

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

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

commit 3bdedd2ffa3072e9a3626ab116a7606a4228a1a3
Author: Benoit TELLIER <bt...@linagora.com>
AuthorDate: Sun Sep 14 00:04:32 2025 +0200

    JAMES-3758 Batch deletions
    
    This avoids sending too large messages
    when purging eg 1.000.000 messages.
---
 .../org/apache/james/webadmin/service/ExpireMailboxService.java    | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ExpireMailboxService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ExpireMailboxService.java
index 5aa5256dd1..17388a192e 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ExpireMailboxService.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/ExpireMailboxService.java
@@ -328,8 +328,11 @@ public class ExpireMailboxService {
         if (uids.isEmpty()) {
             return Mono.just(0);
         } else {
-            return Mono.from(mgr.deleteReactive(uids, session))
-                .thenReturn(uids.size());
+            return Flux.fromIterable(uids)
+                .window(128)
+                .flatMap(Flux::collectList)
+                .concatMap(u -> mgr.deleteReactive(u, session).thenReturn(u.size()))
+                .reduce(Integer::sum);
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org