2017-04-17 21 views
1

当风暴的工作人员使用storm 1.1.0运行我的拓扑时,我得到了起搏器的错误 - > java.lang .IllegalArgumentException:未找到匹配的字段:waitUntilReady for class org.apache.storm.pacemaker.PacemakerClientstorm1.1.0:没有找到匹配的字段:waitUntilReady for class org.apache.storm.pacemaker.PacemakerClient

似乎在使用反射时,调用者无法找到方法waitUntilReady? 但我在PacemakerClient的源代码中找到了这个方法:private void waitUntilReady()throws PacemakerConnectionException {} 当我使用具有相同拓扑代码和相同配置的storm 1.0.1时,从工作人员到起搏器的通信运行良好,没有这个例外

我打包使用jdk1.8的拓扑和storm1.1.0也使用jdk1.8启动!

我有心脏起搏器与斯特罗姆1.1.0的配置是这样的:

 

    pacemaker.servers: ["exp104.didatick.com"] 
    pacemaker.port: 6699 
    pacemaker.max.threads: 10 
    pacemaker.childopts: "-Xmx512m" 
    pacemaker.auth.method: "NONE" 

    storm.cluster.state.store: "org.apache.storm.pacemaker.pacemaker_state_factory" 

任何人可以帮助我吗?非常感谢

完整的堆栈跟踪:

 
2017-04-16 17:08:50.896 o.a.s.d.worker main [INFO] Worker 855fbf1e-d23d-400f-b181-1a0934720bbf for storm TRIDENT-TEST-4-1492333594 on 47d8b370-85c2-41d1-b4e6-e63fbf832bff:6700 has finished loading 
2017-04-16 17:08:50.998 o.a.s.p.pacemaker-state-factory executor-heartbeat-timer [ERROR] Failed to set_worker_hb. Will make [10] more attempts. 
java.lang.IllegalArgumentException: No matching field found: waitUntilReady for class org.apache.storm.pacemaker.PacemakerClient 
     at clojure.lang.Reflector.getInstanceField(Reflector.java:271) ~[clojure-1.7.0.jar:?] 
     at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:315) ~[clojure-1.7.0.jar:?] 
     at org.apache.storm.pacemaker.pacemaker_state_factory$get_pacemaker_write_client.invoke(pacemaker_state_factory.clj:110) ~[storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.pacemaker.pacemaker_state_factory$_mkState$reify__12511$fn__12512.invoke(pacemaker_state_factory.clj:187) ~[storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.pacemaker.pacemaker_state_factory$pacemaker_retry_on_exception$fn__12506.invoke(pacemaker_state_factory.clj:139) ~[storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.pacemaker.pacemaker_state_factory$pacemaker_retry_on_exception.invoke(pacemaker_state_factory.clj:139) [storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.pacemaker.pacemaker_state_factory$_mkState$reify__12511.set_worker_hb(pacemaker_state_factory.clj:183) [storm-core-1.1.0.jar:1.1.0] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92] 
     at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) [clojure-1.7.0.jar:?] 
     at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) [clojure-1.7.0.jar:?] 
     at org.apache.storm.cluster$mk_storm_cluster_state$reify__4395.worker_heartbeat_BANG_(cluster.clj:468) [storm-core-1.1.0.jar:1.1.0] 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92] 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92] 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92] 
     at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92] 
     at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93) [clojure-1.7.0.jar:?] 
     at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28) [clojure-1.7.0.jar:?] 
     at org.apache.storm.daemon.worker$do_executor_heartbeats.doInvoke(worker.clj:76) [storm-core-1.1.0.jar:1.1.0] 
     at clojure.lang.RestFn.invoke(RestFn.java:439) [clojure-1.7.0.jar:?] 
     at org.apache.storm.daemon.worker$fn__5542$exec_fn__1364__auto__$reify__5544$fn__5547.invoke(worker.clj:624) [storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.timer$schedule_recurring$this__1737.invoke(timer.clj:105) [storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.timer$mk_timer$fn__1720$fn__1721.invoke(timer.clj:50) [storm-core-1.1.0.jar:1.1.0] 
     at org.apache.storm.timer$mk_timer$fn__1720.invoke(timer.clj:42) [storm-core-1.1.0.jar:1.1.0] 
     at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] 
     at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92] 
+0

任何人遇到此问题? – darkmatter

+0

面对同样的问题,但我还没有解决方案。 – contradictioned

+0

谢谢,你的答案帮了我很多..至少我知道这不是我的配置文件的问题.. – darkmatter

回答

0

我已经看到了同样的问题。

Pacemaker功能似乎在1.1.0中被破坏:STORM-2500

看着源代码,我相信它可以正常工作到1.0.3,但我还没有测试过它。我想你必须联系项目的维护人员才能看到他们是否有意修复这个问题。

当然,他们打算让这个问题在2.0.0中得到解决,当然一些Pacemaker代码在java中被重写。

+0

非常感谢!我邮寄到用户列表组,但没有回应。 – darkmatter