0
私はpostgresデータベースに接続しようとしています。 connect()に1/2秒以上かかる場合は、タイムアウトして使用できないと仮定します。残念ながら、設定を到達不能なホスト/ポートに変更すると、ETIMEDOUTを取得する前に約15秒のハングタイムが表示されます。次のコードスニペットの例では、到達可能かどうかに関わらず、どのデータベースにも接続するのがidleTimeoutMillisで指定された1msよりも長くかかるため、100%のタイムアウトを期待しています。node-postgresパッケージを使用してpgデータベースに接続する際のタイムアウトを指定しますか?
// npm install pg
var pg = require("pg");
var config = {
"host": "myAWS-RDSinstance",
"port": 5432,
"database": "my_db",
"user": "postgres",
"password": "foobar",
"idleTimeoutMillis": 1 // one millisecond = should timeout every time
};
var pool = new pg.Pool(config);
pool.connect(function(err, client, done){
if(err) {
return console.error('error fetching client from pool', err);
}
console.log("connected. attempting query.");
client.query("SELECT COUNT(*) FROM my_table", function(err, result){
done(); // release client to pool
if(err) throw err;
console.log(result.rows[0]);
});
});
この解決策に問題があります。新しいクライアントがプール内に作成されると、(configオブジェクトはpg.Clientに内部的に渡されるため)同じストリームインスタンスを使用しようとします。失敗するのは "/ usr/bin/nodejs [8673]:../src /stream_base.h:233:void node :: StreamBase :: Consume():アサーション '(consumed_)==(false) 'が失敗しました。 – federicojasson