I don't see any way to change the API to require a TSCont that has no
mutex.  Unless we create some new type like TSContNoMutex, but there
would be a ton of cascading consequences that don't seem worth it.

On Tue, Feb 12, 2019 at 11:25 AM Bryan Call <bc...@apache.org> wrote:
>
> I am against creating an API that accepts a mutex and then later asserts 
> because a mutex was passed.
>
> This goes against the work that has been done on creating continuations with 
> a mutex and ATS is supposed to handle the locking for you.
>
> -Bryan
>
>
>
> > On Feb 11, 2019, at 8:19 AM, Alan Carroll 
> > <solidwallofc...@verizonmedia.com.INVALID> wrote:
> >
> > Putting a blocking lock on those calls will eliminate the advantages we got
> > from moving to 1.1.1 from 1.0.2 in terms of lock contention. It will mean
> > people will write plugins with locks, put them on a TLS hook, and then
> > complain "ATS sucks, it's so slow doing TLS".
> >
> > Also, it's already very easy to write code that asserts later on. Trying
> > scheduling a TSCont that doesn't have a mutex.
> >
> > On Fri, Feb 8, 2019 at 7:38 PM Susan Hinrichs
> > <shinr...@verizonmedia.com.invalid> wrote:
> >
> >> Yes, we could blocking lock easily enough too at the potential cost of
> >> blocking the thread.
> >>
> >> We could block and issue a warning on the hook call to give people some
> >> hint that this might be a performance problem.
> >>
> >> On Fri, Feb 8, 2019, 7:21 PM Bryan Call <bc...@apache.org wrote:
> >>
> >>> Couldn’t you change the lock to be a blocking lock for the SSL APIs?
> >>>
> >>> It seems like a bad interface to be able to write and compile code that
> >>> will assert later on.
> >>>
> >>> -Bryan
> >>>
> >>>> On Feb 7, 2019, at 2:51 PM, Susan Hinrichs <shinr...@apache.org>
> >> wrote:
> >>>>
> >>>> @macisasandwich ran into this when working with port ready changes in
> >>>> autest. The extra port probe tied up the test ssl plugin (for
> >>> tls_hooks15)
> >>>> which exercised a TLS hook on a continuation with a mutex. Since the
> >>> invoke
> >>>> method could not grab the lock, the assertion went off.
> >>>>
> >>>> I went back to look at how the TLS code should grab the continuation
> >> lock
> >>>> before calling invoke. But there are many (most) cases where the TLS
> >> hook
> >>>> cannot be delayed by a reschedule in the case when the lock cannot be
> >>>> obtained.
> >>>>
> >>>> In most cases for such global continuations, you would not want a lock
> >> on
> >>>> the continuation for performance reasons. In the case where locking is
> >>>> needed, it would be better done by the plugin writer internal to the
> >>> plugin.
> >>>>
> >>>> I made a PR with code changes to force continuations to not have
> >> mutexes
> >>> if
> >>>> they are using the SSL hooks.  With this code change, Trafficserver
> >> will
> >>>> assert if a continuation with a mutex tries to attach to a SSL hooks.
> >>>>
> >>>> The PR with code change
> >>> https://github.com/apache/trafficserver/pull/4939
> >>>>
> >>>> Please share your comments/concerns.
> >>>>
> >>>> Thanks,
> >>>> Susan
> >>>
> >>>
> >>
>

Reply via email to