SS7 error

280 views
Skip to first unread message

Gayan Chathuranga

unread,
Mar 3, 2014, 1:43:43 AM3/3/14
to mobicent...@googlegroups.com
Dear All,
I have an ss7 application which convert SMPP messages to USSD network initiated messages.
this is working fine, but sometimes, it start giving below error and then it says no more tcap dialogs available and then i have to restart the application.
Please elp me to find the reason. 


2014-02-25 00:00:00,326 ERROR [javax.slee.RAEntityNotification[entity=MAPRA].MAPResourceAdaptor] (pool-22-thread-4) Error while firing event
javax.slee.resource.UnrecognizedActivityHandleException: Unable to fire EventTypeID[name=ss7.map.DIALOG_TIMEOUT,vendor=org.mobicents,version=1.0] on activity
 handle MAPDialogActivityHandle(id=10197) , the handle is not mapped to an activity context
        at org.mobicents.slee.resource.SleeEndpointImpl._fireEvent(SleeEndpointImpl.java:740)
        at org.mobicents.slee.resource.SleeEndpointFireEventNotTransactedExecutor.execute(SleeEndpointFireEventNotTransactedExecutor.java:79)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:556)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:511)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.fireEvent(MAPResourceAdaptor.java:562)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.onDialogTimeout(MAPResourceAdaptor.java:802)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.deliverDialogTimeout(MAPProviderImpl.java:1762)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.onDialogTimeout(MAPProviderImpl.java:1152)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.timeout(TCAPProviderImpl.java:463)
        at org.mobicents.protocols.ss7.tcap.DialogImpl$IdleTimerTask.run(DialogImpl.java:2045)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        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:744)



org.mobicents.protocols.ss7.map.api.MAPException: Current dialog count exceeds its maximum value
        at org.mobicents.protocols.ss7.map.MAPServiceBaseImpl.createNewTCAPDialog(MAPServiceBaseImpl.java:86)
        at org.mobicents.protocols.ss7.map.service.supplementary.MAPServiceSupplementaryImpl.createNewDialog(MAPServiceSupplementaryImpl.java:87)
        at org.mobicents.slee.resource.map.service.supplementary.wrappers.MAPServiceSupplementaryWrapper.createNewDialog(MAPServiceSupplementaryWrapper.java:123)
        at org.mobicents.slee.resource.map.service.supplementary.wrappers.MAPServiceSupplementaryWrapper.createNewDialog(MAPServiceSupplementaryWrapper.java:152)
        at lk.dialog.adcheck.ussNiSbb.ussNI(ussNiSbb.java:89)
        at sun.reflect.GeneratedMethodAccessor387.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.mobicents.slee.container.deployment.interceptors.SbbLocalObjectInterceptor.invokeAndReturnObject(SbbLocalObjectInterceptor.java:95)
        at org.mobicents.slee.container.deployment.interceptors.SbbLocalObjectInterceptor.invokeAndReturnvoid(SbbLocalObjectInterceptor.java:154)
        at lk.dialog.adcheck.ussNiSbbLocalObjectImpl.ussNI(ussNiSbbLocalObjectImpl.java)
        at lk.dialog.adcheck.adCheckSbb.processSms(adCheckSbb.java:167)
        at lk.dialog.adcheck.adCheckSbb.onResponseEvent(adCheckSbb.java:131)
        at sun.reflect.GeneratedMethodAccessor285.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.mobicents.slee.runtime.sbbentity.SbbEntityImpl.invokeEventHandler(SbbEntityImpl.java:481)
        at org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl.routeQueuedEvent(EventRoutingTaskImpl.java:379)
        at org.mobicents.slee.runtime.eventrouter.routingtask.EventRoutingTaskImpl.run(EventRoutingTaskImpl.java:126)
        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:744)
Caused by: org.mobicents.protocols.ss7.tcap.api.TCAPException: Current dialog count exceeds its maximum value
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.getAvailableTxId(TCAPProviderImpl.java:168)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl._getDialog(TCAPProviderImpl.java:268)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.getNewDialog(TCAPProviderImpl.java:252)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.getNewDialog(TCAPProviderImpl.java:233)
        at org.mobicents.protocols.ss7.map.MAPServiceBaseImpl.createNewTCAPDialog(MAPServiceBaseImpl.java:84)
        ... 21 more

Amit Bhayani

