Problem
we recently found that RC was pilling up Call and MMSCallController actors in memory. we could see that Call was in stopping state and MMSCallController was in inactive state.
Root Cause
- Calls were related to
Recording here is what happens to them:
- RC received
BYE.
Call goes to Stopping state.
Call send msg to MMSCallController to clean MediaServer resources.
MMSCallController clean MS resources and give back proper response (INACTIVE).
Call moved to Completed state & DB was updated properly.
- At
VoiceInterpreter, RCML kicks in and sends Hangup to the call (please mind call was already completed)
- upon receiving
Hangup, Call moves from Completed to Stopping state AGAIN
- and send msg to
MMSCallController to clean MediaServer resources AGAIN. (please mind MMSCallControllerwas already INACTIVE)
MMSCallController has not defined action for this situation hence does nothing
Call keeps waiting for response from MMSCallController hence actor stays in memory forever.
Comments & Questions
- If a
Call is already Completed and we get a Hangup, should not we ignore it..
- should a transition from
Completed to Stopping state be allowed? wHy?
Reference:
Problem
we recently found that RC was pilling up
CallandMMSCallControlleractors in memory. we could see thatCallwas instoppingstate andMMSCallControllerwas ininactivestate.Root Cause
Recordinghere is what happens to them:BYE.Callgoes toStoppingstate.Callsend msg toMMSCallControllerto clean MediaServer resources.MMSCallControllerclean MS resources and give back proper response (INACTIVE).Callmoved toCompletedstate & DB was updated properly.VoiceInterpreter, RCML kicks in and sendsHangupto the call (please mind call was already completed)Hangup,Callmoves fromCompletedtoStoppingstate AGAINMMSCallControllerto clean MediaServer resources AGAIN. (please mindMMSCallControllerwas alreadyINACTIVE)MMSCallControllerhas not defined action for this situation hence does nothingCallkeeps waiting for response fromMMSCallControllerhence actor stays in memory forever.Comments & Questions
Callis alreadyCompletedand we get aHangup, should not we ignore it..CompletedtoStoppingstate be allowed? wHy?Reference: