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. Appiumでアプリを自動化するときにiOSアラートを自動的に解除します
- 2. クロムフルスクリーンを自動的に開くことはできますか?
- 3. Log4Netはログファイルを自動的に削除できますか?
- 4. RestTemplateは自動的に接続を解除しますか?
- 5. jqueryは自動的にフォーラムを提出することはできますか?
- 6. IValidatableObjectインターフェイスで自動的にDataAnnotations検証を自動的に行うことはできますか?
- 7. ログメッセージをフラッシュしてC++で自動的にミューテックスをロック解除する方法は?
- 8. Xcodeプロジェクトを自動的に生成することはできますか?
- 9. Spotifyアクセストークンを自動的に更新することはできますか?
- 10. 稼働中のコンテナを1日後に自動的に削除することはできますか?
- 11. Androidでフォルダをロックしたりロックを解除するには
- 12. Vimは画面のロック解除後に自動的にウィンドウのサイズを変更して歪ませます。
- 13. VBAによるロックとロック解除
- 14. 入力後に自動的に "end"をルビモードでインデント解除しますか?
- 15. getアクセサにコレクションをロックすることはできますか?
- 16. ロック解除画面のパスワードを入力するプログラムを書くことはできますか?
- 17. 画面ロックとロック解除
- 18. VBAのロックとロック解除
- 19. testnetでパリティとWeb3のアカウントをロック解除できません
- 20. この読み取りロックを取り除くことはできますか?
- 21. Cで静的変数と自動変数を解放()できますか?
- 22. IISでルートをロックすることはできますか?
- 23. google apiでファイルをロックすることはできますか?
- 24. innerHTMLを動的にすることはできますか?
- 25. Pythonでは、例外が発生したときに自動的にロックが解除されますか?例えば
- 26. JenkinsからTestLinkでジョブを何とか自動的に作成することはできますか?
- 27. Googleホームを使用して自分のコンテンツを自動的にChromecastにすることはできますか
- 28. 目的C NSLock:異なるスレッドでNSLockをロックおよびロック解除する
- 29. クロムスニペットを自動実行することはできますか?
- 30. ロック解除コードを使用してアンドロイドアプリケーションをロック解除する
これが私がstackoverflowが好きな理由です – Andy