unread,
Mar 4, 2014, 8:01:20 AM3/4/14
to mobicents-public
Hi Gayan,

Looks like your app is creating more Dialogs then it can process. How many TCAP Dialogs you are creating per second?

Amit 


--
You received this message because you are subscribed to the Google Groups "mobicents-public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mobicents-publ...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Gayan Chathuranga

unread,
Mar 4, 2014, 11:59:12 PM3/4/14
to mobicent...@googlegroups.com
Hi,
There is not much TCAP Dialogs per second. 
I think it's an issue with timing out Dialogs as it fires the first error mentioned above.
And then it keeps accumulating and then Dialog's getting exceed.

I have added "keepalive()" so that timeout event will clean clearly the Dialogs.
will monitor for sometime. 

Thanks.

Sergey Vetyutnev

unread,
Mar 10, 2014, 12:31:40 PM3/10/14
to mobicent...@googlegroups.com
Hello!

>Current dialog count exceeds its maximum value
This means that the dialog quantity has exceded some limit. If you have not specially radically reduced this limit or you are not processing very many dialogs per a second then means Dialogs are not terminated properly. But please make a calculation of it. The limit is configurable and USSD has a rather big dialog timeout value.

Dialog terminating works good at my side. May be you have updated Stack or RA code ? Which version do you have ?
I do not understand also you sentence: "I have added "keepalive()" so that timeout event will clean clearly the Dialogs."

>> handle MAPDialogActivityHandle(id=10197) , the handle is not mapped to an activity context
This probably means that TCAPStack dialog is still present but no RA activity is present. I can not give reasonable explanation for it. And may be this blocks TCAP stack from Dialog releasing. Have you solved this problem ?

Gayan Chathuranga

unread,
Mar 13, 2014, 3:26:50 AM3/13/14
to mobicent...@googlegroups.com
hi,

>>This probably means that TCAPStack dialog is still present but no RA activity is present. I can not give reasonable explanation for it. And may be this blocks TCAP stack from Dialog releasing. Have you solved this problem ?

As per the sequence of happening, "the handle is not mapped to an activity context" comes first before dialog exceeds warning. therefore, i believe what you have suggested for this is correct. That is Dialog counts exceed due to this error. 

Regarding the keep alive, it is done as below. The reason for this is, i have assumed, that will keep the RA attached, till a valid release appearing.


"           // mapDialog.addProcessUnstructuredSSRequest(ussdDataCodingScheme, ussdString, null, msisdn);
            mapDialog.addUnstructuredSSNotifyRequest(dsc, ussdString, null, msisdn);

ActivityContextInterface sriDialogACI = this.mapAcif.getActivityContextInterface(mapDialog);
sriDialogACI.attach(this.sbbContext.getSbbLocalObject());

            // This will initiate the TC-BEGIN with INVOKE component
    mapDialog.keepAlive();
            mapDialog.send();"


Currently system is under monitoring. Last time this happened, after about two months of operation. so i have to wait some more time to let it happen. 

Thanks,

Sergey Vetyutnev

unread,
Mar 17, 2014, 5:36:18 AM3/17/14
to mobicent...@googlegroups.com
Hello!

> As per the sequence of happening, "the handle is not mapped to an activity context" comes first before dialog exceeds warning
> therefore, i believe what you have suggested for this is correct. That is Dialog counts exceed due to this error.
I do not understand the reason of such behavior.
This is bad behavoir. Can you make some tests of when this message comes ?

mapDialog.keepAlive();
Calling of this method should make any affect if it is invoked from onDialogTimeout(d); method.
So in your case this must not make any effect. Can you please check if there is some difference between present / absent of this method ?

Gayan Chathuranga

unread,
Mar 18, 2014, 11:37:43 AM3/18/14
to mobicent...@googlegroups.com
Hi,



On Mon, Mar 17, 2014 at 3:06 PM, Sergey Vetyutnev <serg.ve...@gmail.com> wrote:
Hello!

> As per the sequence of happening, "the handle is not mapped to an activity context" comes first before dialog exceeds warning
> therefore, i believe what you have suggested for this is correct. That is Dialog counts exceed due to this error.
I do not understand the reason of such behavior.
This is bad behavoir. Can you make some tests of when this message comes ?

Sure, let me know what are the tests. 

mapDialog.keepAlive();
Calling of this method should make any affect if it is invoked from onDialogTimeout(d); method.
So in your case this must not make any effect. Can you please check if there is some difference between present / absent of this method ?

