Mobicents SIP サーブレットに対して作成されたアプリケーションがあり、現在これは v2.1.547 を使用していますが、v3.1.633 に対しても同じ動作を確認しました。
私たちのアプリケーションは B2BUA として動作しており、着信 SIP コールがあり、VXML を実行している MRF に発信 SIP コールが発信されています。これら 2 つの SIP 呼び出しは、構成した同時実行モデルである単一の SipApplicationSession に関連付けられています。
この 100% の確率で再現されるシナリオは次のとおりです。
- 私たちのアプリケーションにかけられたインバウンド コール (コールは応答されません)
- MRF へのアウトバウンド コール
- 着信通話のハングアップ
- アプリケーションは、発信コールに関連付けられた SipSession を終了しようとします
これがログに記録されているのを見ています:
2015-12-17 09:53:56,771 WARN [SipApplicationSessionImpl] (MSS-Executor-Thread-14) セッション セマフォ java.util.concurrent.Semaphore@55fcc0cb[Permits = 0] を 30 秒間取得できませんでした。トランザクションがタイムアウトに近づいているため、何があってもセマフォのロックを解除します。これは同時実行制御のリスクである可能性もあります。アプリ セッションは 5faf5a3a-6a83-4f23-a30a-57d3eff3281c;SipController
私たちのアプリケーションがこの動作をトリガーしている可能性があると信じていますが、現時点ではその方法がわかりません。セマフォの取得/解放はすべて実装の内部にあると思っていたので、何かがセマフォを取得せず、決して解放しないようにする必要がありますか?
100% 再現可能であると述べたので、ログなどを取得することはすべて可能です。