[ 
https://issues.apache.org/jira/browse/STORM-200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14048615#comment-14048615
 ] 

ASF GitHub Bot commented on STORM-200:
--------------------------------------

Github user dashengju commented on the pull request:

    https://github.com/apache/incubator-storm/pull/38#issuecomment-47627909
  
    @d2r , I have merged your patch. 
    under ubuntu,  run all the tests successfully with 10 times; 
    But under centos 6, always hang by test-builtin-metrics-2 case. It seems 
your patch does not work.
    
    ==========  below is the stdout error info  
==============================================================
    114011 [main] ERROR backtype.storm.metrics-test - Error in cluster
    java.lang.AssertionError: Test timed out (30000ms)
            at 
backtype.storm.metrics_test$wait_for_atleast_N_buckets_BANG_.invoke(metrics_test.clj:74)
 ~[na:na]
            at 
backtype.storm.metrics_test$fn__1689$fn__1690.invoke(metrics_test.clj:288) 
~[na:na]
            at 
backtype.storm.metrics_test$fn__1689.invoke(metrics_test.clj:252) [na:na]
            at clojure.test$test_var$fn__7145.invoke(test.clj:701) 
[clojure-1.5.1.jar:na]
            at clojure.test$test_var.invoke(test.clj:701) [clojure-1.5.1.jar:na]
            at 
clojure.test$test_all_vars$fn__7149$fn__7156.invoke(test.clj:717) 
[clojure-1.5.1.jar:na]
            at clojure.test$default_fixture.invoke(test.clj:671) 
[clojure-1.5.1.jar:na]
            at clojure.test$test_all_vars$fn__7149.invoke(test.clj:717) 
[clojure-1.5.1.jar:na]
            at clojure.test$default_fixture.invoke(test.clj:671) 
[clojure-1.5.1.jar:na]
            at clojure.test$test_all_vars.invoke(test.clj:713) 
[clojure-1.5.1.jar:na]
            at clojure.test$test_ns.invoke(test.clj:736) [clojure-1.5.1.jar:na]
            at clojure.core$map$fn__4207.invoke(core.clj:2487) 
[clojure-1.5.1.jar:na]
            at clojure.lang.LazySeq.sval(LazySeq.java:42) [clojure-1.5.1.jar:na]
            at clojure.lang.LazySeq.seq(LazySeq.java:60) [clojure-1.5.1.jar:na]
            at clojure.lang.Cons.next(Cons.java:39) [clojure-1.5.1.jar:na]
            at clojure.lang.RT.boundedLength(RT.java:1654) 
[clojure-1.5.1.jar:na]
            at clojure.lang.RestFn.applyTo(RestFn.java:130) 
[clojure-1.5.1.jar:na]
            at clojure.core$apply.invoke(core.clj:619) [clojure-1.5.1.jar:na]
            at clojure.test$run_tests.doInvoke(test.clj:751) 
[clojure-1.5.1.jar:na]
            at clojure.lang.RestFn.invoke(RestFn.java:408) 
[clojure-1.5.1.jar:na]
            at 
com.theoryinpractise.clojure.testrunner$eval8077$fn__8082$fn__8118.invoke(run-test7173011794914230650.clj:102)
 [na:na]
            at 
com.theoryinpractise.clojure.testrunner$eval8077$fn__8082.invoke(run-test7173011794914230650.clj:99)
 [na:na]
            at 
com.theoryinpractise.clojure.testrunner$eval8077.invoke(run-test7173011794914230650.clj:72)
 [na:na]
            at clojure.lang.Compiler.eval(Compiler.java:6619) 
[clojure-1.5.1.jar:na]
            at clojure.lang.Compiler.load(Compiler.java:7064) 
[clojure-1.5.1.jar:na]
            at clojure.lang.Compiler.loadFile(Compiler.java:7020) 
[clojure-1.5.1.jar:na]
            at clojure.main$load_script.invoke(main.clj:294) 
[clojure-1.5.1.jar:na]
            at clojure.main$script_opt.invoke(main.clj:356) 
[clojure-1.5.1.jar:na]
            at clojure.main$main.doInvoke(main.clj:440) [clojure-1.5.1.jar:na]
            at clojure.lang.RestFn.invoke(RestFn.java:408) 
