我们最近将公司服务器(Datastax Enterprise 4.5.3)升级到DSE 4.6.0。 我们面临的唯一问题是新的备份服务 ,我们无法为“所有密钥空间”创build备份。 尽pipe如此,逐个备份密钥空间就像一个魅力。 这个错误似乎来自节点上安装的datastax-agent,并附上尽可能多的细节,我可以在下面回顾一下。
OpsCenter事件日志:
所有密钥空间的备份失败:以下目标的所有密钥空间的备份失败:快照
节点<node-IP>上的所有密钥空间的快照失败:clojure.lang.Compiler $ CompilerException:java.lang.ClassFormatError:无效的方法在类文件clojure / core $ eval87中编译代码长度为96939,编译:( NO_SOURCE_PATH:0:0) (<node-IP>)
节点<node-IP>上的所有密钥空间的快照失败:clojure.lang.Compiler $ CompilerException:java.lang.ClassFormatError:无效的方法在类文件clojure / core $ eval87中编译代码长度为96939,编译:( NO_SOURCE_PATH:0:0) (<node-IP>)
上面的错误(所有密钥空间的快照…)稍微长一点,因为它对于群集上的每个可用节点来说都是一次,最后出现“所有密钥空间的备份失败:…”错误。
同时,所有的datastax代理程序都会显示以下错误消息:
错误[qtp1549990111-47] 2015-02-13 18:35:50,887未处理的路由
exception:clojure.lang.Compiler $ CompilerException:
java.lang.ClassFormatError:无效的方法在类中的代码长度为96939
文件clojure /核心$ eval87,编译:(NO_SOURCE_PATH:0:0)
Compiler.java:6567 clojure.lang.Compiler.analyzeSeq
Compiler.java:6361 clojure.lang.Compiler.analyze
Compiler.java:6616 clojure.lang.Compiler.eval
Compiler.java:6608 clojure.lang.Compiler.eval
Compiler.java:6582 clojure.lang.Compiler.eval
core.clj:2852 clojure.core / eval
routes.clj:58 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 /一些
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:93 opsagent.http.middleware / wrap-application-error [fn]
middleware.clj:75 opsagent.http.middleware / wrap-content-type [fn]
middleware.clj:112 opsagent.http.middleware / wrap-content-error [fn]
middleware.clj:31 opsagent.http.middleware / wrap-request-logging [fn]
middleware.clj:17 opsagent.http.middleware / wrap-opscenter-id-check [fn]
middleware.clj:123 opsagent.http.middleware / wrap-version-header [fn]
keyword_params.clj:32 ring.middleware.keyword-params / wrap-keyword-params [fn]
params.clj:58 ring.middleware.params / wrap-params [fn]
jetty.clj:19 opsagent.http.jetty / proxy-handler [fn]
(未知来源)opsagent.http.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由:java.lang.ClassFormatError引起:无效的方法代码长度96939 in
class文件clojure / core $ eval87
(未知源)java.lang.ClassLoader.defineClass1
(未知源)java.lang.ClassLoader.defineClass
(未知源)java.lang.ClassLoader.defineClass
DynamicClassLoader.java:46 clojure.lang.DynamicClassLoader.defineClass
Compiler.java:4663 clojure.lang.Compiler $ ObjExpr.getCompiledClass
Compiler.java:3819 clojure.lang.Compiler $ FnExpr.parse
Compiler.java:6558 clojure.lang.Compiler.analyzeSeq
INFO [qtp1549990111-47] 2015-02-13 18:35:50,888 HTTP::post
/ ops / take-snapshot {:req-id“c13bb101-2f9e-4880-8b1f-efc178f49b3e”} -
500
以上适用于2个数据中心中的5个节点(Datastax默认值,Cassandra / Analytics DC和DseSimpleSnitch)的生产群集。 分析DC适用于Spark和CFS。 我已经尝试了相同的过程(升级path4.5.3-> 4.6.0->备份所有密钥空间)到我本地的双机群集(一个Cassandra,一个分析)与一个大规模的小数据集,它的作品就像一个魅力。
OpsCenter 5.1中存在一个(已知的)错误,导致在特定情况下备份失败。 不幸的是,看起来像你有。 该修补程序将在OpsCenter 5.1.1即将发布。
您发现的解决方法(每个密钥空间备份)应该可靠地工作。