Open maria-farooq opened 7 years ago
Hi @maria-farooq !
Evaluating this issue i reached org.mobicents.media.server.mgcp.tx.cmd.DeleteConnectionCmd.Delete.perform()
and remembered that some time ago we discussed something around this same area. At that time, IIRC, we investigated the callID
object, that is provided as a parameter for the execution of the delete command. The method perform()
then extracts the value from callID
object through a conversion from hexadecimal to integer, as you can see here: https://github.com/RestComm/mediaserver/blob/master/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/tx/cmd/DeleteConnectionCmd.java#L166 and once the call is found using the resultant integer, the execution of the command proceeds deleting the connection.
So, i was wondering if you managed to conclude the investigation at that time, because AFAIR the delete connection command was interrupted since no call was found for that particular callID
. I ask this because is possible that, if RC sends the delete command using an invalid callID
- or maybe a callID
in a non-hexadecimal format, RMS won't be able to perform such action at the time, only 4 hours later, which is the hard coded timeout for call durations (see https://github.com/RestComm/mediaserver/blob/master/spi/src/main/java/org/mobicents/media/server/spi/ConnectionState.java#L38 and https://github.com/RestComm/mediaserver/issues/114).
I'm thinking out loud here. This may be a hypothesis that fits with your details. So, let me know your impressions about that. :) Thanks!
Hi @ghjansen ,
taking forward your hypothesis, in case callID
is invalid, call will be null and in that case we should be getting MgcpCommandException
in RMS.
https://github.com/RestComm/mediaserver/blob/master/controls/mgcp/src/main/java/org/mobicents/media/server/mgcp/tx/cmd/DeleteConnectionCmd.java#L168
But we see no such exception.
Hi @maria-farooq
This happens when, for some reason, a connection is created but never deleted on Media Server. After 4h the Media Server will kill the connection.
To do so, Media Server is sending a DLCX to itself (which makes no sense, but ignore that for now). Upon receiving this DLCX from itself, RMS deleted the connection and sends a 200 OK to call agent (RestComm). Since it was not RestComm who sent the DLCX request, then it's normal that it has no registry of the MGCP transaction. This results in the error trace you see in the logs.
Let me be clear in one thing: this should not have any bad effect in RestComm. If MGCP client does not find the transaction, then it executes no action besides raising a warning.
And yes, RMS behaviour is wrong. It makes little sense for MGCP to send a request to itself. The correct way to deal with this specific use case would be something like:
Since this issue has no impact on RestComm besides polluting the logs, I would like to ask you to live with this for a little longer until the new MGCP stack comes out.
@hrosa @ghjansen ,
JainMgcpStackProviderImpl
Please Letme know what more we want on this issue to eliminate this error from appearing
Error in RC - JainMgcpStackProviderImpl
At the same time against same tx=398 we can see following happening in RMS logs
RMS logs of same TX