[clojure-1.5.1.jar:na]
            at clojure.lang.Var.invoke(Var.java:415) [clojure-1.5.1.jar:na]
            at clojure.lang.AFn.applyToHelper(AFn.java:161) 
[clojure-1.5.1.jar:na]
            at clojure.lang.Var.applyTo(Var.java:532) [clojure-1.5.1.jar:na]
            at clojure.main.main(main.java:37) [clojure-1.5.1.jar:na]
    114013 [main] INFO  backtype.storm.daemon.nimbus - Shutting down master
    114016 [main] INFO  backtype.storm.daemon.nimbus - Shut down master
    114022 [main] INFO  backtype.storm.daemon.supervisor - Shutting down 
a9fd8203-4ad0-419a-8287-09acedc6d16b:f8b7e9ce-98c2-472f-8deb-c73223b3abd0
    114022 [main] INFO  backtype.storm.process-simulator - Killing process 
e3a0b0c3-d589-4861-8e46-0eeb660db114
    114023 [main] INFO  backtype.storm.daemon.worker - Shutting down worker 
metrics-tester-1-0 a9fd8203-4ad0-419a-8287-09acedc6d16b 1024
    114023 [main] INFO  backtype.storm.daemon.worker - Shutting down receive 
thread
    114023 [main] INFO  backtype.storm.messaging.loader - Shutting down 
receiving-thread: [metrics-tester-1-0, 1024]
    114024 [main] INFO  backtype.storm.messaging.loader - Waiting for 
receiving-thread:[metrics-tester-1-0, 1024] to die
    114024 [Thread-621-worker-receiver-thread-0] INFO  
backtype.storm.messaging.loader - Receiving-thread:[metrics-tester-1-0, 1024] 
received shutdown notice
    114024 [main] INFO  backtype.storm.messaging.loader - Shutdown 
receiving-thread: [metrics-tester-1-0, 1024]
    114024 [main] INFO  backtype.storm.daemon.worker - Shut down receive thread
    114024 [main] INFO  backtype.storm.daemon.worker - Terminating messaging 
context
    114025 [main] INFO  backtype.storm.daemon.worker - Shutting down executors
    114025 [main] INFO  backtype.storm.daemon.executor - Shutting down executor 
__metricsclojure.storm.metric.testing.FakeMetricConsumer:[2 2]
    114026 [Thread-611-disruptor-executor[2 2]-send-queue] INFO  
backtype.storm.util - Async loop interrupted!
    
    
    ==========  below is jstack of main thread  
==============================================================
    "main" prio=10 tid=0x00007f0ce0006000 nid=0x288e in Object.wait() 
[0x00007f0ce8789000]
       java.lang.Thread.State: WAITING (on object monitor)
            at java.lang.Object.wait(Native Method)
            - waiting on <0x00000000c4c0d1c0> (a java.lang.Thread)
            at java.lang.Thread.join(Thread.java:1258)
            - locked <0x00000000c4c0d1c0> (a java.lang.Thread)
            at java.lang.Thread.join(Thread.java:1332)
            at backtype.storm.util$async_loop$reify__459.join(util.clj:455)
            at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
            at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
            at 
clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:298)
            at 
backtype.storm.daemon.executor$mk_executor$reify__4104.shutdown(executor.clj:353)
            at sun.reflect.GeneratedMethodAccessor71.invoke(Unknown Source)
            at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
            at 
clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:298)
            at 
backtype.storm.daemon.worker$fn__4530$exec_fn__1774__auto____4531$shutdown_STAR___4549.invoke(worker.clj:392)
            at 
backtype.storm.daemon.worker$fn__4530$exec_fn__1774__auto__$reify__4575.shutdown(worker.clj:423)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
            at 
clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:298)
            at 
backtype.storm.process_simulator$kill_process.invoke(process_simulator.clj:46)
            - locked <0x00000000c4842af0> (a java.lang.Object)
            at 
backtype.storm.daemon.supervisor$shutdown_worker.invoke(supervisor.clj:173)
            at 
backtype.storm.daemon.supervisor$fn__4967$exec_fn__1774__auto__$reify__4976.shutdown_all_workers(supervisor.clj:411)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
            at 
clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:298)
            at 
backtype.storm.testing$kill_local_storm_cluster.invoke(testing.clj:172)
            at 
