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

Re: [PATCH] Introduce per-instance filesystem UUIDs

From: Branko Čibej <brane_at_wandisco.com>
Date: Tue, 19 Aug 2014 00:07:34 +0100

On 18.08.2014 21:43, Evgeny Kotkov wrote:
> What I am really concerned about is that this internal little fix
> could ultimately become an unnecessary complicated, full-stack and
> user-visible feature. I doubt that we want users to know something
> about the way we solve our *internal* problems. Why would they ever
> need to know?

I think it's not that simple.

Consider the case where an administrator decides to not use 'svnadmin
hotcopy' to back up a repository, but instead creates a (LVM) snapshot
of the volume and uses 'tar' (or 'cp -a') to create the backup.

When such a backup is restored and made active, everything will just
work ... except that stale caches in svnserve or mor_dav_svn will not be
automatically invalidated. In other words, the mere introduction of the
instance ID does not solve "all" problems. There are several possible
resolutions to this particular problem:

  * Tell the users "don't do that". That won't help; they'll do it anyway.
  * Require a restart of all servers when restoring such backups; been
    there, people forget.
  * Require that the users run 'svnadmin recover' before bringing the
    repository online; this might work if 'svnadmin recover' tweaks the
    instance ID, since presumably they're already using it per our
    existing recommendation.
  * Invent 'svnadmin restore' or 'svnadmin activate' or whatnot to make
    such backups viable; see above, people forget.
  * Require 'svnadmin setuuid' on the restored backups; this breaks
    existing working copies.

So, even though the existence of the instance ID is an implementation
detail, it does cause visible change in the behaviour of the repository:
server restarts due to fiddling with the repository instance are needed
far less often; but we still have to document when and why they are needed.

I don't pretend that the cases I listed above cover all the possible
side effects of introducing an instance ID. That's why I asked for a
branch, with documentation about how and why the instance ID affects
existing commands (and APIs) -- even if this documentation is only in a
BRANCH-README file and is later included in the release notes. Also, we
may decide not to implement some of the things (e.g., in svnadmin) that
constitute the "complete set" of instance-id related changes, but before
deciding which of them we can safely skip, we need an idea of what the
complete set is; again, easier to get that idea with a branch to work on
than trying to figure out what we "forgot" to implement on trunk.

IMO, the extra hassle of managing the branch is much smaller than the
extra hassle of releasing 1.9.1..1.9.5 in the first 2 months after
1.9.0, just because we forgot to implement some (in retrospect) obvious
changes on trunk before the release.

I'm sure the 1.8.0 fiasco taught us a thing or two about that; so, let's
try not to repeat it.

-- Brane

Branko Čibej | Director of Subversion
WANdisco | Realising the impossibilities of Big Data
e. brane_at_wandisco.com
Received on 2014-08-19 01:08:04 CEST

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

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.