[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Strategy for FSFS locking fix and 1.2

From: Greg Hudson <ghudson_at_MIT.EDU>
Date: 2005-04-12 21:28:15 CEST

The FSFS locking fix comes in three logical parts:

  (1) Cache the uuid in memory (in FSFS) for technical reasons.
  (2) Add the serialized_init machinery to the FS loader library, and
      use it in the FSFS back end to serialize access to the write
      lock.
  (3) Add the svn_fs_initialize() API and calls to it. If it is not
      used, libsvn_fs makes a best-effort fallback which (a) leaks a
      little heap memory if the svn libraries are unloaded, and (b)
      could, if one is very unlucky, fail to serialize accesses to the
      write lock.

The third part is proving troublesome; client programs like the "svn"
command-line client need to invoke it in case they use ra_local, but
they may not be linked against libsvn_fs if --enable-dso is used. The
solution will involve adding an svn_ra_initialize() for client
programs to use, and that will take some time and a little design
work.

I have already created a backport branch for 1.1 which adds parts (1)
and (2) without part (3), and simply uses the best-effort fallback all
the time. I would like to take the same strategy for 1.2, so that the
locking fix doesn't interfere so much with the 1.2 release schedule.
For all practical purposes, the best-effort fallback should be fine,
and I think the fix is much less disruptive without the new API.

Unfortunately, the logical parts do not map directly to commits. The
commits involved so far are:

  r14063: Cache uuid in memory
  r14066: Add serialized_init machinery, svn_fs_initialize() API,
          and best-effort fallback
  r14067: Add calls to svn_fs_initialize()
  r14068: Fix error-handling bug in r14066
  r14079: Fix memory leak in r14066
  r14121: Add explanatory comment
  r14124: Localize error strings and allow multiple
          svn_fs_initialize() calls

So the 1.2 backport branch would include r14063, r14066 minus the new
API, r14068, r14079, r14121, and r14124 minus the part applying to
svn_fs_initialize().

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Tue Apr 12 21:29:40 2005

This is an archived mail posted to the Subversion Dev mailing list.