From c35751ec869b22fccc610508d59165259d8d2159 Mon Sep 17 00:00:00 2001 From: Zhongjie Wu Date: Thu, 17 Oct 2013 18:10:11 -0700 Subject: [PATCH] revision based on review --- .../routed/action/PerformParallelPutRequests.java | 61 +++++++++++----------- .../voldemort/store/routed/ZoneCountWriteTest.java | 9 +++- 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/java/voldemort/store/routed/action/PerformParallelPutRequests.java b/src/java/voldemort/store/routed/action/PerformParallelPutRequests.java index 6637fef11..f34ca98f7 100644 --- a/src/java/voldemort/store/routed/action/PerformParallelPutRequests.java +++ b/src/java/voldemort/store/routed/action/PerformParallelPutRequests.java @@ -230,20 +230,8 @@ public class PerformParallelPutRequests extends preferredSatisfied = true; } - // quorum check - if(pipelineData.getSuccesses() >= required) { - quorumSatisfied = true; - } - - // zone check - if(pipelineData.getZonesRequired() == null) { - zonesSatisfied = true; - } else { - int numZonesSatisfied = pipelineData.getZoneResponses().size(); - if(numZonesSatisfied >= (pipelineData.getZonesRequired() + 1)) { - zonesSatisfied = true; - } - } + quorumSatisfied = isQuorumSatisfied(); + zonesSatisfied = isZonesSatisfied(); if(quorumSatisfied && zonesSatisfied && preferredSatisfied || remainingNs <= 0 || numNodesPendingResponse <= 0) { @@ -284,22 +272,8 @@ public class PerformParallelPutRequests extends processResponse(response, pipeline); } - // quorum check - if(!quorumSatisfied && pipelineData.getSuccesses() >= required) { - quorumSatisfied = true; - } - - // zone check - if(!quorumSatisfied) { - if(pipelineData.getZonesRequired() == null) { - zonesSatisfied = true; - } else { - int numZonesSatisfied = pipelineData.getZoneResponses().size(); - if(numZonesSatisfied >= (pipelineData.getZonesRequired() + 1)) { - zonesSatisfied = true; - } - } - } + quorumSatisfied = isQuorumSatisfied(); + zonesSatisfied = isZonesSatisfied(); if(quorumSatisfied && zonesSatisfied) { if(logger.isDebugEnabled()) { @@ -403,4 +377,31 @@ public class PerformParallelPutRequests extends } } } + + /** + * Check if quorum is satisfied + * + * @return whether quorum is satisfied + */ + private boolean isQuorumSatisfied() { + return pipelineData.getSuccesses() >= required; + } + + /** + * Check if zone count policy is satisfied + * + * @return whether zone is satisfied + */ + private boolean isZonesSatisfied() { + boolean zonesSatisfied = false; + if(pipelineData.getZonesRequired() == null) { + zonesSatisfied = true; + } else { + int numZonesSatisfied = pipelineData.getZoneResponses().size(); + if(numZonesSatisfied >= (pipelineData.getZonesRequired() + 1)) { + zonesSatisfied = true; + } + } + return zonesSatisfied; + } } diff --git a/test/unit/voldemort/store/routed/ZoneCountWriteTest.java b/test/unit/voldemort/store/routed/ZoneCountWriteTest.java index ee3784185..2f372bd57 100644 --- a/test/unit/voldemort/store/routed/ZoneCountWriteTest.java +++ b/test/unit/voldemort/store/routed/ZoneCountWriteTest.java @@ -33,6 +33,10 @@ import voldemort.store.socket.clientrequest.ClientRequestExecutorPool; import voldemort.utils.ByteArray; import voldemort.versioning.Versioned; +/** + * This test verifies the zone count write policy in PipelineRoutedStore + * + */ public class ZoneCountWriteTest { private Store client; @@ -114,7 +118,9 @@ public class ZoneCountWriteTest { client.put("AB", new Versioned("CD"), null); try { Thread.sleep(100); - } catch(InterruptedException e) {} + } catch(InterruptedException e) { + e.printStackTrace(); + } for(Integer nodeId: vservers.keySet()) { VoldemortServer vs = vservers.get(nodeId); Store store = vs.getStoreRepository() @@ -158,6 +164,7 @@ public class ZoneCountWriteTest { } } catch(InsufficientOperationalNodesException e) { fail("Failed with exception: " + e); + e.printStackTrace(); } } -- 2.11.4.GIT