hmsonline / storm-cassandra-cql

Storm Cassandra Bridge built on CQL
Apache License 2.0
43 stars 38 forks source link

RuntimeException: The same metric name `cassandra/readCount` was registered twice #46

Closed ylorenza-poctu closed 9 years ago

ylorenza-poctu commented 9 years ago

Hi

I use CassandraCqlMapState and CassandraCqlMapStateFactory on my project. I need to do two queryState in my topology. When i try to run the second stateQuery i got this :

java.lang.RuntimeException: The same metric name cassandra/readCount was registered twice. at backtype.storm.task.TopologyContext.registerMetric(TopologyContext.java:255) ~[storm-core-0.9.3.jar:0.9.3] at com.hmsonline.trident.cql.CassandraCqlMapState.registerMetrics(CassandraCqlMapState.java:218) ~[storm-cassandra-cql-0.2.5.jar:na] at com.hmsonline.trident.cql.CassandraCqlMapStateFactory.makeState(CassandraCqlMapStateFactory.java:56) ~[storm-cassandra-cql-0.2.5.jar:na] at storm.trident.planner.SubtopologyBolt.prepare(SubtopologyBolt.java:69) ~[storm-core-0.9.3.jar:0.9.3] at storm.trident.topology.TridentBoltExecutor.prepare(TridentBoltExecutor.java:231) ~[storm-core-0.9.3.jar:0.9.3] at backtype.storm.daemon.executor$fn3441$fn3453.invoke(executor.clj:692) ~[storm-core-0.9.3.jar:0.9.3] at backtype.storm.util$async_loop$fn__464.invoke(util.clj:461) ~[storm-core-0.9.3.jar:0.9.3] at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]

I look into the code and i think it's a bug because on the same MetricsContexts we always put the same metrics name.

I have found no StateFactory using the metrics so i don't have a patch for now (And i'm not sure how to fix it.)

But if someone can confirm it's a real bug, i'm going to work on it

ylorenza-poctu commented 9 years ago

I think we must add a name in the constructor of CassandraCqlMapState. It must be unique to ensure metrics have always a different name.