2017-05-04 5 views
0

私はJavaとNode Jの両方でredshiftを扱っています。いくつかの時間前に、切断イベントがすべての緊密な接続呼び出しで作成されていないことがわかりました。赤方偏移接続が適切な方法で閉じられていない

Connection conn = null; 
Statement stmt = null; 
try { 
     ... 
} catch (Exception ex){ 
    throw new Exception("Can't sync raw data from redshift"); 
}finally { 
    try { 
     if (stmt != null) { 
      stmt.close(); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
    try { 
     if (conn != null) { 
      conn.close(); 
     } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
} 

及び(PGモジュールを使用して)ノードのJs例: (redshift.jdbc41使用)Javaのように、接続を閉じるためのコードと呼ばれるクエリを実行した後

var client = new pg.Client(conString); 
client.connect(function (err) { 
    if (err) throw err; 
    client.query(query, function (err, result) { 
     client.end(function (err) {if (err) throw err;}); 
     ... 
    }); 
}); 

が、しかしでstl_connection_log接続の一部のみを作成セッション開始イベント、ただし、切断セッションのように、数日間の接続がアクティブな状態で保持され、クライアントアプリケーションの停止後にはリセットされません。

誰かがこの問題を解決する方法をアドバイスできますか? redshiftのためのいくつかの設定やクライアントアプリケーションでの別の作業が必要な場合がありますか?

+0

接続文字列にidleTimeoutMillis:を設定できます。 –

答えて

0

あなたが言及したノードJsコードはうまく動作します。 redshiftで強制的に接続を終了したい場合は、以下のクエリを使用できます。私が悪いの仮定を行った場合

select pg_terminate_backend (pg_backend_pid()); 

コメントと私は私の答えを再フォーカスますしてください。

関連する問題