Status: New
Owner: ----
Labels: Type-Defect Priority-Medium
New issue 68 by [email protected]: RouterImpl very bad reacting on burst
load
https://code.google.com/p/jdiameter/issues/detail?id=68
Problem:
If load increases very fast, but not on long time, then I expect that all
requests will be correct handled and all answers will sent. Just some
answers will be precessing longer than usually.
But actually in this case:
1. Size of requestEntryMap very fast becomes greater than
REQUEST_TABLE_CLEAR_SIZE and REQUEST_TABLE_SIZE.
2. First thread goes to sleep on 5 second.
3. All following requests fail with timeout (because threads wait on
requestEntryTableLock). But I actually expect that server will sent
response with error result code (for example, 3004 DIAMETER_TOO_BUSY).
4. The worst moment, thread from point 2 wake up and call
requestEntryMap.clear(). And all answers for all last requests cannot will
be sent.
After that, all requests fail with timeout and I lost very big part of
traffic.
Probably solution:
In my fork of JDiameter, I just:
1. Full remove requestEntryMap variable (method registerRequestRouteInfo
now empty).
2. In method getRequestRouteInfo I return DESTINATION_HOST and
DESTINATION_REALM Avp value.
3. While create Answer, set this Avp from ORIGIN_* in Request.
I know that this Avp marked as MUST NOT in specification, but Diameter
client, which works with my server, ignoring this error.
Maybe, may apply my solution with small fix: remove DESTINATION_HOST and
DESTINATION_REALM Avp from answer before send but after getting RouteInfo.
Another solution is save route info data not in requestEntryMap but attach
some object for Message.
--
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.