Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 6BC17200CA8 for ; Wed, 31 May 2017 13:00:16 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 65E77160BBA; Wed, 31 May 2017 11:00:16 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B09EC160BCB for ; Wed, 31 May 2017 13:00:15 +0200 (CEST) Received: (qmail 74390 invoked by uid 500); 31 May 2017 11:00:14 -0000 Mailing-List: contact commits-help@camel.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@camel.apache.org Delivered-To: mailing list commits@camel.apache.org Received: (qmail 74313 invoked by uid 99); 31 May 2017 11:00:14 -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; Wed, 31 May 2017 11:00:14 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 93FF7DFB8A; Wed, 31 May 2017 11:00:14 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: davsclaus@apache.org To: commits@camel.apache.org Date: Wed, 31 May 2017 11:00:15 -0000 Message-Id: <27851919a0624ccf97bc85b94da75c7a@git.apache.org> In-Reply-To: <4a1ab1ac1a204fb6b944e4711626c0ff@git.apache.org> References: <4a1ab1ac1a204fb6b944e4711626c0ff@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [2/3] camel git commit: CAMEL-11363: Optimise to use Dequeue instead of Stack. And no need for synchronization. archived-at: Wed, 31 May 2017 11:00:16 -0000 CAMEL-11363: Optimise to use Dequeue instead of Stack. And no need for synchronization. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/8b988f78 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/8b988f78 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/8b988f78 Branch: refs/heads/master Commit: 8b988f78545bee9e16f397444146ef2dd8bc0a4a Parents: 3478571 Author: Claus Ibsen Authored: Wed May 31 11:51:40 2017 +0200 Committer: Claus Ibsen Committed: Wed May 31 13:00:05 2017 +0200 ---------------------------------------------------------------------- .../apache/camel/impl/DefaultUnitOfWork.java | 30 +++++++------------- 1 file changed, 11 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/8b988f78/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java index 14d379c..5baf0ee 100644 --- a/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java +++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultUnitOfWork.java @@ -16,11 +16,14 @@ */ package org.apache.camel.impl; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Date; +import java.util.Deque; import java.util.Iterator; import java.util.LinkedHashSet; import java.util.List; +import java.util.NoSuchElementException; import java.util.Set; import java.util.Stack; import java.util.function.Predicate; @@ -65,7 +68,7 @@ public class DefaultUnitOfWork implements UnitOfWork, Service { private Message originalInMessage; private TracedRouteNodes tracedRouteNodes; private Set transactedBy; - private final Stack routeContextStack = new Stack(); + private final Deque routeContextStack = new ArrayDeque<>(); private Stack subUnitOfWorks; private final transient Logger log; @@ -174,11 +177,7 @@ public class DefaultUnitOfWork implements UnitOfWork, Service { if (transactedBy != null) { transactedBy.clear(); } - synchronized (routeContextStack) { - if (!routeContextStack.isEmpty()) { - routeContextStack.clear(); - } - } + routeContextStack.clear(); if (subUnitOfWorks != null) { subUnitOfWorks.clear(); } @@ -324,27 +323,20 @@ public class DefaultUnitOfWork implements UnitOfWork, Service { } public RouteContext getRouteContext() { - synchronized (routeContextStack) { - if (routeContextStack.isEmpty()) { - return null; - } - return routeContextStack.peek(); - } + return routeContextStack.peek(); } public void pushRouteContext(RouteContext routeContext) { - synchronized (routeContextStack) { - routeContextStack.add(routeContext); - } + routeContextStack.push(routeContext); } public RouteContext popRouteContext() { - synchronized (routeContextStack) { - if (routeContextStack.isEmpty()) { - return null; - } + try { return routeContextStack.pop(); + } catch (NoSuchElementException e) { + // ignore and return null } + return null; } public AsyncCallback beforeProcess(Processor processor, Exchange exchange, AsyncCallback callback) {