Till now there are no different observations made. I have a backup "server.log" i can share if it helps.  

--
You received this message because you are subscribed to a topic in the Google Groups "mobicents-public" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/mobicents-public/jr4cO2NP6Gg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to mobicents-publ...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Gayan Chathuranga

unread,
Apr 15, 2015, 5:37:15 AM4/15/15
to mobicent...@googlegroups.com
Hi All,
still have this issue. It seems, MAP dialog timeout is not working properly. 
for example referring to the below log, MAPDialogActivityHandle id =5805 is trying to fire timeout event in one minute interval.

   
2015-04-15 14:00:28,847 ERROR [javax.slee.RAEntityNotification[entity=MAPRA].MAPResourceAdaptor] (pool-25-thread-1) Error while firing event
javax.slee.resource.UnrecognizedActivityHandleException: Unable to fire EventTypeID[name=ss7.map.DIALOG_TIMEOUT,vendor=org.mobicents,version=1.0] on activity handle MAPDialogActivityHandle(id=5805) , the handle is not mapped to an activity context
        at org.mobicents.slee.resource.SleeEndpointImpl._fireEvent(SleeEndpointImpl.java:740)
        at org.mobicents.slee.resource.SleeEndpointFireEventNotTransactedExecutor.execute(SleeEndpointFireEventNotTransactedExecutor.java:79)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:556)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:511)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.fireEvent(MAPResourceAdaptor.java:562)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.onDialogTimeout(MAPResourceAdaptor.java:802)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.deliverDialogTimeout(MAPProviderImpl.java:1762)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.onDialogTimeout(MAPProviderImpl.java:1152)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.timeout(TCAPProviderImpl.java:463)
        at org.mobicents.protocols.ss7.tcap.DialogImpl$IdleTimerTask.run(DialogImpl.java:2045)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        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:744)

2015-04-15 14:01:28,847 ERROR [javax.slee.RAEntityNotification[entity=MAPRA].MAPResourceAdaptor] (pool-25-thread-1) Error while firing event
javax.slee.resource.UnrecognizedActivityHandleException: Unable to fire EventTypeID[name=ss7.map.DIALOG_TIMEOUT,vendor=org.mobicents,version=1.0] on activity handle MAPDialogActivityHandle(id=5805) , the handle is not mapped to an activity context
        at org.mobicents.slee.resource.SleeEndpointImpl._fireEvent(SleeEndpointImpl.java:740)
        at org.mobicents.slee.resource.SleeEndpointFireEventNotTransactedExecutor.execute(SleeEndpointFireEventNotTransactedExecutor.java:79)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:556)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:511)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.fireEvent(MAPResourceAdaptor.java:562)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.onDialogTimeout(MAPResourceAdaptor.java:802)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.deliverDialogTimeout(MAPProviderImpl.java:1762)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.onDialogTimeout(MAPProviderImpl.java:1152)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.timeout(TCAPProviderImpl.java:463)
        at org.mobicents.protocols.ss7.tcap.DialogImpl$IdleTimerTask.run(DialogImpl.java:2045)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        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:744)

Hi,



To unsubscribe from this group and all its topics, send an email to mobicents-public+unsubscribe@googlegroups.com.

Gayan Chathuranga

unread,
Apr 15, 2015, 6:46:14 AM4/15/15
to mobicent...@googlegroups.com
Another clarification. Following is the code extract from MAP RA. If i understnad this correctly, when time out happens, RA will use below fireEvent and if there is an exception, function returns true and dialog is not released. Then what is the action tobe taken to release this dialog?

boolean fired = fireEvent(dt.getEventTypeName(), mapDialogWrapper.getActivityHandle(), dt,
(EventFlags.REQUEST_PROCESSING_SUCCESSFUL_CALLBACK | EventFlags.REQUEST_PROCESSING_FAILED_CALLBACK));

if (!fired) {
// If event filtered out, lets release Dialog
mapDialogWrapper.release();
}
}





