Назад | Перейти на главную страницу

Datastax OpsCenter 5.1 не может создать резервную копию всех пространств ключей

Недавно мы обновили серверы нашей компании (Datastax Enterprise 4.5.3) до DSE 4.6.0. Единственная проблема, с которой мы сталкиваемся, - это новый Служба резервного копирования, в котором мы не можем создать резервную копию «Все пространства ключей». Тем не менее, резервное копирование пространств ключей по одному работает как шарм. Ошибка, похоже, исходит от агента (ов) datastax, установленного на узлах, и я привожу столько деталей, сколько могу вспомнить ниже.

Журнал событий OpsCenter:

Ошибка резервного копирования всех пространств ключей: сбой резервного копирования всех пространств ключей для следующих мест назначения: моментальный снимок

Не удалось сделать снимок всех пространств ключей на узле <node-IP>: clojure.lang.Compiler $ CompilerException: java.lang.ClassFormatError: недопустимый метод Длина кода 96939 в файле класса clojure / core $ eval87, компиляция: (NO_SOURCE_PATH: 0: 0) (<IP-адрес узла>)

Не удалось сделать снимок всех пространств ключей на узле <node-IP>: clojure.lang.Compiler $ CompilerException: java.lang.ClassFormatError: недопустимый метод Длина кода 96939 в файле класса clojure / core $ eval87, компиляция: (NO_SOURCE_PATH: 0: 0) (<IP-адрес узла>)

Вышеупомянутая ошибка (моментальный снимок всех пространств ключей ...) немного длиннее, так как она появляется один раз для каждого доступного узла в кластере, и в конце отображается ошибка «Резервное копирование всех пространств ключей: ...».

При этом все агенты datastax-agent выдают следующее сообщение об ошибке:

 ERROR [qtp1549990111-47] 2015-02-13 18:35:50,887 Unhandled route
 Exception: clojure.lang.Compiler$CompilerException:
 java.lang.ClassFormatError: Invalid method Code length 96939 in class
 file clojure/core$eval87, compiling:(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/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: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]
                        (Unknown Source) 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 Caused by: java.lang.ClassFormatError: Invalid method Code length 96939 in
 class file clojure/core$eval87
                        (Unknown Source) java.lang.ClassLoader.defineClass1
                        (Unknown Source) java.lang.ClassLoader.defineClass
                        (Unknown Source) 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

Вышесказанное относится к производственному кластеру из 5 узлов в 2 центрах обработки данных (значения по умолчанию Datastax, контроллеры домена Cassandra / Analytics и DseSimpleSnitch). Аналитика DC работает со Spark и CFS. Я пробовал ту же процедуру (путь обновления 4.5.3-> 4.6.0-> Резервное копирование всех пространств ключей) в моем локальном кластере из двух машин (одна Cassandra, одна Analytics) с гораздо меньшим набором данных, и она работает как шарм.

В OpsCenter 5.1 есть (известная) ошибка, которая приводит к сбою резервного копирования в определенных сценариях. К сожалению, похоже, что у вас есть. Исправление будет в OpsCenter 5.1.1, который скоро будет выпущен.

Обнаруженный вами обходной путь (резервное копирование пространства ключей) должен работать надежно.