in sdk-java/src/main/java/com/spotify/confidence/EventSenderEngineImpl.java [100:128]
private void pollLoop() {
Instant latestFlushTime = Instant.now();
ArrayList<com.spotify.confidence.events.v1.Event> events = new ArrayList<>();
while (true) {
final var event = sendQueue.poll();
if (event != null) {
if ("manual_flash".equals(event.getEventDefinition())) {
log.debug("Starting events upload due to manual flush");
upload(events);
events = new ArrayList<>();
continue;
} else {
events.add(event);
}
} else {
if (intakeClosed) break;
LockSupport.parkUntil(Instant.now().plus(maxFlushInterval).toEpochMilli());
}
final boolean passedMaxFlushInterval =
!maxFlushInterval.isZero()
&& Duration.between(latestFlushTime, Instant.now()).compareTo(maxFlushInterval) > 0;
if (events.size() == maxBatchSize || passedMaxFlushInterval) {
upload(events);
events = new ArrayList<>();
latestFlushTime = Instant.now();
}
}
upload(events);
}