2

I guess the question is: why isn't this working? I'm a bit stuck because there isn't much in the way of documentation on the agent itself, and the exception (seemingly from Clojure) isn't particularly helpful.

  • 3-node cluster running DSE 4.0.2 (on SLES 11 SP3, Oracle JRE 1.7.0_45)
  • OpsCenter 4.1.2 on Ubuntu 14.04 LTS
  • OpsCenter is able to connect to the cluster without problems, but obviously complaining that the agents on the three nodes haven't connected; being SLES the "Fix" link in the OpsCenter dashboard doesn't work (because SLES doesn't use apt or yum)
  • Cassandra configuration in /etc/cassandra/ (which, based on strace, datastax-agent is finding, though it looks like it uses JMX after this, rather than reading cassandra.yaml)

Followed the manual agent setup instructions in the DataStax OpsCenter 4.1 documentation (basically just creating address.yaml), and started the datastax-agent on all three nodes. All three nodes get the same exception shortly after starting:

 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)

I get a similar (but more detailed) exception logged if I try to manually configure the node through OpsCenter (using the Configure action when viewing the node overview dialog):

 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

1 Answers1

0

There is a bug in Datastax OpsCenter 4.x that might cause problems during agent startup if DSE is installed, but /etc/cassandra is used as a config directory. It should be fixed in the upcoming version of the OpsCenter.

As a workaround, try creating a /etc/dse directory and restarting the agent.

arre
  • 281
  • 1
  • 3