Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 56114200AC7 for ; Mon, 2 May 2016 07:19:20 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 4FA981609A1; Mon, 2 May 2016 07:19:20 +0200 (CEST) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 9AB021602C1 for ; Mon, 2 May 2016 07:19:19 +0200 (CEST) Received: (qmail 24433 invoked by uid 500); 2 May 2016 05:19:17 -0000 Mailing-List: contact users-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list users@subversion.apache.org Received: (qmail 24420 invoked by uid 99); 2 May 2016 05:19:17 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 02 May 2016 05:19:17 +0000 Received: from [192.168.1.240] (unknown [85.183.83.236]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id AF3881A013B; Mon, 2 May 2016 05:19:16 +0000 (UTC) Message-ID: <5726E366.1090803@apache.org> Date: Mon, 02 May 2016 07:19:34 +0200 From: Stefan Fuhrmann Organization: Apache Software Foundation User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Daniel Shahaf CC: Johan Corveleyn , Terry Dooher , users@subversion.apache.org Subject: Re: 1.9.4 fix References: <57230D50.6000100@apache.org> <20160430004705.GA20016@tarsus.local2> In-Reply-To: <20160430004705.GA20016@tarsus.local2> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit archived-at: Mon, 02 May 2016 05:19:20 -0000 On 30.04.2016 02:47, Daniel Shahaf wrote: > Stefan Fuhrmann wrote on Fri, Apr 29, 2016 at 09:29:20 +0200: >> Issue #4554 talks about two things, a set of conditions and their >> immediate impact (broken dump file). The dump file will simply >> not load and that's easy enough to detect. The set of conditions >> is as follows: >> >> 1. Representation sharing must be enabled (default since 1.6 or so). >> 2. At least one change must be committed using a 1.8+ server. >> 3. Property and directory deltification must not be enabled >> (available since 1.8 but enabled by default only since 1.9). >> 4. A file gets committed whose contents happens to look exactly >> like a serialized hash (i.e. a directory content or property list) >> that has been committed with 1.8+. >> 5. No file with the same contents has been committed using a pre-1.8 >> server with rep-sharing enabled. >> >> Point 4 is unlikely to occur by accident. By far your best shot >> at this is to have a 4-byte file containing "END\n", which happens >> to match an empty hash. Another chance is committing the contents >> of a .svn folders of a pre-1.7 working copy - which requires some >> serious fiddling with the .svn folders. > > If these conditions do occur in a repository, though, a third-party tool > that does not verify checksums for empty files would incur data loss > when accessing that repository through Subversion 1.9.3 or older. There are two types of interfaces here: Some SVN API and the dump file. Both are affected. Invalid dump files are easy to identify while API users would expect file_length() to return correct results without double- checking them, which it did not. > Does any third-party tool make that optimization? Such a tool would probably ignore checksums altogether because there is no point in explicitly ignoring them for empty files only. >> 'svnadmin load' will fail. > > This sentence applies to any version of svnadmin, including pre-1.9.3 > ones. Correct. >> No-op changes cannot be produced by standard SVN tooling > > They can: just undo the changes while 'commit --editor-cmd' is waiting > for the editor to exit. (I posted a scripted version of that at some > point, but can't find it.) Thanks for pointing that out. I was not aware that this would send the change list before waiting for commit msg. -- Stefan^2.