【发布时间】:2015-12-23 11:09:09
【问题描述】:
我们有一个针对 Mobicents SIP Servlet 编写的应用程序,目前使用的是 v2.1.547,但我也针对 v3.1.633 进行了测试,并注意到了相同的行为。
我们的应用程序作为 B2BUA 工作,我们有一个传入的 SIP 呼叫,我们还有一个出站 SIP 呼叫被放置到正在执行 VXML 的 MRF。这两个 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% 可重复的,因此获取日志等都是可能的。
【问题讨论】:
标签: mobicents mobicents-sip-servlets sip-servlet