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.

Reply via email to