我想这个问题是:为什么这不工作? 我有点卡住了,因为代理本身没有太多的文档,exception(似乎来自Clojure)并不是特别有用。
遵循DataStax OpsCenter 4.1文档(基本上只是创buildaddress.yaml)中的手动代理设置说明,并在所有三个节点上启动datastax代理。 所有三个节点在启动后不久都会得到相同的exception:
INFO [StompConnection receiver] 2014-05-26 16:06:17,735 Starting up agent collection. INFO [StompConnection receiver] 2014-05-26 16:06:17,736 New JMX connection (127.0.0.1:7199) ERROR [StompConnection receiver] 2014-05-26 16:06:17,749 failed calling listener java.lang.IllegalArgumentException: No matching field found: getParentFile for class clojure.lang.Keyword at clojure.lang.Reflector.getInstanceField(Reflector.java:271) at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:300) at opsagent.util.cassandra_util$find_base_dse_dir.invoke(cassandra_util.clj:50) at opsagent.util.cassandra_util$get_base_dse_dir.invoke(cassandra_util.clj:73) at opsagent.util.cassandra_util$tar_conf_location.invoke(cassandra_util.clj:89) at opsagent.util.cassandra_util$cassandra_conf_location.invoke(cassandra_util.clj:103) at opsagent.util.cassandra_util$get_cassandra_conf.invoke(cassandra_util.clj:123) at opsagent.opsagent$create_thrift_conf_vars.invoke(opsagent.clj:52) at opsagent.opsagent$post_interface_startup.doInvoke(opsagent.clj:95) at clojure.lang.RestFn.invoke(RestFn.java:421) at opsagent.conf$handle_new_conf.invoke(conf.clj:174) at opsagent.messaging$message_callback$fn__5242.invoke(messaging.clj:31) at opsagent.messaging.proxy$java.lang.Object$StompConnection$Listener$7f16bc72.onMessage(Unknown Source) at org.jgroups.client.StompConnection.notifyListeners(StompConnection.java:311) at org.jgroups.client.StompConnection.run(StompConnection.java:261) at java.lang.Thread.run(Unknown Source)
如果尝试通过OpsCenter手动configuration节点(在查看节点概览对话框时使用“configuration”操作),则会得到类似(但更详细)的exception:
INFO [qtp1593743543-20] 2014-05-26 16:08:54,436 New JMX connection (127.0.0.1:7199) ERROR [qtp1593743543-20] 2014-05-26 16:08:54,453 Unhandled route Exception: java.lang.IllegalArgumentException: No matching field found: getParentFile for class clojure.lang.Keyword Reflector.java:271 clojure.lang.Reflector.getInstanceField Reflector.java:300 clojure.lang.Reflector.invokeNoArgInstanceMember cassandra_util.clj:50 opsagent.util.cassandra-util/find-base-dse-dir cassandra_util.clj:73 opsagent.util.cassandra-util/get-base-dse-dir cassandra_util.clj:89 opsagent.util.cassandra-util/tar-conf-location cassandra_util.clj:103 opsagent.util.cassandra-util/cassandra-conf-location cassandra_util.clj:123 opsagent.util.cassandra-util/get-cassandra-conf routes.clj:130 opsagent.http.routes/fn core.clj:94 compojure.core/make-route[fn] core.clj:40 compojure.core/if-route[fn] core.clj:25 compojure.core/if-method[fn] core.clj:107 compojure.core/routing[fn] core.clj:2443 clojure.core/some core.clj:107 compojure.core/routing RestFn.java:139 clojure.lang.RestFn.applyTo core.clj:619 clojure.core/apply core.clj:112 compojure.core/routes[fn] Var.java:415 clojure.lang.Var.invoke middleware.clj:76 opsagent.http.middleware/wrap-application-error[fn] middleware.clj:58 opsagent.http.middleware/wrap-content-type[fn] middleware.clj:95 opsagent.http.middleware/wrap-content-error[fn] middleware.clj:14 opsagent.http.middleware/wrap-request-logging[fn] keyword_params.clj:32 ring.middleware.keyword-params/wrap-keyword-params[fn] params.clj:58 ring.middleware.params/wrap-params[fn] jetty.clj:18 ring.adapter.jetty/proxy-handler[fn] (Unknown Source) ring.adapter.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$0.handle HandlerWrapper.java:111 org.eclipse.jetty.server.handler.HandlerWrapper.handle Server.java:349 org.eclipse.jetty.server.Server.handle AbstractHttpConnection.java:452 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest AbstractHttpConnection.java:894 org.eclipse.jetty.server.AbstractHttpConnection.content AbstractHttpConnection.java:948 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content HttpParser.java:857 org.eclipse.jetty.http.HttpParser.parseNext HttpParser.java:235 org.eclipse.jetty.http.HttpParser.parseAvailable AsyncHttpConnection.java:76 org.eclipse.jetty.server.AsyncHttpConnection.handle SelectChannelEndPoint.java:609 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle SelectChannelEndPoint.java:45 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run QueuedThreadPool.java:599 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob QueuedThreadPool.java:534 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run (Unknown Source) java.lang.Thread.run
Datastax OpsCenter 4.x中存在一个错误,如果安装了DSE,则在代理启动期间可能会导致问题,但将/etc/cassandra用作configuration目录。 它应该在即将到来的OpsCenter版本中得到修复。
作为解决方法,请尝试创build/etc/dse目录并重新启动代理。