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

com.hubspot.singularity.mesos.SingularityMesosFrameworkMessageHandler Maven / Gradle / Ivy

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

import static java.nio.charset.StandardCharsets.UTF_8;

import org.apache.mesos.Protos;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.inject.Inject;
import com.google.inject.Singleton;
import com.hubspot.singularity.SingularityCreateResult;
import com.hubspot.singularity.SingularityTaskShellCommandUpdate;
import com.hubspot.singularity.data.TaskManager;
import com.hubspot.singularity.data.transcoders.SingularityTranscoderException;
import com.hubspot.singularity.data.transcoders.Transcoder;

@Singleton
public class SingularityMesosFrameworkMessageHandler {

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

  private final TaskManager taskManager;
  private final Transcoder commandUpdateTranscoder;

  @Inject
  public SingularityMesosFrameworkMessageHandler(TaskManager taskManager, Transcoder commandUpdateTranscoder) {
    this.taskManager = taskManager;
    this.commandUpdateTranscoder = commandUpdateTranscoder;
  }

  public void handleMessage(Protos.ExecutorID executorId, Protos.SlaveID slaveId, byte[] data) {
    try {
      SingularityTaskShellCommandUpdate shellUpdate = commandUpdateTranscoder.fromBytes(data);

      SingularityCreateResult saved = taskManager.saveTaskShellCommandUpdate(shellUpdate);

      LOG.debug("Saved {} with result {}", shellUpdate, saved);
    } catch (SingularityTranscoderException ste) {
      LOG.warn("Framework message {} not a commandUpdate", new String(data, UTF_8));
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy