From d84fb0e76118400c5d3a7abc81f82aff80146c46 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 26 Feb 2021 12:49:35 +0000 Subject: [PATCH] Pass message IDs to cleanup hooks in batches. --- .../bramble/api/cleanup/CleanupHook.java | 14 +++++++------- .../bramble/cleanup/CleanupManagerImpl.java | 6 ++---- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java index 6c6af239d..afc8443a3 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/cleanup/CleanupHook.java @@ -7,6 +7,8 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; +import java.util.Collection; + /** * An interface for registering a hook with the {@link CleanupManager} * that will be called when a message's cleanup deadline is reached. @@ -15,12 +17,10 @@ import org.briarproject.bramble.api.sync.MessageId; public interface CleanupHook { /** - * Called when a message's cleanup deadline is reached. If this method - * returns true, a {@link MessagesCleanedUpEvent} will be broadcast. - * - * @return True if the message has been deleted, or false if it has not, - * in which case the message's cleanup timer will be stopped + * Called when the cleanup deadlines of one or more messages are reached. + * When this method returns, a {@link MessagesCleanedUpEvent} will be + * broadcast. */ - boolean deleteMessage(Transaction txn, GroupId g, MessageId m) - throws DbException; + void deleteMessages(Transaction txn, GroupId g, + Collection messageIds) throws DbException; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java index b87c53f4c..9d328479c 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/cleanup/CleanupManagerImpl.java @@ -137,6 +137,7 @@ class CleanupManagerImpl implements CleanupManager, Service, EventListener { if (LOG.isLoggable(INFO)) { LOG.info(messageIds.size() + " messages to delete"); } + for (MessageId m : messageIds) db.stopCleanupTimer(txn, m); Group group = db.getGroup(txn, groupId); ClientMajorVersion cv = new ClientMajorVersion(group.getClientId(), group.getMajorVersion()); @@ -144,10 +145,7 @@ class CleanupManagerImpl implements CleanupManager, Service, EventListener { if (hook == null) { throw new IllegalStateException("No cleanup hook for " + cv); } - for (MessageId m : messageIds) { - hook.deleteMessage(txn, groupId, m); - db.stopCleanupTimer(txn, m); - } + hook.deleteMessages(txn, groupId, messageIds); txn.attach(new MessagesCleanedUpEvent(groupId, messageIds)); } }