Кассандра поддерживает Java 10? - PullRequest
0 голосов
/ 14 сентября 2018

Мы планируем перенести нашу среду с Java 8 на OpenJDK 10. Делая это на моей локальной машине, я обнаружил, что Cassandra больше не запускается для меня, выдавая следующую ошибку:

enter image description here

Я не могу найти в сети надежную информацию, которая говорит, что она определенно не поддерживается.

Этот пост от 4 месяцев назад предполагает, что они не поддерживают Java 10, но не говорит, что это подтверждено, и является более логичным. Также есть комментарий от другого пользователя, в котором говорится, что ему удалось запустить его на Java 11.

В последнем комментарии к этой заявке к datastax говорится: «Мы обновили нашу матрицу CI, чтобы включить Java 10, и все работает, кроме вышеупомянутых проблем тестирования OSGi». Я не уверен, что от этого убрать, но, похоже, это подразумевает, что теперь он работает с Java 10, поскольку заявка помечена как разрешенная.

Этот билет , они обсуждают поддержку Java 11. Есть несколько комментариев, в которых обсуждается необходимость даже поддерживать Java 10, но они на самом деле не дают однозначного ответа на вопрос, будут ли они или нет.

Наконец этот блог обсуждает способ заставить Java 11 работать с cassandra. Однако я заметил, что это использует Cassandra 4.0. Это официально выпущено? Я замечаю на их сайте , что они говорят, что дата выпуска - tbd, и что текущий стабильный выпуск - 3.11.3, и об этом нет упоминания на их странице совместимости .

В настоящее время я установил Cassandra в Windows через Datastax, но я также попытался клонировать текущий репозиторий git и запустить его оттуда, но я получаю то же сообщение об ошибке (хотя на их github они, похоже, говорят, что он был только протестирован с Java 8).

Они просто не поддерживают 10? Также, если кто-нибудь знает, планирует ли он выпустить 4.0 в ближайшее время, и если он определенно будет поддерживать 11 (и я предполагаю 10?), Это было бы огромной помощью.

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018

Cassandra 4.0 имеет явную поддержку как Java 8, так и Java 11. Фактически, они даже разделяют файлы конфигурации следующим образом:

$ pwd
/Users/aaron/local/apache-cassandra-4.0-SNAPSHOT/conf
$ ls -a jvm*
jvm-clients.options jvm11-clients.options   jvm8-clients.options
jvm-server.options  jvm11-server.options    jvm8-server.options

Причина поддержки этих конкретных версий заключается в двухфолд.Прежде всего, Java 8 уже несколько лет является стандартом де-факто для Cassandra.Пользователи ожидают, что в будущем он все еще будет работать на Java 8.

Учитывая новый 6-месячный цикл выпуска Java, Java 9 и Java 10 больше не будут "текущими", когда выйдет Apache Cassandra 4.0.Кроме того, тесты, которые выполняются во время сборки, показали, что они требовательны к тому, с какой версией Java они работают.Поэтому было принято решение перейти на поддержку Java 8 и 11 для 4.0, так как работа над Java 9 и 10 была с более низким приоритетом.

Это не значит, что Cassandra 4.0 не будет работать на Java 9 или 10. На самом деле, CASSANDRA-9608 даже имеет патч, который должен его закрыть.Но факт остается фактом: Java 8 включена из-за ее давнего использования в базе пользователей Cassandra.Java 11 будет текущей JDK / JRE на момент выпуска 4.0.Если вы хотите быть уверены, что ваш кластер будет работать нормально, я бы выбрал один из этих двух.

Но до 4.0 самый последний патч Java 8 действительно единственный вариант.

0 голосов
/ 10 апреля 2019

С Cassandra 3.11.4 мы смогли запустить движок Cassandra с Java 11, но было несколько ошибок:

  • Если по какой-либо причине вы все еще используете CMS для сборки мусора, самое время перейти к G1; это настраивается в файле jvm.options.
  • Также в jvm.options вам нужно будет отключить ThreadPriorityPolicy, поскольку он устарел с Java 9
  • С помощью унифицированной регистрации активности gc, представленной в Java 9, вам нужно будет удалить определенные параметры gc в jvm.options. Некоторые из этих параметров:
    • -Xloggc
    • -XX: + PrintGCDetails
    • -XX: + PrintGCDateStamps
    • -XX: + PrintHeapAtGC
    • -XX: + PrintTenuringDistribution
    • -XX: + PrintGCApplicationStoppedTime
    • -XX: + PrintPromotionFailure
  • nodetool все еще требует Java 8 для выполнения.

    • У нас установлена ​​и JVM, и мы использовали альтернативы, чтобы установить Java 11 по умолчанию. Это также значение переменной JAVA_HOME
    • У нас есть новая переменная с именем JAVA8_HOME, которая указывает на эту версию
    • Мы обновили скрипт nodetool (в нашем случае это был / usr / bin / nodetool) для использования JAVA8_HOME при установке переменной JAVA
  • Для кластера, который использовал offheap_buffers для memtable_allocation_type (он определен в cassandra.yaml), нам пришлось изменить его на offheap_objects

0 голосов
/ 14 сентября 2018

Выпущенные версии Cassandra поддерживают только Java 8 - поддержка более высоких версий будет в Cassandra 4.0, которая еще не выпущена. Вы можете отслеживать прогресс в CASSANDRA-9608

...