Ejemplo n.º 1
0
  @Override
  public synchronized void onLogResponse(LogSyncResponse logSyncResponse) throws IOException {
    if (logSyncResponse.getDeliveryStatuses() != null) {
      boolean isAlreadyScheduled = false;
      for (LogDeliveryStatus response : logSyncResponse.getDeliveryStatuses()) {
        if (response.getResult() == SyncResponseResultType.SUCCESS) {
          storage.removeRecordBlock(response.getRequestId());
        } else {
          storage.notifyUploadFailed(response.getRequestId());
          final LogDeliveryErrorCode errorCode = response.getErrorCode();
          final LogFailoverCommand controller = this.controller;
          executorContext
              .getCallbackExecutor()
              .execute(
                  new Runnable() {
                    @Override
                    public void run() {
                      strategy.onFailure(controller, errorCode);
                    }
                  });
          isAlreadyScheduled = true;
        }
        LOG.info("Removing bucket id from timeouts: {}", response.getRequestId());
        timeouts.remove(response.getRequestId());
      }

      if (!isAlreadyScheduled) {
        processUploadDecision(strategy.isUploadNeeded(storage.getStatus()));
      }
    }
  }