private boolean fireEvent(String eventName, ActivityHandle handle, Object event, int flags) {

FireableEventType eventID = eventIdCache.getEventId(this.resourceAdaptorContext.getEventLookupFacility(),
eventName);

if (eventIDFilter.filterEvent(eventID)) {
if (tracer.isFineEnabled()) {
tracer.fine("Event " + (eventID == null ? "null" : eventID.getEventType()) + " filtered");
}
return false;
} else {

try {
sleeEndpoint.fireEvent(handle, eventID, event, address, null, flags);
} catch (UnrecognizedActivityHandleException e) {
this.tracer.severe("Error while firing event", e);
} catch (IllegalEventException e) {
this.tracer.severe("Error while firing event", e);
} catch (ActivityIsEndingException e) {
this.tracer.severe("Error while firing event", e);
} catch (NullPointerException e) {
this.tracer.severe("Error while firing event", e);
} catch (SLEEException e) {
this.tracer.severe("Error while firing event", e);
} catch (FireEventException e) {
this.tracer.severe("Error while firing event", e);
}
return true;
}
}

Sergey Vetyutnev

unread,
Apr 23, 2015, 2:14:17 PM4/23/15
to mobicent...@googlegroups.com
Hello,

Dialog will be released even if any error occurs when DialogTimeout event. This is as far as I understand. I have a suspicion that a Dialog is already released before DialogTimeout event has reached MAP RA (not sure here).
Can you please provide which code version do you use fir JSS7 stack and MAP RA ?

Gayan Chathuranga

unread,
Apr 23, 2015, 10:57:56 PM4/23/15
to mobicent...@googlegroups.com
Hi,
ss7 version : ss7-2.1.0-SNAPSHOT.
Map RA: 2.8.0-SNAPSHOT

i understand that Dialog could be already released. then what is the next action? the below error comes in each minute until i restart the JSLEE for MAPDialogActivityHandle(id=5805)

2015-04-15 14:00:28,847 ERROR [javax.slee.RAEntityNotification[entity=MAPRA].MAPResourceAdaptor] (pool-25-thread-1) Error while firing event
javax.slee.resource.UnrecognizedActivityHandleException: Unable to fire EventTypeID[name=ss7.map.DIALOG_TIMEOUT,vendor=org.mobicents,version=1.0] on activity handle MAPDialogActivityHandle(id=5805) , the handle is not mapped to an activity context
        at org.mobicents.slee.resource.SleeEndpointImpl._fireEvent(SleeEndpointImpl.java:740)
        at org.mobicents.slee.resource.SleeEndpointFireEventNotTransactedExecutor.execute(SleeEndpointFireEventNotTransactedExecutor.java:79)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:556)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:511)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.fireEvent(MAPResourceAdaptor.java:562)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.onDialogTimeout(MAPResourceAdaptor.java:802)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.deliverDialogTimeout(MAPProviderImpl.java:1762)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.onDialogTimeout(MAPProviderImpl.java:1152)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.timeout(TCAPProviderImpl.java:463)
        at org.mobicents.protocols.ss7.tcap.DialogImpl$IdleTimerTask.run(DialogImpl.java:2045)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        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:744)


For me its like, dialgue could be already closed, but JSLEE has this event store waiting for the next event from the network and then timeout happen and cant fire the event and then keep trying in each minute.


As i look the MAP RA code it use the below function to fire the event,

private boolean fireEvent(String eventName, ActivityHandle handle, Object event, int flags) {

FireableEventType eventID = eventIdCache.getEventId(this.resourceAdaptorContext.getEventLookupFacility(),
eventName);

if (eventIDFilter.filterEvent(eventID)) {
if (tracer.isFineEnabled()) {
tracer.fine("Event " + (eventID == null ? "null" : eventID.getEventType()) + " filtered");
}
return false;
} else {

try {
sleeEndpoint.fireEvent(handle, eventID, event, address, null, flags);
} catch (UnrecognizedActivityHandleException e) {
this.tracer.severe("Error while firing event", e);
} catch (IllegalEventException e) {
this.tracer.severe("Error while firing event", e);
} catch (ActivityIsEndingException e) {
this.tracer.severe("Error while firing event", e);
} catch (NullPointerException e) {
this.tracer.severe("Error while firing event", e);
} catch (SLEEException e) {
this.tracer.severe("Error while firing event", e);
} catch (FireEventException e) {
this.tracer.severe("Error while firing event", e);
}
return true;
}
}


as per above code if an error happens, itreturns TRUE, which i understand is wrong. it should return FALSE.


because the code piece that used above function does nothing if it returns TRUE

--
You received this message because you are subscribed to a topic in the Google Groups "mobicents-public" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/mobicents-public/jr4cO2NP6Gg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to mobicents-publ...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Gayan Chathuranga

