[AB-xxx] fixing modmail sometimes failing to log messages

This commit is contained in:
Sheldan
2021-08-14 08:02:04 +02:00
parent 222250b795
commit d01e46a9a6

View File

@@ -101,7 +101,7 @@ public class ModMailMessageServiceBean implements ModMailMessageService {
} }
List<Message> loadedMessages = new ArrayList<>(); List<Message> loadedMessages = new ArrayList<>();
CompletableFuture.allOf(threadHistoryFuture, privateHistoryFuture) CompletableFuture.allOf(threadHistoryFuture, privateHistoryFuture)
.thenCompose(unused -> loadMoreMessages(messageIdsToLoad, privateHistoryFuture.join(), modMailThread, threadHistoryFuture.join(), privateChannel, loadedMessages, 0)) .thenCompose(unused -> loadMoreMessages(messageIdsToLoad.size(), messageIdsToLoad, privateHistoryFuture.join(), modMailThread, threadHistoryFuture.join(), privateChannel, loadedMessages, 0))
.thenAccept(unused -> { .thenAccept(unused -> {
Set<Long> userIds = messageIds Set<Long> userIds = messageIds
.stream() .stream()
@@ -124,10 +124,11 @@ public class ModMailMessageServiceBean implements ModMailMessageService {
return future; return future;
} }
public CompletableFuture<Void> loadMoreMessages(List<Long> messagesToLoad, public CompletableFuture<Void> loadMoreMessages(Integer totalMessageCount, List<Long> messagesToLoad,
MessageHistory privateMessageHistory, TextChannel thread, MessageHistory privateMessageHistory, TextChannel thread,
MessageHistory threadMessageHistory, PrivateChannel dmChannel, List<Message> loadedMessages, Integer counter) { MessageHistory threadMessageHistory, PrivateChannel dmChannel, List<Message> loadedMessages, Integer counter) {
if(counter == messagesToLoad.size()) { // TODO maybe find a better mechanism for this... one which does not lead to infinite loops, but also doesnt miss out on history
if(counter.equals(totalMessageCount * 2)) {
log.warn("We encountered the maximum of {} iterations when loading modmail history - aborting.", messagesToLoad.size()); log.warn("We encountered the maximum of {} iterations when loading modmail history - aborting.", messagesToLoad.size());
return CompletableFuture.completedFuture(null); return CompletableFuture.completedFuture(null);
} }
@@ -171,7 +172,7 @@ public class ModMailMessageServiceBean implements ModMailMessageService {
privateHistoryAction = CompletableFuture.completedFuture(null); privateHistoryAction = CompletableFuture.completedFuture(null);
} }
return CompletableFuture.allOf(threadHistoryAction, privateHistoryAction) return CompletableFuture.allOf(threadHistoryAction, privateHistoryAction)
.thenCompose(lists -> loadMoreMessages(messagesToLoad, threadHistoryAction.join(), thread, privateHistoryAction.join(), dmChannel, loadedMessages, counter + 1)); .thenCompose(lists -> loadMoreMessages(totalMessageCount, messagesToLoad, threadHistoryAction.join(), thread, privateHistoryAction.join(), dmChannel, loadedMessages, counter + 1));
} }
} }