Re: Locking and errors (and deserialization) in inprocess-cache

2011-05-19 Thread 'Daniel Shahaf'
Bert Huijben wrote on Thu, May 19, 2011 at 17:41:13 +0200: > > > > -Original Message- > > From: Daniel Shahaf [mailto:danie...@elego.de] > > Sent: donderdag 19 mei 2011 17:36 > > To: dev@subversion.apache.org > > Cc: Daniel Shahaf > > Subject: R

RE: Locking and errors (and deserialization) in inprocess-cache

2011-05-19 Thread Bert Huijben
> -Original Message- > From: Daniel Shahaf [mailto:danie...@elego.de] > Sent: donderdag 19 mei 2011 17:36 > To: dev@subversion.apache.org > Cc: Daniel Shahaf > Subject: Re: Locking and errors (and deserialization) in inprocess-cache > > Actually, the followi

Re: Locking and errors (and deserialization) in inprocess-cache

2011-05-19 Thread Daniel Shahaf
Actually, the following might suffice for now: Index: subversion/libsvn_subr/cache-inprocess.c === --- subversion/libsvn_subr/cache-inprocess.c(revision 1124903) +++ subversion/libsvn_subr/cache-inprocess.c(working copy) @@ -1

Locking and errors (and deserialization) in inprocess-cache

2011-05-19 Thread Daniel Shahaf
In inprocess-cache.c the following pattern is common: svn_error_t *inprocess_callback() { SVN_ERR(lock_cache(cache)); SVN_ERR(body()); SVN_ERR(unlock_cache(cache)); return something; } So, if an error occurs, then all future cache calls deadlock; and it's easy to forget to balance lock/un