EBR and wait_for_event() timeout

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

EBR and wait_for_event() timeout

Vitalii Aleksandrov
Hi,

event_routing module provides the great async function
wait_for_event().  If script subscribes for a event and received it it
calls some "resume_route".
What I can't understand is what happens with a transaction if
wait_for_event() never catches an event and reaches its timeout.
Is the any way to continue script execution from the place where
"wait_for_event() was called or to execute some "timeout_route" to
handle transaction properly?


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: EBR and wait_for_event() timeout

Bogdan-Andrei Iancu-2
Hi Vitalii,

For the wait_for_event(), the timeout seems to have no effect, the
waiting being for ever :-| . The transaction has no timeout as you
didn;t sent out any branch yet (the transaction timeout is for waiting
on replies).

Could you please open bug report on the opensips tracker on github ?

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
   http://www.opensips-solutions.com
OpenSIPS Bootcamp 2018
   http://opensips.org/training/OpenSIPS_Bootcamp_2018/

On 11/14/2018 03:17 PM, Vitalii Aleksandrov wrote:

> Hi,
>
> event_routing module provides the great async function
> wait_for_event().  If script subscribes for a event and received it it
> calls some "resume_route".
> What I can't understand is what happens with a transaction if
> wait_for_event() never catches an event and reaches its timeout.
> Is the any way to continue script execution from the place where
> "wait_for_event() was called or to execute some "timeout_route" to
> handle transaction properly?
>
>
> _______________________________________________
> Users mailing list
> [hidden email]
> http://lists.opensips.org/cgi-bin/mailman/listinfo/users


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: EBR and wait_for_event() timeout

Vitalii Aleksandrov
Thanks for the information. Have one more  related question.

What If I call somewhere, opensips calls wait_for_event() and before the
event happens or async timeout (will create a bug report) fired I CANCEL
the call.
Since async() keeps some context in transaction structure and this
transaction is already canceled should I expect that async() task is
also canceled and will never call a callback route? Or should I always
check  t_was_cancelled() in the beginning of a callback route?


> Hi Vitalii,
>
> For the wait_for_event(), the timeout seems to have no effect, the
> waiting being for ever :-| . The transaction has no timeout as you
> didn;t sent out any branch yet (the transaction timeout is for waiting
> on replies).
>
> Could you please open bug report on the opensips tracker on github ?
>
> Regards,
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
>   http://www.opensips-solutions.com
> OpenSIPS Bootcamp 2018
>   http://opensips.org/training/OpenSIPS_Bootcamp_2018/
>
> On 11/14/2018 03:17 PM, Vitalii Aleksandrov wrote:
>> Hi,
>>
>> event_routing module provides the great async function
>> wait_for_event().  If script subscribes for a event and received it
>> it calls some "resume_route".
>> What I can't understand is what happens with a transaction if
>> wait_for_event() never catches an event and reaches its timeout.
>> Is the any way to continue script execution from the place where
>> "wait_for_event() was called or to execute some "timeout_route" to
>> handle transaction properly?
>>
>>
>> _______________________________________________
>> Users mailing list
>> [hidden email]
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: EBR and wait_for_event() timeout

Bogdan-Andrei Iancu-2
Hi Vitalii,

The waiting for the event is not strong correlated with the transaction.
The transaction may disappear while waiting. The waiting context is only
keeping a reference to the transaction, so the t_inject_branch() can
look it up (if still exists).
So, if the transaction is canceled, the event waiting is not affected,
it will still be triggered, but the t_inject will fail (either with
transaction not found, either with not able to create more branches on a
canceled transaction).

Regards,

Bogdan-Andrei Iancu

OpenSIPS Founder and Developer
   http://www.opensips-solutions.com
OpenSIPS Bootcamp 2018
   http://opensips.org/training/OpenSIPS_Bootcamp_2018/

On 11/16/2018 07:07 PM, Vitalii Aleksandrov wrote:

