Make sure to release the semaphore even if something goes wrong getting messages.
This commit is contained in:
parent
9778775046
commit
7509520883
|
@ -227,7 +227,10 @@ public class WebSocketConnection implements MessageAvailabilityListener, Displac
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendNextMessagePage(final boolean cachedMessagesOnly, final CompletableFuture<Void> queueClearedFuture) {
|
private void sendNextMessagePage(final boolean cachedMessagesOnly, final CompletableFuture<Void> queueClearedFuture) {
|
||||||
final OutgoingMessageEntityList messages = messagesManager.getMessagesForDevice(account.getUuid(), device.getId(), client.getUserAgent(), cachedMessagesOnly);
|
try {
|
||||||
|
final OutgoingMessageEntityList messages = messagesManager
|
||||||
|
.getMessagesForDevice(account.getUuid(), device.getId(), client.getUserAgent(), cachedMessagesOnly);
|
||||||
|
|
||||||
final CompletableFuture<?>[] sendFutures = new CompletableFuture[messages.getMessages().size()];
|
final CompletableFuture<?>[] sendFutures = new CompletableFuture[messages.getMessages().size()];
|
||||||
|
|
||||||
for (int i = 0; i < messages.getMessages().size(); i++) {
|
for (int i = 0; i < messages.getMessages().size(); i++) {
|
||||||
|
@ -280,6 +283,9 @@ public class WebSocketConnection implements MessageAvailabilityListener, Displac
|
||||||
queueClearedFuture.completeExceptionally(cause);
|
queueClearedFuture.completeExceptionally(cause);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} catch (final Exception e) {
|
||||||
|
queueClearedFuture.completeExceptionally(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in New Issue