public CompletableFuture upload()

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());
            }));
  }