Я получил пустую ошибку результата при доступе к базе данных neo4j со следующей настройкой.
- Neo4j работает в докере.
- Процесс загрузки выполняется непрерывно с 0,5-секундным сном между каждой загрузкой
- Процесс считывания также выполняется непрерывно
Считыватель:
Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password"));
while (true) {
try (Session session = driver.session(AccessMode.READ)) {
for (int i = 1; i <= 100; i++) {
session.run("Match (n:Number) where n.value=$value return ID(n)", parameters("value", i)).single().get(0).asInt();
}
}
Thread.sleep(500);
}
Загрузчик:
Driver driver = GraphDatabase.driver("bolt://db_address:7687", AuthTokens.basic("user", "password"));
while (true) {
try (Session session = driver.session(AccessMode.WRITE)) {
try (Transaction tx = session.beginTransaction()) {
tx.run("MATCH (n) DELETE n");
for (int i = 1; i <= 100; i++) {
tx.run("CREATE (n:Number {value: $value}) return ID(n)", parameters("value", i)).single().get(0).asInt();
}
tx.success();
}
}
Thread.sleep(500);
}
После нескольких циклов я получаю ошибку в считывателепроцесс: не удается получить одну запись, потому что этот результат пуст.
При запуске база данных содержит запрошенные данные.Исходя из описания «записи транзакции» и кода выше, пустой результат кажется странным.
Я что-то упустил при обработке транзакции с neo4j?