У нас есть база данных Neo4J 2.1.3, и у нас есть ограничение уникальности, которое было создано следующим образом:
СОЗДАТЬ ОГРАНИЧЕНИЕ НА (СЕГМЕНТ:СЕГМЕНТ) УТВЕРДИТЬ, что segment.segmentId УНИКАЛЬЕН
Когда мы тестируем это из браузера, он отлично работает при обнаружении нарушений, например:
СОЗДАТЬ (n:СЕГМЕНТ {имя: "дубликат", идентификатор сегмента: 110484}) ВОЗВРАТ n
приводит к
Узел 589 уже существует с меткой SEGMENT и свойством "segmentId"=[110484].
Neo.ClientError.Schema.ConstraintViolation
что хорошо.
У нас есть настройка нагрузочного тестера с 3 машинами и несколькими потоками на коробку, использующая Cypher поверх REST, взаимодействующая с Neo4J и использующая конечные точки транзакций для создания подобных описанным выше (но, конечно, гораздо больше свойств, относящихся к нашему приложению), и всегда пишущих в Мастер Neo4J в настройке HA.
Мы можем надежно воспроизвести в этой настройке несколько нарушений ограничения уникальности, которые НЕ улавливаются Neo4J, они выполняются без ошибок, и в результирующей базе данных мы можем видеть несколько узлов с меткой SEGMENT и тем же значением для свойства segmentId (мы намеренно создание повторяющихся значений segmentId для нашего теста).
Кто-нибудь еще сталкивается с той же проблемой? Это ошибка Neo4J?
Спасибо.