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

Possible data corruption issue? (was: svn up --depth empty breaks working copy)

From: Karl Fogel <kfogel_at_red-bean.com>
Date: Thu, 29 May 2008 04:03:03 -0400

I've rethreaded this to get the words "data corruption" in the subject,
as it seems to be that kind of bug. As glasser pointed out in

  Message-ID: <1ea387f60805282312v7f03d297w208cda44ba8ec438_at_mail.gmail.com>

in this thread, at the end of his repro recipe a file is left thinking
it's at r1 but has the r2 working content *and* r2 text-base. Even if
later we reliably check base-checksum on commit (thus preventing bad
file content from entering the repository), there may still be the
possibility of property corruption being committed... I haven't had
time to analyze it deeply enough to know one way or the other (hey, it's
3am and I just saw this thread).

If we can determine that there is no way for corruption to enter the
repository with this bug, then I think it's okay to fix this in 1.5.1.
Not ideal, but okay: a broken working copy is annoying, but it's not the
same as bad data. If there *is* a way, though, then we kind of have to
fix this in 1.5.0.

I seem to have a gift for disappearing at awkward moments, but: I'll be
offline tomorrow and most of Friday. (Anyone who feels like chatting
about this or anything else, feel free to call my cell phone -- I could
probably use the company on US I-80 :-) )


"David Glasser" <glasser_at_davidglasser.net> writes:
> The same problem code is in all three remote ra layers. This fixes
> the issue; currently running tests to see if it does any harm.
> cmpilato, any insight into why you wrote the code this way originally?
> (Also, why libsvn_ra_svn/client.c(ra_svn_get_reporter) uses
> svn_error_clear in its call to svn_delta_depth_filter_editor?)
> [[[
> When using the depth filter editor to filter out entries that are
> deeper than requested,
> make sure not to filter out a file which is the target of a
> depth-empty edit; otherwise
> the working copy will be corrupted when the target's revision is
> updated but nothing else
> is changed.
> (This bit of code is run when doing an update --depth=empty against a
> 1.4.x or older
> server, which interprets recurse=False like depth-files.)
> * subversion/libsvn_delta/depth_filter_editor.c
> (okay_to_edit): Don't special-case directories when figuring out
> whether or not to filter
> with requested depth empty.
> ]]]
> Index: subversion/libsvn_delta/depth_filter_editor.c
> ===================================================================
> --- subversion/libsvn_delta/depth_filter_editor.c (revision 31453)
> +++ subversion/libsvn_delta/depth_filter_editor.c (working copy)
> @@ -68,7 +68,7 @@
> switch (eb->requested_depth)
> {
> case svn_depth_empty:
> - return (kind == svn_node_dir && effective_depth <= 0);
> + return (effective_depth <= 0);
> case svn_depth_files:
> return ((effective_depth <= 0)
> || (kind == svn_node_file && effective_depth == 1));
> --
> David Glasser | glasser@davidglasser.net | http://www.davidglasser.net/
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
> For additional commands, e-mail: dev-help_at_subversion.tigris.org

To unsubscribe, e-mail: dev-unsubscribe_at_subversion.tigris.org
For additional commands, e-mail: dev-help_at_subversion.tigris.org
Received on 2008-05-29 10:03:21 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.