Repository: aurora
Updated Branches:
refs/heads/master 264527896 -> b75dfb838
Exposed stats on number of offers rescinded and number of slaves lost.
Testing Done:
curl -w '\n' 192.168.33.7:8081/vars | grep offers_rescinded
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
offers_rescinded 0
curl -w '\n' 192.168.33.7:8081/vars | grep slaves_lost
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 30970 0 30970 0 0 4323k 0 --:--:-- --:--:-- --:--:-- 5040k
slaves_lost 0
./build-support/jenkins/build.sh
./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh
Reviewed at https://reviews.apache.org/r/54960/
Project: http://git-wip-us.apache.org/repos/asf/aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/aurora/commit/b75dfb83
Tree: http://git-wip-us.apache.org/repos/asf/aurora/tree/b75dfb83
Diff: http://git-wip-us.apache.org/repos/asf/aurora/diff/b75dfb83
Branch: refs/heads/master
Commit: b75dfb8386f674151d702b510d5a9c3c9a3c82c7
Parents: 2645278
Author: Pradyumna Kaushik <[email protected]>
Authored: Fri Jan 13 13:09:17 2017 -0800
Committer: Zameer Manji <[email protected]>
Committed: Fri Jan 13 13:09:17 2017 -0800
----------------------------------------------------------------------
.../aurora/scheduler/mesos/MesosSchedulerImpl.java | 17 ++++++++++++++---
.../scheduler/mesos/MesosSchedulerImplTest.java | 8 +++++++-
2 files changed, 21 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/aurora/blob/b75dfb83/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
----------------------------------------------------------------------
diff --git
a/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
b/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
index d63bfc1..7b2614f 100644
--- a/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
+++ b/src/main/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImpl.java
@@ -17,6 +17,7 @@ import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import java.util.List;
import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicLong;
import javax.inject.Inject;
import javax.inject.Qualifier;
@@ -29,6 +30,7 @@ import com.google.common.base.Preconditions;
import org.apache.aurora.GuiceUtils.AllowUnchecked;
import org.apache.aurora.common.application.Lifecycle;
import org.apache.aurora.common.inject.TimedInterceptor.Timed;
+import org.apache.aurora.common.stats.StatsProvider;
import org.apache.aurora.scheduler.HostOffer;
import org.apache.aurora.scheduler.TaskStatusHandler;
import org.apache.aurora.scheduler.base.SchedulerException;
@@ -76,6 +78,8 @@ public class MesosSchedulerImpl implements Scheduler {
private final Logger log;
private final CachedCounters counters;
private volatile boolean isRegistered = false;
+ private final AtomicLong offersRescinded;
+ private final AtomicLong slavesLost;
/**
* Binding annotation for the executor the incoming Mesos message handler
uses.
@@ -103,7 +107,8 @@ public class MesosSchedulerImpl implements Scheduler {
OfferManager offerManager,
EventSink eventSink,
@SchedulerExecutor Executor executor,
- CachedCounters counters) {
+ CachedCounters counters,
+ StatsProvider statsProvider) {
this(
storage,
@@ -113,7 +118,8 @@ public class MesosSchedulerImpl implements Scheduler {
eventSink,
executor,
counters,
- LoggerFactory.getLogger(MesosSchedulerImpl.class));
+ LoggerFactory.getLogger(MesosSchedulerImpl.class),
+ statsProvider);
}
@VisibleForTesting
@@ -125,7 +131,8 @@ public class MesosSchedulerImpl implements Scheduler {
EventSink eventSink,
Executor executor,
CachedCounters counters,
- Logger log) {
+ Logger log,
+ StatsProvider statsProvider) {
this.storage = requireNonNull(storage);
this.lifecycle = requireNonNull(lifecycle);
@@ -135,11 +142,14 @@ public class MesosSchedulerImpl implements Scheduler {
this.executor = requireNonNull(executor);
this.counters = requireNonNull(counters);
this.log = requireNonNull(log);
+ this.offersRescinded = statsProvider.makeCounter("offers_rescinded");
+ this.slavesLost = statsProvider.makeCounter("slaves_lost");
}
@Override
public void slaveLost(SchedulerDriver schedulerDriver, SlaveID slaveId) {
log.info("Received notification of lost agent: " + slaveId);
+ slavesLost.incrementAndGet();
}
@Override
@@ -195,6 +205,7 @@ public class MesosSchedulerImpl implements Scheduler {
public void offerRescinded(SchedulerDriver schedulerDriver, OfferID offerId)
{
log.info("Offer rescinded: " + offerId);
offerManager.cancelOffer(offerId);
+ offersRescinded.incrementAndGet();
}
private static void logStatusUpdate(Logger logger, TaskStatus status) {
http://git-wip-us.apache.org/repos/asf/aurora/blob/b75dfb83/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
----------------------------------------------------------------------
diff --git
a/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
b/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
index 242530a..ed48934 100644
---
a/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
+++
b/src/test/java/org/apache/aurora/scheduler/mesos/MesosSchedulerImplTest.java
@@ -62,6 +62,7 @@ import static org.apache.mesos.Protos.Offer;
import static org.easymock.EasyMock.anyString;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class MesosSchedulerImplTest extends EasyMockTest {
@@ -137,6 +138,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
private OfferManager offerManager;
private SchedulerDriver driver;
private EventSink eventSink;
+ private FakeStatsProvider statsProvider;
private MesosSchedulerImpl scheduler;
@@ -152,6 +154,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
statusHandler = createMock(TaskStatusHandler.class);
offerManager = createMock(OfferManager.class);
eventSink = createMock(EventSink.class);
+ statsProvider = new FakeStatsProvider();
scheduler = new MesosSchedulerImpl(
storageUtil.storage,
@@ -161,7 +164,8 @@ public class MesosSchedulerImplTest extends EasyMockTest {
eventSink,
MoreExecutors.sameThreadExecutor(),
new CachedCounters(new FakeStatsProvider()),
- logger);
+ logger,
+ statsProvider);
driver = createMock(SchedulerDriver.class);
}
@@ -310,6 +314,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
control.replay();
scheduler.slaveLost(driver, SLAVE_ID);
+ assertEquals(1L, statsProvider.getLongValue("slaves_lost"));
}
@Test
@@ -326,6 +331,7 @@ public class MesosSchedulerImplTest extends EasyMockTest {
control.replay();
scheduler.offerRescinded(driver, OFFER_ID);
+ assertEquals(1L, statsProvider.getLongValue("offers_rescinded"));
}
@Test