У меня есть система, которая при развертывании запускает множество скриптов для заполнения базы данных Neo4J. Никакого импорта CSV, только обычные запросы, создающие множество узлов и отношений.
Довольно регулярно, но не всегда, я получаю ошибку в одном конкретном скрипте, и я не знаю почему. В этом файле нет ничего необычного.
Ошибка:
| { Neo4jError: Connection was closed by server
|
| at captureStacktrace (/code/node_modules/neo4j-driver/lib/v1/result.js:200:15)
| at new Result (/code/node_modules/neo4j-driver/lib/v1/result.js:73:19)
| at Session._run (/code/node_modules/neo4j-driver/lib/v1/session.js:173:14)
| at Session.run (/code/node_modules/neo4j-driver/lib/v1/session.js:154:19)
| at Object.complete (/code/datamigrations/003/0007_yet_another_script.js:34:17)
| at ReadableStreamStreamer.ChunkStreamer.parseChunk (/code/node_modules/papaparse/papaparse.js:548:18)
| at ReadableStreamStreamer.<anonymous> (/code/node_modules/papaparse/papaparse.js:857:11)
| at ReadableStreamStreamer._streamData (/code/node_modules/papaparse/papaparse.js:1817:25)
| at ReadableStreamStreamer.<anonymous> (/code/node_modules/papaparse/papaparse.js:876:9)
| at IconvLiteEncoderStream.<anonymous> (/code/node_modules/papaparse/papaparse.js:1817:25) code: 'ServiceUnavailable', name: 'Neo4jError' }
Сам скрипт не делает ничего необычного. Ошибка возникает при первом запуске сценария session.r:
session.run(
`UNWIND {batch} as row
MATCH (e:Episode {issueKey: row.issueKey})
WITH e,row
UNWIND row.otherIds as otherId
MATCH (a:OtherElement {id: otherId})
CREATE (e)-[:ENABLES]->(a)
`,
{ batch: elements },
По общему признанию, я создаю здесь большой пакет. Более 30к узлов. Могло ли это вызвать ошибку? Было бы лучше разбить это на партии по 10к или что-то в этом роде?