Кластер с одним узлом игнорирует обновление LWT при использовании однопоточного клиента Java в WindowsJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Кластер с одним узлом игнорирует обновление LWT при использовании однопоточного клиента Java в Windows

Сообщение Anonymous »

У меня следующая настройка:
  • cassandra 4.1.7 работает в докере на хосте Ubuntu, один узел
  • Java-клиент с драйвером datastax 3.11.5, jdk 11.0.25
Код:

Код: Выделить всё

public class Main {

public static void main(String[] args) throws Exception {
try (Cluster cluster = connect()) {
Session session = cluster.connect();
session.execute("DROP KEYSPACE IF EXISTS lwt_test");
session.execute("CREATE KEYSPACE lwt_test WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 } AND DURABLE_WRITES = true");
session.execute("CREATE TABLE lwt_test.lwt (key timeuuid, dummy text, value text, PRIMARY KEY(key))");
session.execute("USE lwt_test");

final UUID key = UUIDs.timeBased();
final String dummy = "ABC";
final String value = "DEF";
session.execute("insert into lwt(key, dummy, value) values(?, ?, ?)", key, dummy, value);

final String value2 = "XYZ";
session.execute("update lwt set value=? where key=?", value2, key);
String actualValue = session.execute("select value from lwt where key=?", key).one().getString("value");
if (!value2.equals(actualValue)) {
throw new RuntimeException("Should be " + value + " but was " + actualValue);
}

// (1) uncomment next line to make the problem go away
//            Thread.sleep(1000);

ResultSet rs = session.execute("update lwt set value='MUHAHA' where key=? if value=?", key, value2);
if (rs.wasApplied()) {
actualValue = session.execute("select value from lwt where key=?", key).one().getString("value");
if (!"MUHAHA".equals(actualValue)) {
throw new RuntimeException("Should be MUHAHA but was " + actualValue);
}
System.out.println("SUCCESS: actual value is " + actualValue);
}
}
}

private static Cluster connect() {
return Cluster.builder()
.addContactPoints("remote-cluster")
.withPort(9042)
.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.LOCAL_QUORUM))
// (2) uncomment next line to make the problem go away
//                .withTimestampGenerator(ServerSideTimestampGenerator.INSTANCE)
.build();
}

}
Когда я запускаю этот код в Windows 10, он завершается с ошибкой:

Код: Выделить всё

Exception in thread "main" java.lang.RuntimeException: Should be MUHAHA but was XYZ
at org.example.Main.main(Main.java:37)
Это означает, что обновление LWT не применилось, несмотря на то, что оно было выполнено позже, и метод wasApplied вернул true.
В то же время тот же код работает на MacOS без каких-либо ошибок.
Обходным решением является либо подождать перед выполнением обновления с помощью LWT (1), либо использовать временные метки на стороне сервера (2), что может создать другие проблемы в случае кластера с несколькими узлами. согласно обсуждению в https://issues.apache.org/jira/browse/CASSANDRA-6178
Я также пробовал разные версии cassandra (3.11 и 5.0.2) и драйвер Java 4.17.0 - проблема сохраняется во всех комбинациях.
Это не похоже на ожидаемое поведение из-за разных результатов в Windows и MacOS и больше похоже на проблему с драйвером, чем с сервером. сам по себе.
Есть ли способ заставить его работать без «сна», используя генератор меток времени по умолчанию (на стороне водителя) в Windows?

Подробнее здесь: https://stackoverflow.com/questions/792 ... lient-on-w
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Кластер Cassandra с одним узлом игнорирует обновление LWT при использовании однопоточного Java-клиента в Windows
    Anonymous » » в форуме JAVA
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Кластер заданий Flink и кластер сеансов — развертывание и настройка
    Anonymous » » в форуме JAVA
    0 Ответы
    59 Просмотры
    Последнее сообщение Anonymous
  • Отладка с помощью однопоточного лазурного QueeTrigger
    Anonymous » » в форуме C#
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Удаление не работает сразу в базе данных Cassandra с одним узлом.
    Anonymous » » в форуме JAVA
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Удаление не работает сразу в базе данных Cassandra с одним узлом.
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»