> Thanks for the information. Have one more  related question.
>
> What If I call somewhere, opensips calls wait_for_event() and before
> the event happens or async timeout (will create a bug report) fired I
> CANCEL the call.
> Since async() keeps some context in transaction structure and this
> transaction is already canceled should I expect that async() task is
> also canceled and will never call a callback route? Or should I always
> check  t_was_cancelled() in the beginning of a callback route?
>
>
>> Hi Vitalii,
>>
>> For the wait_for_event(), the timeout seems to have no effect, the
>> waiting being for ever :-| . The transaction has no timeout as you
>> didn;t sent out any branch yet (the transaction timeout is for
>> waiting on replies).
>>
>> Could you please open bug report on the opensips tracker on github ?
>>
>> Regards,
>>
>> Bogdan-Andrei Iancu
>>
>> OpenSIPS Founder and Developer
>>   http://www.opensips-solutions.com
>> OpenSIPS Bootcamp 2018
>>   http://opensips.org/training/OpenSIPS_Bootcamp_2018/
>>
>> On 11/14/2018 03:17 PM, Vitalii Aleksandrov wrote:
>>> Hi,
>>>
>>> event_routing module provides the great async function
>>> wait_for_event().  If script subscribes for a event and received it
>>> it calls some "resume_route".
>>> What I can't understand is what happens with a transaction if
>>> wait_for_event() never catches an event and reaches its timeout.
>>> Is the any way to continue script execution from the place where
>>> "wait_for_event() was called or to execute some "timeout_route" to
>>> handle transaction properly?
>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> [hidden email]
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>


_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users
Reply | Threaded
Open this post in threaded view
|

Re: EBR and wait_for_event() timeout

Vitalii Aleksandrov
Hi Bogdan,
Instead of t_inject_branches I use t_relay() from wait_for_event()
callback. As far as I understood the logic is the same. t_relay should
just fail if transaction connected to the waiting context has been
canceled by that time.
Thanks for the detailed reply.

> Hi Vitalii,
>
> The waiting for the event is not strong correlated with the
> transaction. The transaction may disappear while waiting. The waiting
> context is only keeping a reference to the transaction, so the
> t_inject_branch() can look it up (if still exists).
> So, if the transaction is canceled, the event waiting is not affected,
> it will still be triggered, but the t_inject will fail (either with
> transaction not found, either with not able to create more branches on
> a canceled transaction).
>
> Regards,
>
> Bogdan-Andrei Iancu
>
> OpenSIPS Founder and Developer
>   http://www.opensips-solutions.com
> OpenSIPS Bootcamp 2018
>   http://opensips.org/training/OpenSIPS_Bootcamp_2018/
>
> On 11/16/2018 07:07 PM, Vitalii Aleksandrov wrote:
>> Thanks for the information. Have one more related question.
>>
>> What If I call somewhere, opensips calls wait_for_event() and before
>> the event happens or async timeout (will create a bug report) fired I
>> CANCEL the call.
>> Since async() keeps some context in transaction structure and this
>> transaction is already canceled should I expect that async() task is
>> also canceled and will never call a callback route? Or should I
>> always check  t_was_cancelled() in the beginning of a callback route?
>>
>>
>>> Hi Vitalii,
>>>
>>> For the wait_for_event(), the timeout seems to have no effect, the
>>> waiting being for ever :-| . The transaction has no timeout as you
>>> didn;t sent out any branch yet (the transaction timeout is for
>>> waiting on replies).
>>>
>>> Could you please open bug report on the opensips tracker on github ?
>>>
>>> Regards,
>>>
>>> Bogdan-Andrei Iancu
>>>
>>> OpenSIPS Founder and Developer
>>>   http://www.opensips-solutions.com
>>> OpenSIPS Bootcamp 2018
>>>   http://opensips.org/training/OpenSIPS_Bootcamp_2018/
>>>
>>> On 11/14/2018 03:17 PM, Vitalii Aleksandrov wrote:
>>>> Hi,
>>>>
>>>> event_routing module provides the great async function
>>>> wait_for_event().  If script subscribes for a event and received it
>>>> it calls some "resume_route".
>>>> What I can't understand is what happens with a transaction if
>>>> wait_for_event() never catches an event and reaches its timeout.
>>>> Is the any way to continue script execution from the place where
>>>> "wait_for_event() was called or to execute some "timeout_route" to
>>>> handle transaction properly?
>>>>
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> [hidden email]
>>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>

_______________________________________________
Users mailing list
[hidden email]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users