JDBCマスタ/スレーブとして構成されたActiveMQシステムのフォールトトレランスをテストしています。この設定では、1つのpostgresデータベースと2つのブローカーがあります.1つはマスターブローカーであり、もう1つはスレーブブローカーです。このメカニズムが動作する方法は、マスタがdb内のテーブルに対して排他ロックを取り出すことです。スレーブはこれもやろうとし、ロックが利用可能になるまで待ちます。マスタが死亡した場合は、ロックを解除してスレーブが引き継ぐ必要があります。ただし、マスターとデータベースとのネットワーク接続が失われた場合、ロックは解放されず、デッドロックのシナリオが発生します。ここで必要と思われるのは、指定された期間内に更新されなければ、自動的にロックを解除するようにPostgresに指示する方法です。 POSA 3のデザインパターンの本は、これをリースパターンと呼んでいます。 Postgresにこれをさせることは可能ですか?そうでない場合、他のデータベースベンダーはそれをサポートしていますか?PostgreSQLで自動的にロックを解除することはできますか?
答えて
これはデッドロックではありませんが、これは接続の問題が失われています。
デッドロックは、2つのトランザクションが以前にロックされたリソースをロックしようとしたときに発生します。 PostgreSQL
がこれらの状況を検出します。あなたのケースでは
、master
はmaster
ためslave
待ち、接続が失われたので、それが受けたことがないユーザー入力のためのmaster
待ち、リソースをロックします。
PostgreSQL
が失われた接続を検出するたびに、トランザクションは自動的にロールバックされます。
接続損失の検出を制御するには、使用することができ、次のPostgreSQL
connection options:
TCP_KEEPIDLE
ソケットオプションをサポートするシステムで
tcp_keepalives_idle (integer)
は、アイドル状態に送るキープアライブ間の秒数を指定します接続。 0の値はシステムのデフォルトを使用します。
TCP_KEEPIDLE
がサポートされていない場合、このパラメータはゼロでなければなりません。このパラメータは、Unixドメインソケット経由での接続では無視されます。TCP_KEEPINTVL
ソケットオプションをサポートするシステムで
tcp_keepalives_interval (integer)
、再送信する前に、キープアライブへの応答を待つ、秒単位で、どのくらいの時間を指定します。 0の値はシステムのデフォルトを使用します。
TCP_KEEPINTVL
がサポートされていない場合、このパラメータはゼロでなければなりません。このパラメータは、Unixドメインソケット経由での接続では無視されます。TCP_KEEPCNT
ソケットオプションをサポートするシステムで
tcp_keepalives_count (integer)
、接続が切れたと考えられる前に失われる可能性がどのように多くのキープアライブを指定します。 0の値はシステムのデフォルトを使用します。
TCP_KEEPCNT
がサポートされていない場合、このパラメータはゼロでなければなりません。このパラメータは、Unixドメインソケット経由での接続では無視されます。
- 1. Log4Netはログファイルを自動的に削除できますか?
- 2. IValidatableObjectインターフェイスで自動的にDataAnnotations検証を自動的に行うことはできますか?
- 3. Xcodeプロジェクトを自動的に生成することはできますか?
- 4. Androidでフォルダをロックしたりロックを解除するには
- 5. 入力後に自動的に "end"をルビモードでインデント解除しますか?
- 6. 画面ロックとロック解除
- 7. ロック解除画面のパスワードを入力するプログラムを書くことはできますか?
- 8. getアクセサにコレクションをロックすることはできますか?
- 9. Cで静的変数と自動変数を解放()できますか?
- 10. この読み取りロックを取り除くことはできますか?
- 11. google apiでファイルをロックすることはできますか?
- 12. 目的C NSLock:異なるスレッドでNSLockをロックおよびロック解除する
- 13. クロムスニペットを自動実行することはできますか?
- 14. JenkinsからTestLinkでジョブを何とか自動的に作成することはできますか?
- 15. PostgreSQLでLinqPadを使用することはできますか?
- 16. iphoneのロックを解除するためにスライドすることで、ロック解除sreenの通知がありますか?
- 17. PostgreSQLの自動インクリメントカラムはオンザフライですか?
- 18. EventBusスティッキイベントは、サブスクライバメソッドで自動的に削除されますか?
- 19. Xcode 4でかっこ/括弧を自動的に閉じることはできますか?
- 20. UIActionSheetを自動的に解除する方法
- 21. 非同期タスクでdispatch_queue_tをロックしてロック解除します
- 22. iPhoneとアクセシビリティのロックを解除する
- 23. automapper、自分のUserDTOのUserIdにGuidを自動的に割り当てることはできますか?
- 24. postgreSQLトリガにデータを渡すことはできますか?
- 25. アプリケーションの起動/デバッグ時に古いインスタンスを自動的に終了することはできますか?
- 26. ウィンドウが開いているときにメニュー項目をロックする。閉じるときにロック解除する
- 27. vsプロジェクトを公開すると自動的にリリースモードに切り替えることはできますか?
- 28. この埋め込みビデオを自動的に再生することはできますか?
- 29. VS2008を使用してC#でイベントを自動的にフックすることはできますか?
- 30. Pythonオブジェクトが削除されると、Ctypes StructuresとPOINTERSは自動的にメモリを解放しますか?
これが私がstackoverflowが好きな理由です – Andy