You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by ke...@apache.org on 2013/12/05 20:58:19 UTC
[7/9] git commit: Fixing error message for a held lock.
Fixing error message for a held lock.
Project: http://git-wip-us.apache.org/repos/asf/incubator-aurora/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-aurora/commit/24c99066
Tree: http://git-wip-us.apache.org/repos/asf/incubator-aurora/tree/24c99066
Diff: http://git-wip-us.apache.org/repos/asf/incubator-aurora/diff/24c99066
Branch: refs/heads/master
Commit: 24c99066791698274f8eb6f9669d58590fd2ac19
Parents: e7b3da9
Author: Maxim Khutornenko <mk...@twitter.com>
Authored: Thu Dec 5 10:51:16 2013 -0800
Committer: Maxim Khutornenko <mk...@twitter.com>
Committed: Thu Dec 5 10:51:16 2013 -0800
----------------------------------------------------------------------
.../aurora/scheduler/state/LockManagerImpl.java | 17 ++++++++++---
.../scheduler/state/LockManagerImplTest.java | 25 ++++++++++++++++----
2 files changed, 34 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/24c99066/src/main/java/com/twitter/aurora/scheduler/state/LockManagerImpl.java
----------------------------------------------------------------------
diff --git a/src/main/java/com/twitter/aurora/scheduler/state/LockManagerImpl.java b/src/main/java/com/twitter/aurora/scheduler/state/LockManagerImpl.java
index 46aed98..4667f9f 100644
--- a/src/main/java/com/twitter/aurora/scheduler/state/LockManagerImpl.java
+++ b/src/main/java/com/twitter/aurora/scheduler/state/LockManagerImpl.java
@@ -22,6 +22,7 @@ import javax.inject.Inject;
import com.google.common.base.Optional;
import com.twitter.aurora.gen.Lock;
+import com.twitter.aurora.scheduler.base.JobKeys;
import com.twitter.aurora.scheduler.storage.LockStore;
import com.twitter.aurora.scheduler.storage.Storage;
import com.twitter.aurora.scheduler.storage.Storage.MutableStoreProvider;
@@ -62,7 +63,7 @@ class LockManagerImpl implements LockManager {
if (existingLock.isPresent()) {
throw new LockException(String.format(
"Operation for: %s is already in progress. Started at: %s. Current owner: %s.",
- lockKey,
+ formatLockKey(lockKey),
new Date(existingLock.get().getTimestampMs()).toString(),
existingLock.get().getUser()));
}
@@ -110,10 +111,20 @@ class LockManagerImpl implements LockManager {
if (stored.isPresent()) {
throw new LockException(String.format(
"Unable to perform operation for: %s. Use override/cancel option.",
- context));
+ formatLockKey(context)));
} else if (heldLock.isPresent()) {
- throw new LockException(String.format("Invalid operation context: %s", context));
+ throw new LockException(
+ String.format("Invalid operation context: %s", formatLockKey(context)));
}
}
}
+
+ private static String formatLockKey(ILockKey lockKey) {
+ switch (lockKey.getSetField()) {
+ case JOB:
+ return JobKeys.toPath(lockKey.getJob());
+ default:
+ return "Unknown lock key type: " + lockKey.getSetField();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-aurora/blob/24c99066/src/test/java/com/twitter/aurora/scheduler/state/LockManagerImplTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/com/twitter/aurora/scheduler/state/LockManagerImplTest.java b/src/test/java/com/twitter/aurora/scheduler/state/LockManagerImplTest.java
index cc6f3b7..ec0c8dd 100644
--- a/src/test/java/com/twitter/aurora/scheduler/state/LockManagerImplTest.java
+++ b/src/test/java/com/twitter/aurora/scheduler/state/LockManagerImplTest.java
@@ -21,7 +21,9 @@ import com.google.common.base.Optional;
import org.easymock.EasyMock;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import com.twitter.aurora.gen.Identity;
import com.twitter.aurora.gen.Lock;
@@ -52,6 +54,9 @@ public class LockManagerImplTest extends EasyMockTest {
private LockManager lockManager;
private long timestampMs;
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
@Before
public void setUp() throws Exception {
FakeClock clock = new FakeClock();
@@ -77,8 +82,9 @@ public class LockManagerImplTest extends EasyMockTest {
assertEquals(expected, actual);
}
- @Test(expected = LockException.class)
+ @Test
public void testAcquireLockInProgress() throws Exception {
+ expectLockException(JOB_KEY);
lockManager.acquireLock(LOCK_KEY, USER);
lockManager.acquireLock(LOCK_KEY, USER);
}
@@ -103,23 +109,32 @@ public class LockManagerImplTest extends EasyMockTest {
lockManager.validateIfLocked(LOCK_KEY, Optional.<ILock>absent());
}
- @Test(expected = LockException.class)
+ @Test
public void testValidateLockStoredNotEqualHeld() throws Exception {
+ expectLockException(JOB_KEY);
ILock lock = lockManager.acquireLock(LOCK_KEY, USER);
lock = ILock.build(lock.newBuilder().setUser("bob"));
lockManager.validateIfLocked(LOCK_KEY, Optional.of(lock));
}
- @Test(expected = LockException.class)
+ @Test
public void testValidateLockStoredNotEqualHeldWithHeldNull() throws Exception {
+ expectLockException(JOB_KEY);
lockManager.acquireLock(LOCK_KEY, USER);
lockManager.validateIfLocked(LOCK_KEY, Optional.<ILock>absent());
}
- @Test(expected = LockException.class)
+ @Test
public void testValidateLockNotStoredHeld() throws Exception {
+ IJobKey jobKey = JobKeys.from("r", "e", "n");
+ expectLockException(jobKey);
ILock lock = lockManager.acquireLock(LOCK_KEY, USER);
- ILockKey key = ILockKey.build(LockKey.job(JobKeys.from("r", "e", "n").newBuilder()));
+ ILockKey key = ILockKey.build(LockKey.job(jobKey.newBuilder()));
lockManager.validateIfLocked(key, Optional.of(lock));
}
+
+ private void expectLockException(IJobKey key) {
+ expectedException.expect(LockException.class);
+ expectedException.expectMessage(JobKeys.toPath(key));
+ }
}