All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hubspot.singularity.hooks.AbstractSingularityWebhookAsyncHandler Maven / Gradle / Ivy

There is a newer version: 1.5.0
Show newest version
package com.hubspot.singularity.hooks;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.hubspot.mesos.JavaUtils;
import com.hubspot.singularity.SingularityWebhook;
import com.ning.http.client.AsyncCompletionHandler;
import com.ning.http.client.Response;

public abstract class AbstractSingularityWebhookAsyncHandler extends AsyncCompletionHandler  {

  private static final Logger LOG = LoggerFactory.getLogger(AbstractSingularityWebhookAsyncHandler.class);

  protected final SingularityWebhook webhook;
  protected final T update;
  private final long start;
  private final boolean shouldDeleteUpdateOnFailure;

  public AbstractSingularityWebhookAsyncHandler(SingularityWebhook webhook, T update, boolean shouldDeleteUpdateOnFailure) {
    this.webhook = webhook;
    this.update = update;
    this.shouldDeleteUpdateOnFailure = shouldDeleteUpdateOnFailure;

    this.start = System.currentTimeMillis();
  }

  @Override
  public void onThrowable(Throwable t) {
    LOG.trace("Webhook {} for {} failed after {}", webhook.getUri(), update, JavaUtils.duration(start), t);

    if (shouldDeleteUpdateOnFailure) {
      deleteWebhookUpdate();
    }
  }

  public boolean shouldDeleteUpdateDueToQueueAboveCapacity() {
    return shouldDeleteUpdateOnFailure;
  }

  @Override
  public Response onCompleted(Response response) throws Exception {
    LOG.trace("Webhook {} for {} completed with {} after {}", webhook.getUri(), update, response.getStatusCode(), JavaUtils.duration(start));

    if (response.hasResponseBody()) {
      LOG.trace("Webhook response message is: '{}'", response.getResponseBody());
    }

    if (JavaUtils.isHttpSuccess(response.getStatusCode()) || shouldDeleteUpdateOnFailure) {
      deleteWebhookUpdate();
    }

    return response;
  }

  public abstract void deleteWebhookUpdate();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy