nodeのmysql2のエラーに関する質問です。
下記のコードをAWSのLambda関数で実行すると、何度かに1度初回のDB接続(check()関数)にて「Pool is closed」のエラーが発生致します。
(問題なく実行できる場合もあります。)
どういう状況でこのエラーが発生するかもわからず困っております。
(当該lambda関数を短い時間(数分内)に連続して実行するとこのエラーが発生しているようにも見えます。)
どの部分を改善すれば「Pool is closed」エラーが発生しなくなるかご教示頂けましたら、幸甚で御座います。
nodejs
1const AWS = require('aws-sdk'); 2const mysql = require('mysql2'); 3 4const pool = mysql.createPool({ 5 host : 'xxxx', 6 user : 'xxxx', 7 password : 'xxxx', 8 database: 'xxxx', 9 port: 'xxx', 10}); 11 12// 接続 13pool.query = util.promisify(pool.query); 14 15exports.lambdaHandler = async (event, context) => { 16 const check_res = await check(); 17 const check_a_res = await check_a(); 18 const check_b_res = await check_b(); 19 const check_c_res = await check_c(); 20 pool.end(); 21 return check_c_res; 22}; 23 24function check(){ 25 const data = ["a", "b"]; 26 27 try { 28 const results = await pool.query('select id from table where id = ? and name = ?' ,data); 29 return results; 30 }catch(e){ 31 console.log("check error"); 32 pool.end(); 33 throw e; 34 } 35} 36 37//function check_a()/check_b()/check_c()もDB接続し、それぞれinsert/update/deleteを含む関数となっております。 38
#エラー
"errorMessage": "Pool is closed.",
"errorType": "Error",
"stackTrace": [
"process.nextTick (/var/task/node_modules/mysql2/lib/pool.js:38:40)",
"_combinedTickCallback (internal/process/next_tick.js:131:7)",
"process._tickDomainCallback (internal/process/next_tick.js:218:9)"
]
#環境
AWS lambda関数(node.js : 8.10)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/18 08:24
2019/07/18 10:44 編集
2019/07/19 02:31
2019/07/20 00:58