diff --git a/src/main/java/com/justinsb/etcd/EtcdClient.java b/src/main/java/com/justinsb/etcd/EtcdClient.java index 0e03515..0619ee5 100644 --- a/src/main/java/com/justinsb/etcd/EtcdClient.java +++ b/src/main/java/com/justinsb/etcd/EtcdClient.java @@ -257,7 +257,11 @@ protected List syncExecuteList(HttpUriRequest request) throws EtcdCl if (response.httpStatusCode != 200) { EtcdResult etcdResult = parseEtcdResult(response.json); - throw new EtcdClientException("Error listing keys", etcdResult); + if (etcdResult.errorCode == 100) { + return null; + } else { + throw new EtcdClientException("Error listing keys", etcdResult); + } } try { diff --git a/src/test/java/com/justinsb/etcd/SmokeTest.java b/src/test/java/com/justinsb/etcd/SmokeTest.java index f2b43a8..4cc6a2c 100644 --- a/src/test/java/com/justinsb/etcd/SmokeTest.java +++ b/src/test/java/com/justinsb/etcd/SmokeTest.java @@ -219,7 +219,15 @@ public void testList() throws Exception { Assert.assertEquals(true, result.dir); } } + + @Test + public void testListWithNonexistentKey() throws Exception { + String key = prefix + "/nonexistent"; + List listing = this.client.listChildren(key); + Assert.assertNull(listing); + } + @Test public void testGetVersion() throws Exception { String version = this.client.getVersion();