unread,
Apr 23, 2015, 11:00:00 PM4/23/15
to mobicent...@googlegroups.com
Hi,
ss7 version : ss7-2.1.0-SNAPSHOT.
Map RA: 2.8.0-SNAPSHOT

i understand that Dialog could be already released. then what is the next action? the below error comes in each minute until i restart the JSLEE for MAPDialogActivityHandle(id=5805)

2015-04-15 14:00:28,847 ERROR [javax.slee.RAEntityNotification[entity=MAPRA].MAPResourceAdaptor] (pool-25-thread-1) Error while firing event
javax.slee.resource.UnrecognizedActivityHandleException: Unable to fire EventTypeID[name=ss7.map.DIALOG_TIMEOUT,vendor=org.mobicents,version=1.0] on activity handle MAPDialogActivityHandle(id=5805) , the handle is not mapped to an activity context
        at org.mobicents.slee.resource.SleeEndpointImpl._fireEvent(SleeEndpointImpl.java:740)
        at org.mobicents.slee.resource.SleeEndpointFireEventNotTransactedExecutor.execute(SleeEndpointFireEventNotTransactedExecutor.java:79)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:556)
        at org.mobicents.slee.resource.SleeEndpointImpl.fireEvent(SleeEndpointImpl.java:511)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.fireEvent(MAPResourceAdaptor.java:562)
        at org.mobicents.slee.resource.map.MAPResourceAdaptor.onDialogTimeout(MAPResourceAdaptor.java:802)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.deliverDialogTimeout(MAPProviderImpl.java:1762)
        at org.mobicents.protocols.ss7.map.MAPProviderImpl.onDialogTimeout(MAPProviderImpl.java:1152)
        at org.mobicents.protocols.ss7.tcap.TCAPProviderImpl.timeout(TCAPProviderImpl.java:463)
        at org.mobicents.protocols.ss7.tcap.DialogImpl$IdleTimerTask.run(DialogImpl.java:2045)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        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:744)


For me its like, dialgue could be already closed, but JSLEE has this event store waiting for the next event from the network and then timeout happen and cant fire the event and then keep trying in each minute.


As i look the MAP RA code it use the below function to fire the event,
private boolean fireEvent(String eventName, ActivityHandle handle, Object event, int flags) {

FireableEventType eventID = eventIdCache.getEventId(this.resourceAdaptorContext.getEventLookupFacility(),
eventName);

if (eventIDFilter.filterEvent(eventID)) {
if (tracer.isFineEnabled()) {
tracer.fine("Event " + (eventID == null ? "null" : eventID.getEventType()) + " filtered");
}
return false;
} else {

try {
sleeEndpoint.fireEvent(handle, eventID, event, address, null, flags);
} catch (UnrecognizedActivityHandleException e) {
this.tracer.severe("Error while firing event", e);
} catch (IllegalEventException e) {
this.tracer.severe("Error while firing event", e);
} catch (ActivityIsEndingException e) {
this.tracer.severe("Error while firing event", e);
} catch (NullPointerException e) {
this.tracer.severe("Error while firing event", e);
} catch (SLEEException e) {
this.tracer.severe("Error while firing event", e);
} catch (FireEventException e) {
this.tracer.severe("Error while firing event", e);
}
return true;
}
}


as per above code if an error happens, itreturns TRUE, which i understand is wrong. it should return FALSE.


because the code piece that used above function does nothing if it returns TRUE

Sergey Vetyutnev

unread,
May 1, 2015, 1:18:21 PM5/1/15
to mobicent...@googlegroups.com
Hello,

I think the best is the following code:
} else {

try {
sleeEndpoint.fireEvent(handle, eventID, event, address, null, flags);
return true;
} catch (UnrecognizedActivityHandleException e) {
this.tracer.severe("Error while firing event", e);
} catch (IllegalEventException e) {
this.tracer.severe("Error while firing event", e);
} catch (ActivityIsEndingException e) {
this.tracer.severe("Error while firing event", e);
} catch (NullPointerException e) {
this.tracer.severe("Error while firing event", e);
} catch (SLEEException e) {
this.tracer.severe("Error while firing event", e);
} catch (FireEventException e) {
this.tracer.severe("Error while firing event", e);
}
return false;
}
Reply all
Reply to author
Forward
0 new messages