Tag: 死锁

在node.js上unit testingmysql回滚

我在一个节点项目中使用mysql。 我想unit testing一个JavaScript函数,使一个SQL交易。 如果事务成为locking监视器的受害者,则该函数具有处理失败的代码。 还是呢? 因为我是unit testing,所以我只在一个本地数据库上进行一次事务处理,所以不会出现死锁,对吗? 我怎样才能testing死锁处理,如果它永远不会发生? 有没有办法强制它发生? 例: thisMustBeDoneBeforeTheQuery(); connection.queryAsync(/*This is an update*/).catch(function(err) { undoThatStuffIDidBeforeTheQuery(); // I hope that function worked, because my unit tests can't // make a deadlock happen, so I can't know for sure. }

Node.js node-csv-parser死锁,因为背压不起作用

我正在尝试从CSV文件中读取url,检查它们是否可用,并将错误的url写入另一个文件。 我经历了大概几千次,然后急剧减速(从每秒钟5次检查到每10秒检查一次),然后得到“致命错误:CALL_AND_RETRY_2分配失败 – 进程内存不足”,大概是因为我没有应用背压正确的排放stream。 var csv = require('csv'); var request = require('request'); var fs = require('fs'); csv() .from(fs.createReadStream('./urls.csv'), {columns: true}) .to(fs.createWriteStream('./badurls.csv')) .transform(function(data, index, callback){ checkImage(null,callback,data['main-image-url'],index) }); function checkImage(err, callback, url, index) { if (url != "") { request.head(url, function(err, res) { console.log(index,res.statusCode,url); if (res.statusCode != 200) { callback(null,url+"\n"); } }) } }