package com.hubspot.singularity.mesos;
import java.util.concurrent.locks.ReentrantLock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
import com.hubspot.mesos.JavaUtils;
public class SingularitySchedulerLock {
private static final Logger LOG = LoggerFactory.getLogger(SingularitySchedulerLock.class);
private final ReentrantLock lock;
@Inject
public SingularitySchedulerLock() {
this.lock = new ReentrantLock();
}
public long lock(String name) {
final long start = System.currentTimeMillis();
LOG.info("{} - Locking", name);
lock.lock();
LOG.info("{} - Acquired ({})", name, JavaUtils.duration(start));
return System.currentTimeMillis();
}
public void unlock(String name, long start) {
LOG.info("{} - Unlocking ({})", name, JavaUtils.duration(start));
lock.unlock();
}
}