[ 
https://issues.apache.org/jira/browse/CASSANDRA-5298?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michał Michalski updated CASSANDRA-5298:
----------------------------------------

    Attachment: ipv6-connection-metrics-URLEncoder.patch
                ipv6-connection-metrics-replaceAll.patch
    
> 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ł Michalski
>            Assignee: Michał Michalski
>         Attachments: ipv6-connection-metrics-replaceAll.patch, 
> ipv6-connection-metrics-URLEncoder.patch
>
>
> 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 
> (line 388) Error processing 
> org.apache.cassandra.metrics:type=Connection,scope=2001:4c28:20:177:0:1:2:4,name=Timeouts
> javax.management.MalformedObjectNameException: Invalid character ':' in value 
> part of property
>       at javax.management.ObjectName.construct(ObjectName.java:602)
>       at javax.management.ObjectName.<init>(ObjectName.java:1403)
>       at 
> com.yammer.metrics.reporting.JmxReporter.onMetricAdded(JmxReporter.java:386)
>       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.newMeter(MetricsRegistry.java:240)
>       at com.yammer.metrics.Metrics.newMeter(Metrics.java:245)
>       at 
> org.apache.cassandra.metrics.ConnectionMetrics.<init>(ConnectionMetrics.java:102)
>       at 
> org.apache.cassandra.net.OutboundTcpConnectionPool.<init>(OutboundTcpConnectionPool.java:53)
>       at 
> org.apache.cassandra.net.MessagingService.getConnectionPool(MessagingService.java:481)
>       at 
> org.apache.cassandra.net.MessagingService.getConnection(MessagingService.java:489)
>       at 
> org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService.java:612)
>       at 
> org.apache.cassandra.net.MessagingService.sendOneWay(MessagingService.java:581)
>       at 
> org.apache.cassandra.gms.GossipDigestSynVerbHandler.doVerb(GossipDigestSynVerbHandler.java:85)
>       at 
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:56)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>       at 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 scrope like: MBean 
> org.apache.cassandra.metrics:type=Connection,scope=2001%3A4c27%3A10%3A167%3A0%3A1%3A2%3A5,name=CommandCompletedTasks
> 2) <String>.replaceAll() - we can simply replace ":" with "." which wouldn't 
> give us valid IPv6 address, but will be much more readable. 
> 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 administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to