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 55B63E5FA for ; Thu, 28 Feb 2013 10:35:13 +0000 (UTC) Received: (qmail 97475 invoked by uid 500); 28 Feb 2013 10:35:13 -0000 Delivered-To: apmail-cassandra-commits-archive@cassandra.apache.org Received: (qmail 97445 invoked by uid 500); 28 Feb 2013 10:35:13 -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 97433 invoked by uid 99); 28 Feb 2013 10:35:13 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 28 Feb 2013 10:35:13 +0000 Date: Thu, 28 Feb 2013 10:35:13 +0000 (UTC) From: =?utf-8?Q?Micha=C5=82_Michalski_=28JIRA=29?= To: commits@cassandra.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (CASSANDRA-5298) MalformedObjectNameException in ConnectionMetrics for IPv6 nodes because of ":" characters MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CASSANDRA-5298?page=3Dcom.atla= ssian.jira.plugin.system.issuetabpanels:all-tabpanel ] Micha=C5=82 Michalski updated CASSANDRA-5298: ---------------------------------------- Description:=20 After upgrading node to 1.2.1, during C* startup, for all ConnectionMetrics= I get exception like this one: {noformat} WARN [GossipStage:1] 2013-02-27 12:14:55,431 JmxReporter.java (l= ine 388) Error processing org.apache.cassandra.metrics:type=3DConnection,sc= ope=3D2001:4c28:20:177:0:1:2:4,name=3DTimeouts javax.management.MalformedObjectNameException: Invalid character ':' in val= ue part of property =09at javax.management.ObjectName.construct(ObjectName.java:602) =09at javax.management.ObjectName.(ObjectName.java:1403) =09at com.yammer.metrics.reporting.JmxReporter.onMetricAdded(JmxReporter.ja= va:386) =09at com.yammer.metrics.core.MetricsRegistry.notifyMetricAdded(MetricsRegi= stry.java:516) =09at com.yammer.metrics.core.MetricsRegistry.getOrAdd(MetricsRegistry.java= :491) =09at com.yammer.metrics.core.MetricsRegistry.newMeter(MetricsRegistry.java= :240) =09at com.yammer.metrics.Metrics.newMeter(Metrics.java:245) =09at org.apache.cassandra.metrics.ConnectionMetrics.(ConnectionMetri= cs.java:102) =09at org.apache.cassandra.net.OutboundTcpConnectionPool.(OutboundTcp= ConnectionPool.java:53) =09at org.apache.cassandra.net.MessagingService.getConnectionPool(Messaging= Service.java:481) =09at org.apache.cassandra.net.MessagingService.getConnection(MessagingServ= ice.java:489) =09at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService= .java:612) =09at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService= .java:581) =09at org.apache.cassandra.gms.GossipDigestSynVerbHandler.doVerb(GossipDige= stSynVerbHandler.java:85) =09at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.= java:56) =09at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec= utor.java:886) =09at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor= .java:908) =09at java.lang.Thread.run(Thread.java:662) (...){noformat} Looking at ObjectName source code (e.g. http://grepcode.com/file/repository= .grepcode.com/java/root/jdk/openjdk/6-b14/javax/management/ObjectName.java = ) I can see that ":" is not a valid character, so my idea for solving this = problem is to use one of the following: 1) URLEncode.encode() - seems to be more "proper" solution, but produces a = bit unreadable metric scope like: MBean org.apache.cassandra.metrics:type= =3DConnection,scope=3D2001%3A4c28%3A10%3A168%3A0%3A2%3A3%3A6,name=3DCommand= CompletedTasks 2) .replaceAll() - we can simply replace ":" with "." which wouldn'= t give us valid IPv6 address, but will be much more readable.=20 Second one seems to be a better choice for me, but I attach two patches. was: After upgrading node to 1.2.1, during C* startup, for all ConnectionMetrics= I get exception like this one: {noformat} WARN [GossipStage:1] 2013-02-27 12:14:55,431 JmxReporter.java (l= ine 388) Error processing org.apache.cassandra.metrics:type=3DConnection,sc= ope=3D2001:4c28:20:177:0:1:2:4,name=3DTimeouts javax.management.MalformedObjectNameException: Invalid character ':' in val= ue part of property =09at javax.management.ObjectName.construct(ObjectName.java:602) =09at javax.management.ObjectName.(ObjectName.java:1403) =09at com.yammer.metrics.reporting.JmxReporter.onMetricAdded(JmxReporter.ja= va:386) =09at com.yammer.metrics.core.MetricsRegistry.notifyMetricAdded(MetricsRegi= stry.java:516) =09at com.yammer.metrics.core.MetricsRegistry.getOrAdd(MetricsRegistry.java= :491) =09at com.yammer.metrics.core.MetricsRegistry.newMeter(MetricsRegistry.java= :240) =09at com.yammer.metrics.Metrics.newMeter(Metrics.java:245) =09at org.apache.cassandra.metrics.ConnectionMetrics.(ConnectionMetri= cs.java:102) =09at org.apache.cassandra.net.OutboundTcpConnectionPool.(OutboundTcp= ConnectionPool.java:53) =09at org.apache.cassandra.net.MessagingService.getConnectionPool(Messaging= Service.java:481) =09at org.apache.cassandra.net.MessagingService.getConnection(MessagingServ= ice.java:489) =09at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService= .java:612) =09at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService= .java:581) =09at org.apache.cassandra.gms.GossipDigestSynVerbHandler.doVerb(GossipDige= stSynVerbHandler.java:85) =09at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.= java:56) =09at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec= utor.java:886) =09at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor= .java:908) =09at java.lang.Thread.run(Thread.java:662) (...){noformat} Looking at ObjectName source code (e.g. http://grepcode.com/file/repository= .grepcode.com/java/root/jdk/openjdk/6-b14/javax/management/ObjectName.java = ) I can see that ":" is not a valid character, so my idea for solving this = problem is to use: 1) URLEncode.encode() - seems to be more "proper" solution, but produces a = bit unreadable metric scope like: MBean org.apache.cassandra.metrics:type= =3DConnection,scope=3D2001%3A4c27%3A10%3A167%3A0%3A1%3A2%3A5,name=3DCommand= CompletedTasks 2) .replaceAll() - we can simply replace ":" with "." which wouldn'= t give us valid IPv6 address, but will be much more readable.=20 Second one seems to be a better choice for me, but I attach two patches. =20 > MalformedObjectNameException in ConnectionMetrics for IPv6 nodes because = of ":" characters > -------------------------------------------------------------------------= ----------------- > > Key: CASSANDRA-5298 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5298 > Project: Cassandra > Issue Type: Bug > Affects Versions: 1.2.1 > Reporter: Micha=C5=82 Michalski > Assignee: Micha=C5=82 Michalski > Attachments: ipv6-connection-metrics-replaceAll.patch, ipv6-conne= ction-metrics-URLEncoder.patch > > > After upgrading node to 1.2.1, during C* startup, for all ConnectionMetri= cs I get exception like this one: > {noformat} WARN [GossipStage:1] 2013-02-27 12:14:55,431 JmxReporter.java = (line 388) Error processing org.apache.cassandra.metrics:type=3DConnection,= scope=3D2001:4c28:20:177:0:1:2:4,name=3DTimeouts > javax.management.MalformedObjectNameException: Invalid character ':' in v= alue part of property > =09at javax.management.ObjectName.construct(ObjectName.java:602) > =09at javax.management.ObjectName.(ObjectName.java:1403) > =09at com.yammer.metrics.reporting.JmxReporter.onMetricAdded(JmxReporter.= java:386) > =09at com.yammer.metrics.core.MetricsRegistry.notifyMetricAdded(MetricsRe= gistry.java:516) > =09at com.yammer.metrics.core.MetricsRegistry.getOrAdd(MetricsRegistry.ja= va:491) > =09at com.yammer.metrics.core.MetricsRegistry.newMeter(MetricsRegistry.ja= va:240) > =09at com.yammer.metrics.Metrics.newMeter(Metrics.java:245) > =09at org.apache.cassandra.metrics.ConnectionMetrics.(ConnectionMet= rics.java:102) > =09at org.apache.cassandra.net.OutboundTcpConnectionPool.(OutboundT= cpConnectionPool.java:53) > =09at org.apache.cassandra.net.MessagingService.getConnectionPool(Messagi= ngService.java:481) > =09at org.apache.cassandra.net.MessagingService.getConnection(MessagingSe= rvice.java:489) > =09at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingServi= ce.java:612) > =09at org.apache.cassandra.net.MessagingService.sendOneWay(MessagingServi= ce.java:581) > =09at org.apache.cassandra.gms.GossipDigestSynVerbHandler.doVerb(GossipDi= gestSynVerbHandler.java:85) > =09at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTas= k.java:56) > =09at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolEx= ecutor.java:886) > =09at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecut= or.java:908) > =09at java.lang.Thread.run(Thread.java:662) > (...){noformat} > Looking at ObjectName source code (e.g. http://grepcode.com/file/reposito= ry.grepcode.com/java/root/jdk/openjdk/6-b14/javax/management/ObjectName.jav= a ) I can see that ":" is not a valid character, so my idea for solving thi= s problem is to use one of the following: > 1) URLEncode.encode() - seems to be more "proper" solution, but produces = a bit unreadable metric scope like: MBean org.apache.cassandra.metrics:type= =3DConnection,scope=3D2001%3A4c28%3A10%3A168%3A0%3A2%3A3%3A6,name=3DCommand= CompletedTasks > 2) .replaceAll() - we can simply replace ":" with "." which would= n't give us valid IPv6 address, but will be much more readable.=20 > Second one seems to be a better choice for me, but I attach two patches. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrato= rs For more information on JIRA, see: http://www.atlassian.com/software/jira