backtype.storm.metrics_test$fn__456$fn__457.invoke(metrics_test.clj:252)
            at backtype.storm.metrics_test$fn__456.invoke(metrics_test.clj:252)
            at clojure.test$test_var$fn__7145.invoke(test.clj:701)
            at clojure.test$test_var.invoke(test.clj:701)
            at clojure.test$test_all_vars$fn__7149$fn__7156.invoke(test.clj:717)
            at clojure.test$default_fixture.invoke(test.clj:671)
            at clojure.test$test_all_vars$fn__7149.invoke(test.clj:717)
            at clojure.test$default_fixture.invoke(test.clj:671)
            at clojure.test$test_all_vars.invoke(test.clj:713)
            at clojure.test$test_ns.invoke(test.clj:736)
            at clojure.core$map$fn__4207.invoke(core.clj:2487)
            at clojure.lang.LazySeq.sval(LazySeq.java:42)
            - locked <0x00000000c4806f10> (a clojure.lang.LazySeq)
            at clojure.lang.LazySeq.seq(LazySeq.java:60)
            - locked <0x00000000c4806f10> (a clojure.lang.LazySeq)
            at clojure.lang.Cons.next(Cons.java:39)
            at clojure.lang.RT.boundedLength(RT.java:1654)
            at clojure.lang.RestFn.applyTo(RestFn.java:130)
            at clojure.core$apply.invoke(core.clj:619)
            at clojure.test$run_tests.doInvoke(test.clj:751)
            at clojure.lang.RestFn.invoke(RestFn.java:408)
            at 
com.theoryinpractise.clojure.testrunner$eval700$fn__705.invoke(run-test4685934117261617748.clj:48)
            at 
com.theoryinpractise.clojure.testrunner$eval700.invoke(run-test4685934117261617748.clj:38)
            at clojure.lang.Compiler.eval(Compiler.java:6619)
            at clojure.lang.Compiler.load(Compiler.java:7064)
            at clojure.lang.Compiler.loadFile(Compiler.java:7020)
            at clojure.main$load_script.invoke(main.clj:294)
            at clojure.main$script_opt.invoke(main.clj:356)
            at clojure.main$main.doInvoke(main.clj:440)
            at clojure.lang.RestFn.invoke(RestFn.java:408)
            at clojure.lang.Var.invoke(Var.java:415)
            at clojure.lang.AFn.applyToHelper(AFn.java:161)
            at clojure.lang.Var.applyTo(Var.java:532)
            at clojure.main.main(main.java:37)



> Proposal for Multilang's Metrics feature
> ----------------------------------------
>
>                 Key: STORM-200
>                 URL: https://issues.apache.org/jira/browse/STORM-200
>             Project: Apache Storm (Incubating)
>          Issue Type: New Feature
>            Reporter: DashengJu
>            Priority: Minor
>         Attachments: update.patch
>
>
> Storm 0.9.0.1 exposes a metrics interface to report summary statistics across 
> the full topology. We can build our own metric, and build metrics consumer to 
> use those statistics.
> But when we use Multilang(ie. Python), we can not use this feature. So we 
> want to summit a proposal for multilang's metrics. 
> The specifics of the proposal:
> 1. The main idea is: when user want to add a metric statistics in 
> multilang(python) bolt,
>     a) he need first create a metric object and register in ShellBolt's 
> sub-class, 
>     b) then update the metric in Python bolt process through RPC call.
> 2. In Metrics API:
>     a) extend IMetric interface add a method for RPC call:public void 
> updateMetricFromRPC(List<Object> params);  
>     b) modify IMetric implements, to support updateMetricFromRPC;
> 3. In ShellBolt,
>     a) we have a Map<String, IMetric> to hold user's registered metrics  
> object;
>     b) we have a method registerMetric(String name, T metric) for user to 
> register their metris object;
>     c) we have a method handleMetrics(Map action) to handle RPC call from 
> Python process;
> 4) In Multilang protocol: add a command "metrics" for shell process to make 
> RPC call. The protocol is: {"command":"metrics", 
> "name":"metric-registerd-name", "params":["param-1", param-2]}
> 5) In storm.py:add rpcMetrics(name, params), user can update remote metric 
> through this RPC call.
> any suggestions?



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to