Uploaded image for project: 'Apache Storm'
  1. Apache Storm
  2. STORM-197

registering metrics in an IRichSpout used in Trident Topology throws an Exception

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: storm-core
    • Labels:

      Description

      Because of how the RichSpoutBatchExecutor initializes and calls open() of the IRichSpout, any metric registrations cause an exception to be thrown. See stacktrace below.

      java.lang.RuntimeException: java.lang.RuntimeException: TopologyContext.registerMetric can only be called from within overridden IBolt::prepare() or ISpout::open() method.
      at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:90)
      at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:61)
      at backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:62)
      at backtype.storm.daemon.executor$fn_3498$fn3510$fn_3557.invoke(executor.clj:730)
      at backtype.storm.util$async_loop$fn__444.invoke(util.clj:403)
      at clojure.lang.AFn.run(AFn.java:24)
      at java.lang.Thread.run(Thread.java:722)
      Caused by: java.lang.RuntimeException: TopologyContext.registerMetric can only be called from within overridden IBolt::prepare() or ISpout::open() method.
      at backtype.storm.task.TopologyContext.registerMetric(TopologyContext.java:213)
      at com.XXXXXXX.spouts.amqp.AMQPSpout.open(AMQPSpout.java:232)
      at storm.trident.spout.$RichSpoutEmitter.emitBatch(RichSpoutBatchExecutor.java:88)
      at storm.trident.spout.TridentSpoutExecutor.execute(TridentSpoutExecutor.java:65)
      at storm.trident.topology.TridentBoltExecutor.execute(TridentBoltExecutor.java:352)
      at backtype.storm.daemon.executor$fn_3498$tuple_action_fn_3500.invoke(executor.clj:615)
      at backtype.storm.daemon.executor$mk_task_receiver$fn__3421.invoke(executor.clj:383)
      at backtype.storm.disruptor$clojure_handler$reify__2962.onEvent(disruptor.clj:43)
      at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:87)
      ... 6 more

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              jasontrost Jason Trost
            • Votes:
              1 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: