问题也发布在这里:https://github.com/neo4j/neo4j-javascript-driver/issues/452
操作系统:Docker Alpine Linux 4.4.0-145通用的Nodejs; Docker Alpine Linux v3.8上的数据库
复制步骤 运行查询。可能是沉重的负担,但情况并非总是如此
{ app: 'api-prod',
4/18/2019 1:03:36 PM0|app | error: { Neo4jError: Ignored either because of an error or RESET
4/18/2019 1:03:36 PM0|app | at captureStacktrace (/home/node/app/node_modules/neo4j-driver/lib/v1/result.js:200:15)
4/18/2019 1:03:36 PM0|app | at new Result (/home/node/app/node_modules/neo4j-driver/lib/v1/result.js:73:19)
4/18/2019 1:03:36 PM0|app | at finishTransaction (/home/node/app/node_modules/neo4j-driver/lib/v1/transaction.js:328:10)
4/18/2019 1:03:36 PM0|app | at Object.commit (/home/node/app/node_modules/neo4j-driver/lib/v1/transaction.js:232:17)
4/18/2019 1:03:36 PM0|app | at Transaction.commit (/home/node/app/node_modules/neo4j-driver/lib/v1/transaction.js:136:35)
4/18/2019 1:03:36 PM0|app | at TransactionExecutor._handleTransactionWorkSuccess (/home/node/app/node_modules/neo4j-driver/lib/v1/internal/transaction-executor.js:151:12)
4/18/2019 1:03:36 PM0|app | at /home/node/app/node_modules/neo4j-driver/lib/v1/internal/transaction-executor.js:127:23
4/18/2019 1:03:36 PM0|app | at <anonymous>
4/18/2019 1:03:36 PM0|app | at process._tickDomainCallback (internal/process/next_tick.js:228:7) code: 'N/A', name: 'Neo4jError' },
4/18/2019 1:03:36 PM0|app | query: 'MATCH (c:company {uuid: $cid})\n RETURN {\n paid_seats: c.paid_seats,\n trial_end: c.trial_end\n }',
4/18/2019 1:03:36 PM0|app | data: { cid: 'c5d1d277-3646-44b1-836b-6e40e68d17a7' },
4/18/2019 1:03:36 PM0|app | level: 'error',
4/18/2019 1:03:36 PM0|app | message: 'Datbase error on mixed transaction' }
如果我获取日志信息并运行查询,则它本身运行良好。我以为可能与未关闭交易有关,因此我们拍摄了数据库快照并将其移到本地,并且在本地也遇到错误。
任何Docker容器的/ var / lib / neo4j / logs下都没有错误日志。 debug.log不包含任何相关信息
为了完整起见,我们使用包装器方法来调用数据库调用以为我们解析结果。在我们仅使用.run
并最近切换到.writeTransaction
尝试解决该问题之前,但我认为情况变得更糟。
这是包装纸:
run: function(query, data, parse = true){
return new Promise((resolve, reject)=>{
let session = driver.session()
session.writeTransaction((tx)=>{
tx.run(query, data)
.then((result)=>{
let records = result.records.map((record)=>{
return record
});
session.close()
resolve(parse ? db.parse(records) : records);
})
}).catch((err)=>{
logger.error('Datbase error on mixed transaction', {
error: err,
query: query,
data: data
});
if (err.code === neo4j.error.SERVICE_UNAVAILABLE) {
logger.error('Database Unavailable', err)
}
session.close()
reject(err);
})
});
},
然后我们await _db.run(query, params)
我们收到了很多这些错误。有什么想法吗?
今晚我打算将数据库升级到最新版本,看看是否有帮助。
答案 0 :(得分:0)
我将数据库升级到3.5.4-enterprise,此后我再也没有看到这些连接错误。