1

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% 再現可能であると述べたので、ログなどを取得することはすべて可能です。

4

1 に答える 1

0

どのようにアクセスし、メッセージの送信をスケジュールするかについて、ログやアプリケーション コードを見ずに判断するのは困難です。ただし、同じ SipApplicationSession を非同期で使用する場合は、ベンダー固有の非同期 API https://mobicents.ci.cloudbees.com/job/MobicentsSipServlets-Release/lastSuccessfulBuild/artifact/documentation/jsr289-extensions-apidocsを使用することをお勧めします。 /org/mobicents/javax/servlet/sip/SipSessionsUtilExt.html#scheduleAsynchronousWork(java.lang.String,%20org.mobicents.javax.servlet.sip.SipApplicationSessionAsynchronousWork) SipapplicationSessionへのアクセスがシリアル化され、同時性の問題。

于 2015-12-23T13:03:46.097 に答える