Return-Path: X-Original-To: apmail-accumulo-notifications-archive@minotaur.apache.org Delivered-To: apmail-accumulo-notifications-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B4AD81827D for ; Fri, 26 Feb 2016 22:31:18 +0000 (UTC) Received: (qmail 21442 invoked by uid 500); 26 Feb 2016 22:31:18 -0000 Delivered-To: apmail-accumulo-notifications-archive@accumulo.apache.org Received: (qmail 21364 invoked by uid 500); 26 Feb 2016 22:31:18 -0000 Mailing-List: contact notifications-help@accumulo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: jira@apache.org Delivered-To: mailing list notifications@accumulo.apache.org Received: (qmail 21185 invoked by uid 99); 26 Feb 2016 22:31:18 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 26 Feb 2016 22:31:18 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 310192C1F58 for ; Fri, 26 Feb 2016 22:31:18 +0000 (UTC) Date: Fri, 26 Feb 2016 22:31:18 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: notifications@accumulo.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (ACCUMULO-1755) BatchWriter blocks all addMutation calls while binning mutations MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/ACCUMULO-1755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15169973#comment-15169973 ] ASF GitHub Bot commented on ACCUMULO-1755: ------------------------------------------ Github user joshelser commented on a diff in the pull request: https://github.com/apache/accumulo/pull/75#discussion_r54311365 --- Diff: core/src/main/java/org/apache/accumulo/core/client/impl/TabletServerBatchWriter.java --- @@ -699,7 +701,16 @@ else if (Tables.getTableState(context.getInstance(), table) == TableState.OFFLIN } - void addMutations(MutationSet mutationsToSend) { + void queueMutations(final MutationSet mutationsToSend) { + queueThreadPool.submit(new Runnable() { --- End diff -- Ultimately, I really don't have that strong of an opinion here. I think using the ExecutorService as a queue for MutationSets is a smell (instead of directly maintaining such a queue), but I can understand the argument for using the ExecutorService *because* it encompasses both approaches. I don't think there's a big reason one way or the other; I simply think that the pseudo-code outline above is clearer than Dave's current changes. If Keith and Dave are happy, then merge it and move on. > BatchWriter blocks all addMutation calls while binning mutations > ---------------------------------------------------------------- > > Key: ACCUMULO-1755 > URL: https://issues.apache.org/jira/browse/ACCUMULO-1755 > Project: Accumulo > Issue Type: Improvement > Components: client > Reporter: Adam Fuchs > Assignee: Dave Marion > Fix For: 1.8.0 > > Time Spent: 0.5h > Remaining Estimate: 0h > > Through code inspection, we found that the BatchWriter bins mutations inside of a synchronized block that covers calls to addMutation. Binning potentially involves lookups of tablet metadata and processes a fair amount of information. We will get better parallelism if we can either unlock the lock while binning, dedicate another thread to do the binning, or use one of the send threads to do the binning. > This has not been verified empirically yet, so there is not yet any profiling info to indicate the level of improvement that we should expect. Profiling and repeatable demonstration of this performance bottleneck should be the first step on this ticket. -- This message was sent by Atlassian JIRA (v6.3.4#6332)