[sr-dev] TM changes to support extended async usage

Daniel-Constantin Mierla miconda at gmail.com
Wed Aug 21 00:50:05 CEST 2013


Hi Jason,

if I understand correctly, now the suspend doesn't create a blind uac 
anymore, am I right? It is a normal branch that can be forwarded and can 
get replies (previously was marked with a fake 500 reply code). Was it a 
specific reason for it?

Otherwise the patch looks ok, it can be pushed to master so people can 
get enough time to play with it.

Cheers,
Daniel

On 8/8/13 8:49 AM, Jason Penton wrote:
> Hey Daniel,
>
> No problem. Please see attached.
>
> Cheers
> Jason
>
>
>
> On Mon, Aug 5, 2013 at 11:07 PM, Daniel-Constantin Mierla 
> <miconda at gmail.com <mailto:miconda at gmail.com>> wrote:
>
>     Hi Jason,
>
>     would you make a single patch for tm module out of your branch and
>     send it over to the list for review? It would be easier to spot
>     the changes...
>
>     Thanks,
>     Daniel
>
>
>     On 8/5/13 11:45 AM, Jason Penton wrote:
>>     Hi guys..... more specifically, TM experts ;)
>>
>>     I have just committed a tmp branch called tm_async_extensions. We
>>     noticed with the current async impl, it is not possible to do
>>     things like forward() and t_relay() in a continued async route
>>     block. This is mainly because the faked env. created is
>>     specifically triggered to be a failure route in the continuation
>>     code.
>>
>>     We have changed this to execute the route block using the
>>     original block type when the transaction was suspended (eg
>>     REQUEST_ROUTE, ON_REPLY, etc). We have also tested using reply
>>     blocks (ie suspending replies) but that code will come later once
>>     everyone is happy that we include the current subset of changes
>>     to improve normal async REQUEST processing.
>>
>>     The current changes require some changes to the main TM structure
>>     (mainly for 'backing up' state before suspending). There is also
>>     a new mutex used to prevent multiple concurrent invocations of
>>     t_continue (previously we were using the reply lock).
>>
>>     It would be great if some TM experts could review the code to
>>     ensure there are no use cases that we have missed that could
>>     break things. Daniel I suspect you know TM and its impacts the
>>     best, or is there someone else we should include?
>>
>>     So far for our use cases, these changes work great. We can do
>>     things like:
>>
>>     route[INVITE] {
>>     t_newtran();
>>     async_route("INVITERESUME", "10"); #resume transaction in 10
>>     seconds running route block INVITERESUME
>>     exit;
>>     }
>>
>>     route[INVITERESUME] {
>>     t_relay();
>>     }
>>
>>     All upstream reply processing is correctly handled, local ACK
>>     generation and processing works as expected, etc.
>>
>>     The above example may seem absurd (why would we want to delay our
>>     proxy of an INVITE for 10 seconds????) - Well this is just an
>>     easy example we use in our test cases. Actually we are using the
>>     async processing in the IMS code to increase performance when an
>>     INVITE for example triggers a long running process (like a
>>     DIAMETER request to get a users profile for example). Using
>>     conventional methods (no async transactions), the SIP worker
>>     process will sit locked up for this time (maybe 100's of
>>     milliseconds) unnecessarily. We found that using t_suspend and
>>     t_continue internally in our code improves performance
>>     significantly. I can see many use cases for the async code to
>>     improve performance, especially cases where we use backend DB's,
>>     memcached, radius, diameter, etc before actually "doing SIP
>>     routing".....
>>
>>     Any feedback would be greatly appreciated.
>>
>>     Cheers
>>     Jason
>>
>>
>>
>>     _______________________________________________
>>     sr-dev mailing list
>>     sr-dev at lists.sip-router.org  <mailto:sr-dev at lists.sip-router.org>
>>     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>     -- 
>     Daniel-Constantin Mierla -http://www.asipto.com
>     http://twitter.com/#!/miconda  <http://twitter.com/#%21/miconda>  -http://www.linkedin.com/in/miconda
>
>
>     _______________________________________________
>     sr-dev mailing list
>     sr-dev at lists.sip-router.org <mailto:sr-dev at lists.sip-router.org>
>     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
>
>

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20130821/37510d8d/attachment-0001.html>


More information about the sr-dev mailing list