Как запустить агент CDC в контейнере Звездных врат?

Я пытаюсь создать интеграционный тест для Datastax CDC . Я пытаюсь следовать инструкциям здесь , чтобы создать контейнерный экземпляр Stargate, на котором работает Java-агент CDC . Я использую следующий файл докеров:

      FROM stargateio/coordinator-4_0:v2

ENV CLUSTER_NAME="test"
ENV CLUSTER_VERSION="4.0"
ENV DEVELOPER_MODE="true"
ENV ENABLE_AUTH="true"

RUN (curl -L https://github.com/datastax/cdc-apache-cassandra/releases/download/v2.2.9/agent-c4-2.2.9-all.jar --output agent-c4-2.2.9-all.jar)
ENV JAVA_OPTS="$JAVA_OPTS -javaagent:agent-c4-2.2.9-all.jar"

я используюJAVA_OPTSпотому чтоJVM_EXTRA_OPTSпохоже, не имеет никакого эффекта. Stargate вставляет их в команду запуска . Я получаю эту ошибку:

      Using environment for config
2023-05-18T20:53:28.708821506Z Running java -server -javaagent:agent-c4-2.2.9-all.jar -Dcassandra.libjemalloc=/usr/lib/aarch64-linux-gnu/libjemalloc.so.2 -Dstargate.libdir=./stargate-lib -Djava.awt.headless=true -jar ./stargate-lib/stargate-starter-2.0.13.jar --cluster-name test --cluster-version 4.0 --listen 172.17.0.2 --enable-auth --developer-mode
2023-05-18T20:53:28.771770673Z SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
2023-05-18T20:53:28.771806548Z SLF4J: Defaulting to no-operation (NOP) logger implementation
2023-05-18T20:53:28.771810090Z SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2023-05-18T20:53:28.773310423Z Exception in thread "main" java.lang.reflect.InvocationTargetException
2023-05-18T20:53:28.773331381Z  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2023-05-18T20:53:28.773333715Z  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2023-05-18T20:53:28.773336006Z  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2023-05-18T20:53:28.773337756Z  at java.lang.reflect.Method.invoke(Method.java:498)
2023-05-18T20:53:28.773339298Z  at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
2023-05-18T20:53:28.773341298Z  at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
2023-05-18T20:53:28.773343131Z Caused by: java.lang.NoClassDefFoundError: org/apache/cassandra/config/DatabaseDescriptor
2023-05-18T20:53:28.773344881Z  at com.datastax.oss.cdc.agent.Agent.main(Agent.java:49)
2023-05-18T20:53:28.773346631Z  at com.datastax.oss.cdc.agent.Agent.premain(Agent.java:31)
2023-05-18T20:53:28.773348715Z  ... 6 more
2023-05-18T20:53:28.773350340Z Caused by: java.lang.ClassNotFoundException: org.apache.cassandra.config.DatabaseDescriptor
2023-05-18T20:53:28.773352090Z  at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
2023-05-18T20:53:28.773353798Z  at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
2023-05-18T20:53:28.773355465Z  at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
2023-05-18T20:53:28.773357131Z  at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
2023-05-18T20:53:28.773358756Z  ... 8 more
2023-05-18T20:53:28.773360340Z FATAL ERROR in native method: processing of -javaagent failed

Я пробовал скачать Кассандру.jarфайлы и добавление их в путь к классам (как описано в этом вопросе ) безрезультатно. Как мне устранить эту ошибку?

2 ответа

Не похоже, что мы пытались это сделать раньше, поэтому у нас нет рабочего примера, который можно было бы вам показать.

Мы изучаем этот вопрос и постараемся заставить его работать в ближайшие несколько дней. Я опубликую обновление, как только мне будет что сообщить. Ваше здоровье!

[ОБНОВЛЕНИЕ] Интеграция CDC со Stargate пока не поддерживается. Я зарегистрировал запрос на добавление функции от вашего имени (ссылка № 2587), пытаясь включить его в план действий.

Судя по приведенной выше трассировке стека Java, вероятная причина возникновения исключения заключается в том, что файл jar, содержащий код агента Java (agent-c4-2.2.9-all.jar) отсутствуют зависимости Apache Cassandra.

Вот некоторые возможные решения:

  1. Используйте jar-файл агента, в который включены все его зависимости.
  2. Или укажите недостающие зависимости в пути к классам.

В документации JDK по инструментам есть раздел о том, как загружаются классы агентов, а также раздел о том, как файлы jar агента могут указывать свои классы.Boot-Class-Pathдля загрузки зависимостей.

Надеюсь, это поможет.

Ваше здоровье

Другие вопросы по тегам