From commits-return-6447-archive-asf-public=cust-asf.ponee.io@zookeeper.apache.org Fri Jun 15 07:41:14 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 3E167180636 for ; Fri, 15 Jun 2018 07:41:13 +0200 (CEST) Received: (qmail 99777 invoked by uid 500); 15 Jun 2018 05:41:12 -0000 Mailing-List: contact commits-help@zookeeper.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@zookeeper.apache.org Delivered-To: mailing list commits@zookeeper.apache.org Received: (qmail 99766 invoked by uid 99); 15 Jun 2018 05:41:11 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 15 Jun 2018 05:41:11 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id A2AE9E1193; Fri, 15 Jun 2018 05:41:11 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: hanm@apache.org To: commits@zookeeper.apache.org Message-Id: <892553fa497647709b96859b5a641c66@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: zookeeper git commit: ZOOKEEPER-3063: Track outstanding changes with ArrayDeque Date: Fri, 15 Jun 2018 05:41:11 +0000 (UTC) Repository: zookeeper Updated Branches: refs/heads/master a2623a625 -> d6490d590 ZOOKEEPER-3063: Track outstanding changes with ArrayDeque Changed outstandingChanges from ArrayList to ArrayDeque. Author: Yisong Yue Reviewers: Michael Han Closes #543 from yisong-yue/ZOOKEEPER-3063 Project: http://git-wip-us.apache.org/repos/asf/zookeeper/repo Commit: http://git-wip-us.apache.org/repos/asf/zookeeper/commit/d6490d59 Tree: http://git-wip-us.apache.org/repos/asf/zookeeper/tree/d6490d59 Diff: http://git-wip-us.apache.org/repos/asf/zookeeper/diff/d6490d59 Branch: refs/heads/master Commit: d6490d590725345638b5973a97e6e8d8bee67d22 Parents: a2623a6 Author: Yisong Yue Authored: Thu Jun 14 22:41:07 2018 -0700 Committer: Michael Han Committed: Thu Jun 14 22:41:07 2018 -0700 ---------------------------------------------------------------------- .../apache/zookeeper/server/FinalRequestProcessor.java | 4 ++-- .../org/apache/zookeeper/server/PrepRequestProcessor.java | 10 +++++----- .../main/org/apache/zookeeper/server/ZooKeeperServer.java | 7 +++++-- 3 files changed, 12 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zookeeper/blob/d6490d59/src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java ---------------------------------------------------------------------- diff --git a/src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java b/src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java index 4e1d762..2f60f78 100644 --- a/src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java +++ b/src/java/main/org/apache/zookeeper/server/FinalRequestProcessor.java @@ -110,8 +110,8 @@ public class FinalRequestProcessor implements RequestProcessor { Record txn = request.getTxn(); long zxid = hdr.getZxid(); while (!zks.outstandingChanges.isEmpty() - && zks.outstandingChanges.get(0).zxid <= zxid) { - ChangeRecord cr = zks.outstandingChanges.remove(0); + && zks.outstandingChanges.peek().zxid <= zxid) { + ChangeRecord cr = zks.outstandingChanges.remove(); if (cr.zxid < zxid) { LOG.warn("Zxid outstanding " + cr.zxid + " is less than current " + zxid); http://git-wip-us.apache.org/repos/asf/zookeeper/blob/d6490d59/src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java ---------------------------------------------------------------------- diff --git a/src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java b/src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java index f31303a..6a07320 100644 --- a/src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java +++ b/src/java/main/org/apache/zookeeper/server/PrepRequestProcessor.java @@ -72,9 +72,9 @@ import java.io.StringReader; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import java.util.ListIterator; import java.util.Locale; import java.util.Map; import java.util.Properties; @@ -247,9 +247,9 @@ public class PrepRequestProcessor extends ZooKeeperCriticalThread implements void rollbackPendingChanges(long zxid, MappendingChangeRecords) { synchronized (zks.outstandingChanges) { // Grab a list iterator starting at the END of the list so we can iterate in reverse - ListIterator iter = zks.outstandingChanges.listIterator(zks.outstandingChanges.size()); - while (iter.hasPrevious()) { - ChangeRecord c = iter.previous(); + Iterator iter = zks.outstandingChanges.descendingIterator(); + while (iter.hasNext()) { + ChangeRecord c = iter.next(); if (c.zxid == zxid) { iter.remove(); // Remove all outstanding changes for paths of this multi. @@ -265,7 +265,7 @@ public class PrepRequestProcessor extends ZooKeeperCriticalThread implements return; } - long firstZxid = zks.outstandingChanges.get(0).zxid; + long firstZxid = zks.outstandingChanges.peek().zxid; for (ChangeRecord c : pendingChangeRecords.values()) { // Don't apply any prior change records less than firstZxid. http://git-wip-us.apache.org/repos/asf/zookeeper/blob/d6490d59/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java ---------------------------------------------------------------------- diff --git a/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java b/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java index 8b9316e..ff5b3b6 100644 --- a/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java +++ b/src/java/main/org/apache/zookeeper/server/ZooKeeperServer.java @@ -24,16 +24,19 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.nio.ByteBuffer; + +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; +import java.util.Deque; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Random; +import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; -import java.util.Set; import javax.security.sasl.SaslException; @@ -114,7 +117,7 @@ public class ZooKeeperServer implements SessionExpirer, ServerStats.Provider { static final private long superSecret = 0XB3415C00L; private final AtomicInteger requestsInProcess = new AtomicInteger(0); - final List outstandingChanges = new ArrayList(); + final Deque outstandingChanges = new ArrayDeque<>(); // this data structure must be accessed under the outstandingChanges lock final Map outstandingChangesForPath = new HashMap();