Github user franz1981 commented on a diff in the pull request: https://github.com/apache/activemq-artemis/pull/2369#discussion_r224839730 --- Diff: artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/cursor/impl/PageCursorProviderImpl.java --- @@ -599,6 +600,29 @@ private long checkMinPage(Collection<PageSubscription> cursorList) { } + private void deliverIfNecessary(Collection<PageSubscription> cursorList) { + long minPage = Long.MAX_VALUE; + PageSubscription slowSubscription = null; + int nonEmptyCursorNum = 0; + + for (PageSubscription cursor : cursorList) { + long firstPage = cursor.getFirstPage(); + + // the cursor will return -1 if the cursor is empty + if (firstPage >= 0) { + nonEmptyCursorNum++; + if (firstPage < minPage) { + minPage = firstPage; + slowSubscription = cursor.getQueue().getMessageCount() == 0 ? cursor : null; + } + } + } + + if (nonEmptyCursorNum > 1 && slowSubscription != null) { --- End diff -- @clebertsuconic @wy96f Not sure but deliverIfNecessary could be written simlar to this one? ``` private void deliverIfNecessary(Collection<PageSubscription> cursorList, long minPage) { for (PageSubscription cursor : cursorList) { long firstPage = cursor.getFirstPage(); if (firstPage == minPage) { if (cursor.getQueue().getMessageCount() == 0) { cursor.getQueue().deliverAsync(); break; } } } } ``` As long as minPage is not Long.MAX_VALUE (it shouldn't be)...
---