trafficserver-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From taorui <weilogs...@126.com>
Subject Re: TS-857 and finer grained locking
Date Wed, 14 Mar 2012 07:02:25 GMT
I have not read this patch carefully so I have no idea that the patch
solved the problem or not. I just have two question:

1) do we find the cause of the crash? (how to trigger the crash, in what
situation)
2) is it worth using smart pointer to prevent the crash? (maintain the
design principle of the ATS)

If we can not find a perfect solution now, why not just put it aside. 

BTW: In taobao`s tree (base on 3.0.1 and some patches of our own), we
have not seen the crash for a long time.

On Tue, 2012-03-13 at 12:36 -0500, Alan M. Carroll wrote:
> I have a patch submitted for TS-857 which attempts to make a start on finer grained locking.
The essence of it is
> 
> 1) Provide more powerful and standards compliant reference counted smart pointers - lib/ts/IntrusivePtr.h
> 
> 2) Provide reference counted lists that are compatible with both (1) and existing intrusive
list support.
> 
> The current IntrusivePtr.h does more than this but that is an artifact of the development
process, as I will describe later.
> 
> For TS-857 in particular, the change is to replace the existing NetHandler open_list
with a reference counted list which uses the same internal links, and to change HttpServerSession
to use reference counted smart pointers. These changes mean that NetHandler can detect when
a VC is shared and avoid closing it underneath the other thread. The current Handle and callback
mechanism is discarded because it's a hack.
> 
> Unfortunately, for reasons I don't understand, I can no longer replicate the problem
on my test setup, even going back to 3.1.1 where as before I could replicate it in under a
minute. So, while this patch seems stable I can not demonstrate that it is better with respect
to TS-857. It passes regression, my load testing, and does not seem to leak connections (traffic_line
reports a constant number of open connections even after much load testing).
> 
> Reference counting is implemented only for UnixNetVConnections as the NetHandler open
list contains only instances of that type. Unfortunately the actual mechanism must be introduced
in to the class tree at NetVConnection because that is what HttpServerSession uses. The normal
reference counting cleanup is disabled at this point because it's either handled differently
(UnixNetVConnection) or not wanted (all other NetVConnection subclasses).
> 
> The additional types in IntrusivePtr.h that are not used were used during earlier work
but it seemed later that changing only open_list was the best approach. The other types were
left in as they seem potentially useful.
> 
> The question going forward is, should we commit this patch? Any comments are appreciated.
For now, my recommendation is to commit and resolve TS-857 unless someone else can either
replicate it or provide field report of its occurrence.
> 




Mime
View raw message