Return-Path: X-Original-To: apmail-cassandra-commits-archive@www.apache.org Delivered-To: apmail-cassandra-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6980411071 for ; Tue, 6 May 2014 21:37:20 +0000 (UTC) Received: (qmail 3338 invoked by uid 500); 6 May 2014 21:21:04 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 2621 invoked by uid 500); 6 May 2014 21:19:56 -0000 Mailing-List: contact commits-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cassandra.apache.org Delivered-To: mailing list commits@cassandra.apache.org Received: (qmail 99592 invoked by uid 99); 6 May 2014 21:15:51 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 06 May 2014 21:15:51 +0000 Date: Tue, 6 May 2014 21:15:51 +0000 (UTC) From: "Jason Brown (JIRA)" To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (CASSANDRA-7177) Starting threads in the OutboundTcpConnectionPool constructor causes race conditions 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/CASSANDRA-7177?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13991147#comment-13991147 ] Jason Brown commented on CASSANDRA-7177: ---------------------------------------- Patch looks fine overall, but I'd add a small optimization to the top of OTCP. waitForStarted() {code} public void waitForStarted() { if (started.getCount() == 0) return; .... } {code} Seem reasonable? > Starting threads in the OutboundTcpConnectionPool constructor causes race conditions > ------------------------------------------------------------------------------------ > > Key: CASSANDRA-7177 > URL: https://issues.apache.org/jira/browse/CASSANDRA-7177 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Sergio Bossa > Assignee: Sergio Bossa > Attachments: CASSANDRA-7177.patch > > > The OutboundTcpConnectionPool starts connection threads in its constructor, causing race conditions when MessagingService#getConnectionPool is concurrently called for the first time for a given address. > I.e., here's one of the races: > {noformat} > WARN 12:49:03,182 Error processing org.apache.cassandra.metrics:type=Connection,scope=127.0.0.1,name=CommandPendingTasks > javax.management.InstanceAlreadyExistsException: org.apache.cassandra.metrics:type=Connection,scope=127.0.0.1,name=CommandPendingTasks > at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437) > at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898) > at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966) > at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900) > at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324) > at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) > at com.yammer.metrics.reporting.JmxReporter.registerBean(JmxReporter.java:464) > at com.yammer.metrics.reporting.JmxReporter.processGauge(JmxReporter.java:438) > at com.yammer.metrics.reporting.JmxReporter.processGauge(JmxReporter.java:16) > at com.yammer.metrics.core.Gauge.processWith(Gauge.java:28) > at com.yammer.metrics.reporting.JmxReporter.onMetricAdded(JmxReporter.java:395) > at com.yammer.metrics.core.MetricsRegistry.notifyMetricAdded(MetricsRegistry.java:516) > at com.yammer.metrics.core.MetricsRegistry.getOrAdd(MetricsRegistry.java:491) > at com.yammer.metrics.core.MetricsRegistry.newGauge(MetricsRegistry.java:79) > at com.yammer.metrics.Metrics.newGauge(Metrics.java:70) > at org.apache.cassandra.metrics.ConnectionMetrics.(ConnectionMetrics.java:71) > at org.apache.cassandra.net.OutboundTcpConnectionPool.(OutboundTcpConnectionPool.java:55) > at org.apache.cassandra.net.MessagingService.getConnectionPool(MessagingService.java:498) > {noformat} -- This message was sent by Atlassian JIRA (v6.2#6252)