• Poul-Henning Kamp's avatar
    After HSH_Lookup() returns NULL indicating a busy object, we diddled · f50a3412
    Poul-Henning Kamp authored
    the session a bit to transfer the per-request stats to the session
    counters with SES_Charge().
    
    Not only was it inconsistent to charge accounting data in the middle
    of a request, it was also illegal because after the hash lock was
    released we no longer owned the session.
    
    Once a system is under sufficient load that there is a queue for the
    CPU, a race could happen where upon hitting a busy object, the hash lock
    was released, another thread would schedule, finish the busy object,
    start the sessions on the waiting list, finish off the request we had
    and then when we get the cpu again and access it, it's gone.
    
    The previous commit (r3512) eliminated the need to call SES_Charge,
    this commit removes the (option) shmlog message inside the hash lock
    thus, hopefully, eliminating the race that caused #418.
    
    Fixes: #418
    
    
    git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@3513 d4fa192b-c00b-0410-8231-f00ffab90ce4
    f50a3412
Name
Last commit
Last update
bin Loading commit data...
doc Loading commit data...
etc Loading commit data...
include Loading commit data...
lib Loading commit data...
man Loading commit data...
redhat Loading commit data...
ChangeLog Loading commit data...
INSTALL Loading commit data...
LICENSE Loading commit data...
Makefile.am Loading commit data...
README Loading commit data...
autogen.des Loading commit data...
autogen.sh Loading commit data...
configure.ac Loading commit data...
varnishapi.pc.in Loading commit data...