in sdk-java/src/main/java/com/spotify/confidence/GrpcEventUploader.java [50:86]
public CompletableFuture<Boolean> upload(List<Event> events) {
final PublishEventsRequest request =
PublishEventsRequest.newBuilder()
.setClientSecret(clientSecret)
.setSendTime(clock.getTimestamp())
.setSdk(sdk)
.addAllEvents(events)
.build();
return GrpcUtil.toCompletableFuture(
stub.withDeadlineAfter(5, TimeUnit.SECONDS).publishEvents(request))
.thenApply(
publishEventsResponse -> {
final List<Event> eventsInRequest = request.getEventsList();
if (publishEventsResponse.getErrorsCount() == 0) {
log.debug(
String.format("Successfully published %d events", eventsInRequest.size()));
} else {
log.error(
String.format(
"Published batch with %d events, of which %d failed. Failed events are of type: %s",
eventsInRequest.size(),
publishEventsResponse.getErrorsCount(),
publishEventsResponse.getErrorsList().stream()
.map(e -> eventsInRequest.get(e.getIndex()).getEventDefinition())
.collect(Collectors.toSet())));
}
return true;
})
.exceptionally(
(throwable -> {
log.error(
String.format("Publishing batch failed with reason: %s", throwable.getMessage()),
throwable);
return !RETRYABLE_STATUS_CODES.contains(Status.fromThrowable(throwable).getCode());
}));
}