var poll_max_date=AsyncPolling(function (end,err) { if(err) {
console.error(err); } var stmp_node_id=fs.readFileSync(path.join(__dirname,'node_id'),"utf8");
console.log("--------loaded node : "+stmp_node_id);
if(druid_stmp_node_id!=stmp_node_id) {
// MAX DATA CUT-OFF DRUID QUERY
druid_exe.max_date_query_fire();
// // DRUID QUERY FOR GLOBAL DATA
druid_exe.global_druid_query_fire();
druid_stmp_node_id=stmp_node_id; }
end(); }, 1800000).run();//30 mins
它在一段时间内正常工作,但是在4-5个小时之后会出现以下错误:
events.js:167 throw er; // Unhandled 'error' event ^
Error: read ECONNRESET at TCP.onStreamRead (internal/stream_base_commons.js:111:27) Emitted 'error' event at: at emitErrorNT (internal/streams/destroy.js:82:8) at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
尝试使用fs.watch来监视文件中的更改,而不是像下面这样轮询:
let md5Previous = null; let fsWait = false;
fs.watch(dataSourceLogFile, (event, filename) => { if (filename) {
if (fsWait) return; fsWait = setTimeout(() => { fsWait = false; }, 1000); const md5Current = md5(fs.readFileSync(dataSourceLogFile)); if (md5Current === md5Previous) { return; } md5Previous = md5Current; console.log(`${filename} file Changed`); // MAX DATA CUT-OFF DRUID QUERY druid_exe.max_date_query_fire(); // DRUID QUERY FOR GLOBAL DATA druid_exe.global_druid_query_fire(); } });
它在一段时间内也能正常工作,但之后会出现相同的错误,例如在4-5小时后:
events.js:167 throw er; // Unhandled 'error' event ^
Error: read ECONNRESET at TCP.onStreamRead (internal/stream_base_commons.js:111:27) Emitted 'error' event at: at emitErrorNT (internal/streams/destroy.js:82:8) at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
但是当在本地机器上运行时,它能够正常工作。只有在远程Linux机器上运行时才会出现错误。
有人可以帮助我解决这个问题吗?