Neo4j: [Neo.DatabaseError.General.UnknownError]: попытка сделать недействительным кешированное свойство - PullRequest
0 голосов
/ 07 мая 2020

Странное исключение было вызвано Neo4j 4 , тот же запрос используется в Neo4j 3.5 без какого-либо неожиданного поведения.

Точное исключение:

ERROR Client triggered an unexpected error [Neo.DatabaseError.General.UnknownError]: Tried to invalidate a cached property CachedProperty(a,Variable(a),PropertyKeyName(uploaded),NODE_TYPE) but no slot was found for the entity name in SlotConfiguration(longs=3, refs=1, slots=Map( p@7 -> LongSlot(0,false,Node), space -> LongSlot(2,false,Node), p_rel@31 -> LongSlot(1,false,Relationship)), cachedProperties=Map(CachedProperty(a,Variable(a),PropertyKeyName(uploaded),NODE_TYPE) -> RefSlot(0,false,Any)))., reference ca2956eb-df91-4359-9bb6-9330109dbe11.

Запрос выглядит следующим образом:

MATCH (p:Post {id: $post_id})-[p_rel:IN_PART]->(space)
REMOVE p._lock
WITH p, p_rel
OPTIONAL MATCH (a:Attachment)-[:ATTACHED_TO]->(p)
WHERE a.has_file AND (NOT a.uploaded OR (a.has_thumb AND NOT a.thumb_uploaded))
WITH p, p_rel, count(a) as missing_count
WHERE missing_count = 0
SET p.completed = true
WITH p, p_rel
CALL apoc.refactor.setType(p_rel, 'IN') yield input, output
RETURN p

Запрос в основном устанавливает свойство для узлов типа Post, если определенные условия выполняются на его дочерних узлах типа Attachment .

Версия Neo4j : 4.0.3

Операционная система : Ubuntu 18.04.3 LTS

Режим БД : Причинный кластер

Подсказка: удаление строки p._lock не вызовет исключения.

Однако запрос был успешно выполнен без каких-либо исключений на neo4j 3.5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...