Hi,
This sounds like a bug report I filed previously,
https://issues.apache.org/jira/browse/TS-935. When using TSContCall
with TS_EVENT_IMMEDATE or TS_EVENT_TIMEOUT will cause an assertion to
be thrown in INKContInternal::handle_event_count, this is a bug.
Obvious quick fix is to not use those events with TSContCall.

Brian

2011/10/3 Uri Shachar <ushac...@hotmail.com>
>
> Hi,
>
>      I'm not sure if this is a known behavior (and should just be better 
> documented), a bug or just bad practices on my part -- Flow goes like this:
>
> 1) In a global hook, create a continuation X and attach it to several 
> hookpoints in a transaction Y.
>
> 2) When called through one of the hookpoints, send an asynch request to an 
> external service that does URL categorization.
>
> 3) Return without reenabling (since we don't want to proceed before getting 
> the response).
>
> 4) A dedicated thread receives the response, and schedules continuation X.
> (There's a mechanism that makes sure that cont X is still valid when the URL 
> categorization response arrives)
>
> 5) continuation X is called with an immediate event and calls TSHttpSsnArgGet 
> on transaction Y session.
>
> 6) If a client disconnects after we retrieve the session (and validate it), 
> but before we access the variables themselves...
> Problem is when cont X is called due to the scheduled event, it does not lock 
> the HttpSM mutex, and a 'just-in-time' client disconnect can destroy the 
> ua_session.
>
> My solution to this was to create continuation X with the HttpSM mutex -- 
> Does this seem reasonable?
> BTW -- I saw the TSHttpSchedule function that aims to solve a similar issue, 
> but it appears to cause transactions to hang occasionally since it overrides 
> the HttpSM default handler.
>
>        Cheers,
>                  Uri
>

Reply via email to