DatabaseClient: check CopyCat response for errors
Change-Id: I49e46bd78293a4ca0f363a6b97e0995e46c05027
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseClient.java b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseClient.java
index 71608ef..c3f9118 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseClient.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/service/impl/DatabaseClient.java
@@ -16,6 +16,7 @@
import net.kuujo.copycat.cluster.Member;
import net.kuujo.copycat.cluster.TcpMember;
import net.kuujo.copycat.event.LeaderElectEvent;
+import net.kuujo.copycat.protocol.Response.Status;
import net.kuujo.copycat.protocol.SubmitRequest;
import net.kuujo.copycat.protocol.SubmitResponse;
import net.kuujo.copycat.spi.protocol.ProtocolClient;
@@ -107,7 +108,11 @@
log.debug("Sent {} to {}", request, currentLeader);
try {
- return (T) submitResponse.get(TIMEOUT_MS, TimeUnit.MILLISECONDS).result();
+ final SubmitResponse response = submitResponse.get(TIMEOUT_MS, TimeUnit.MILLISECONDS);
+ if (response.status() != Status.OK) {
+ throw new DatabaseException(response.error());
+ }
+ return (T) response.result();
} catch (ExecutionException | InterruptedException e) {
throw new DatabaseException(e);
} catch (TimeoutException e) {