tkojemile / smscgateway

Automatically exported from code.google.com/p/smscgateway
0 stars 0 forks source link

smscgateway fails to process smses to the same target address in parallel #38

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?

1. Send multiple sms (or chunked sms) to a user to make these chunks to be 
processed in parallel by TxSmmServerSbb.processSms(...).

What is the expected output? What do you see instead?

According to the code in TxSmmServerSbb.processSms(...) it looks like these 
sms'es has to be passed for further processing serially, by using the same 
ActivityContextInterface stored in ActivityContextNamingFacility.
However it doesn't happen or better say it doesn't happen all the time. 
Sometimes I see that 2+ threads lookup in the ActivityContextNamingFacility for 
the address, receive null and then bind new ActivityContextInterface and all of 
them succeed!!! no NameAlreadyBoundException is thrown.
When this happens I often see this exception in the log:
23:36:02,345 WARN  [ActivityContext] (pool-25-thread-1) failed to unbind name: 
<address> from ac:ACH=NULL>-4ca4a7a9:14dadd37660:-7ff4
javax.slee.facilities.NameNotBoundException: name not bound
    at org.mobicents.slee.runtime.facilities.ActivityContextNamingFacilityCacheData.unbindName(ActivityContextNamingFacilityCacheData.java:88)
    at org.mobicents.slee.runtime.facilities.ActivityContextNamingFacilityImpl.removeName(ActivityContextNamingFacilityImpl.java:154)
    at org.mobicents.slee.runtime.activity.ActivityContextImpl.removeNamingBindings(ActivityContextImpl.java:244)
    at org.mobicents.slee.runtime.activity.ActivityContextImpl.activityEnded(ActivityContextImpl.java:574)
    at org.mobicents.slee.runtime.event.ActivityEndEventUnreferencedCallback.eventUnreferenced(ActivityEndEventUnreferencedCallback.java:58)
    at org.mobicents.slee.container.event.EventContextImpl.eventUnreferenced(EventContextImpl.java:225)
    at org.mobicents.slee.container.event.EventReferencesHandlerImpl.remove(EventReferencesHandlerImpl.java:63)
    at org.mobicents.slee.container.event.EventContextImpl.routed(EventContextImpl.java:260)
    at org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl.routeQueuedEvent(EventRoutingTaskImpl.java:566)
    at org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl.run(EventRoutingTaskImpl.java:126)
    at org.mobicents.slee.runtime.eventrouter.EventRouterExecutorImpl$EventRoutingTaskStatsCollector.run(EventRouterExecutorImpl.java:73)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

Probably this exception is caused by the fact that one of the "bound" 
ActivityContextInterface unbind the name registration successfully, and the 
other ones, which supposed to fail on binding due to NameAlreadyBoundException, 
fail to unbind themselves.

What version of the product are you using? On what operating system?
1.0.0-ALPHA, Linux (Ubuntu), JDK 1.7

Please provide any additional information below.

Original issue reported on code.google.com by kvr...@gmail.com on 1 Jun 2015 at 1:31