One thing I have noted is that unless Diameter activities are ended by their state machine (e.g. a CCR-T message is received) the activities never expire and there is no way for the SBB to remove them.
In the event of (non-Mobicents!) Diameter clients malfunctioning or rebooting this can cause a memory leak.
e.g.
Diameter Gx Client sends CCR-INIT for a certain IP address with session ID ABC
Diameter Gx Client malfunctions and sends CCR-INIT for the same IP address with session ID DEF
Gx Client never every terminate session ID ABC and it stays forever and is never free-ed.
The SBB application actually knows that session ID ABC needs to be removed when it receives a CCR-INIT for the same IP.
If you edit the Diameter GX RA by adding to GxServerSessionActivityImpl.java:
public void delayedEndActivity() {
this.setTerminateAfterProcessing(true);
super.baseListener.startActivityRemoveTimer(getActivityHandle());
}
And to GxServerSessionActivity.java
void delayedEndActivity();
The SBB can explicitly end an activity if it needs to by calling delayedEndActivity on the activity.
This could be applied to all session based Diameter RAs
@richardgood commented on Thu Apr 07 2016
One thing I have noted is that unless Diameter activities are ended by their state machine (e.g. a CCR-T message is received) the activities never expire and there is no way for the SBB to remove them.
In the event of (non-Mobicents!) Diameter clients malfunctioning or rebooting this can cause a memory leak.
e.g. Diameter Gx Client sends CCR-INIT for a certain IP address with session ID ABC Diameter Gx Client malfunctions and sends CCR-INIT for the same IP address with session ID DEF Gx Client never every terminate session ID ABC and it stays forever and is never free-ed.
The SBB application actually knows that session ID ABC needs to be removed when it receives a CCR-INIT for the same IP.
If you edit the Diameter GX RA by adding to GxServerSessionActivityImpl.java:
public void delayedEndActivity() { this.setTerminateAfterProcessing(true); super.baseListener.startActivityRemoveTimer(getActivityHandle());
}
And to GxServerSessionActivity.java
void delayedEndActivity();
The SBB can explicitly end an activity if it needs to by calling delayedEndActivity on the activity.
This could be applied to all session based Diameter RAs
@chathsuom commented on Fri Apr 08 2016
I guess this issue should be list under the RA's ? https://github.com/RestComm/jain-slee.diameter
On Thu, Apr 7, 2016 at 7:01 PM, Jean Deruelle notifications@github.com wrote:
@deruelle commented on Tue Apr 12 2016
@chathsuom yes, indeed. Can you create an issue there linking to this one and fixing/udpating the RAs and do a pull request ?
@brainslog please review
@deruelle commented on Fri May 20 2016
@chathsuom any news here ?
@xphudin commented on Sun Nov 06 2016
@deruelle Can I continue and PR ?
@deruelle commented on Mon Nov 07 2016
@xphudin yes please.