<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Jason,<br>
    <br>
    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?<br>
    <br>
    Otherwise the patch looks ok, it can be pushed to master so people
    can get enough time to play with it.<br>
    <br>
    Cheers,<br>
    Daniel<br>
    <br>
    <div class="moz-cite-prefix">On 8/8/13 8:49 AM, Jason Penton wrote:<br>
    </div>
    <blockquote
cite="mid:CALoGXNVuLyoofvJZ62wz6UVDiVUeDbfLi8FY4=6gCeSDwQgeAw@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hey Daniel,
        <div><br>
        </div>
        <div>No problem. Please see attached.</div>
        <div><br>
        </div>
        <div style="">Cheers</div>
        <div style="">Jason</div>
        <div style=""><br>
        </div>
      </div>
      <div class="gmail_extra"><br>
        <br>
        <div class="gmail_quote">
          On Mon, Aug 5, 2013 at 11:07 PM, Daniel-Constantin Mierla <span
            dir="ltr"><<a moz-do-not-send="true"
              href="mailto:miconda@gmail.com" target="_blank">miconda@gmail.com</a>></span>
          wrote:<br>
          <blockquote class="gmail_quote" style="margin:0 0 0
            .8ex;border-left:1px #ccc solid;padding-left:1ex">
            <div text="#000000" bgcolor="#FFFFFF"> Hi Jason,<br>
              <br>
              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...<br>
              <br>
              Thanks,<br>
              Daniel
              <div>
                <div class="h5"><br>
                  <br>
                  <div>On 8/5/13 11:45 AM, Jason Penton wrote:<br>
                  </div>
                </div>
              </div>
              <blockquote type="cite">
                <div>
                  <div class="h5">
                    <div dir="ltr">Hi guys..... more specifically, TM
                      experts ;) 
                      <div><br>
                      </div>
                      <div>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.</div>
                      <div><br>
                      </div>
                      <div>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. </div>
                      <div><br>
                      </div>
                      <div>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).</div>
                      <div><br>
                      </div>
                      <div>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?</div>
                      <div><br>
                      </div>
                      <div>So far for our use cases, these changes work
                        great. We can do things like:</div>
                      <div><br>
                      </div>
                      <div>
                        <div><font face="courier new, monospace">route[INVITE]
                            {</font></div>
                        <div><font face="courier new, monospace">       
                            t_newtran();</font></div>
                        <div><font face="courier new, monospace">       
                            async_route("INVITERESUME", "10");    
                            #resume transaction in 10 seconds running
                            route block INVITERESUME</font></div>
                        <div><font face="courier new, monospace">       
                            exit;</font></div>
                        <div><font face="courier new, monospace">}</font></div>
                        <div><font face="courier new, monospace"><br>
                          </font></div>
                        <div><font face="courier new, monospace">route[INVITERESUME]
                            {</font></div>
                        <div><font face="courier new, monospace">       
                            t_relay();</font></div>
                        <div><font face="courier new, monospace">}</font></div>
                        <div><br>
                        </div>
                        <div>All upstream reply processing is correctly
                          handled, local ACK generation and processing
                          works as expected, etc. </div>
                        <div><br>
                        </div>
                        <div> 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".....</div>
                        <div><br>
                        </div>
                        <div>Any feedback would be greatly appreciated.</div>
                        <div><br>
                        </div>
                        <div>Cheers</div>
                        <div>Jason</div>
                      </div>
                      <div><br>
                      </div>
                    </div>
                    <br>
                    <fieldset></fieldset>
                    <br>
                  </div>
                </div>
                <pre>_______________________________________________
sr-dev mailing list
<a moz-do-not-send="true" href="mailto:sr-dev@lists.sip-router.org" target="_blank">sr-dev@lists.sip-router.org</a>
<a moz-do-not-send="true" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><span class="HOEnZb"><font color="#888888">
</font></span></pre>
                <span class="HOEnZb"><font color="#888888"> </font></span></blockquote>
              <span class="HOEnZb"><font color="#888888"> <br>
                  <pre cols="72">-- 
Daniel-Constantin Mierla - <a moz-do-not-send="true" href="http://www.asipto.com" target="_blank">http://www.asipto.com</a>
<a moz-do-not-send="true" href="http://twitter.com/#%21/miconda" target="_blank">http://twitter.com/#!/miconda</a> - <a moz-do-not-send="true" href="http://www.linkedin.com/in/miconda" target="_blank">http://www.linkedin.com/in/miconda</a>
</pre>
                </font></span></div>
            <br>
            _______________________________________________<br>
            sr-dev mailing list<br>
            <a moz-do-not-send="true"
              href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
            <a moz-do-not-send="true"
              href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev"
              target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
            <br>
          </blockquote>
        </div>
        <br>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a>
</pre>
  </body>
</html>