Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 64 by [email protected]: IllegalStateException thrown when there are retransmissions in cluster mode
http://code.google.com/p/jdiameter/issues/detail?id=64

When load testing jDiameter we hit the following scenario:

When a Diameter client sends a Gx CCR-T to a Diameter server under load, the processing can take so long that the Diameter client times out and retransmits the CCR-T.

The Gx CCR-T's are eventually processed and while processing any subsequent CCR-T ServerGxSessionImpl:handleEvent final ServerGxSessionState state = this.sessionData.getServerGxSessionState();
throws an IllegalStateException.
This is caught but the message is still passed to any listening SBBs where processing eventually should fail and an error code returned.

As each retransmit is fully processed the load and hence processing delay grows, resulting in more retransmits and hence more delay.....

To avoid this cycle - a simple fix is when an illegalStateException is thrown we know the message doesn't need to be passed to listening SBBs for further processing (incurring further delay and causing more load). Instead we immediately respond to the message with ResultCode.UNKNOWN_SESSION_ID.

This will prevent further retransmits from exacerbating the problem.

Attached are patches for Cxdx, Gx, Gy, S6a. I guess this patch should be applied to RAs if accepted.

Attachments:
        jdiameter_illegalstateexception_patch  9.8 KB

--
You received this message because this project is configured to send all issue notifications to this address.
You may adjust your notification preferences at:
https://code.google.com/hosting/settings

--

--- You received this message because you are subscribed to the Google Groups "mobicents-all-issues-changes" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to