Странное исключение было вызвано 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.