You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Alexey Neyman <st...@att.net> on 2014/10/10 00:48:21 UTC

svn: E200030: sqlite: Expected database row missing

Hi,

Was using svn 1.8.10, CentOS 6.5, Subversion RPM installed from 
opensource.wandisco.com.

During 'svn switch', the following error pops up:

svn: E200030: sqlite: Expected database row missing

What I was doing:

- checked out a project from /trunk
- did some local changes
- copied WC to a branch
- attempted to switch to the branch

If I repeat the 'svn switch ^/branches/mybranch' command, the first time 
switch proceeded a bit further - but later yields the same error. 
Subsequent runs yield this error immediately.
I cannot reproduce this by repeating the 'checkout-modify-copy-switch' 
sequence, but I am keeping this working copy in case some information 
can be gleaned from it.

Any ideas what may be wrong?

Regards,
Alexey.

Re: svn: E200030: sqlite: Expected database row missing

Posted by Alexey Neyman <st...@att.net>.
Any ideas on what may have caused this error, and what info can be 
obtained from the WC?

On 10/09/2014 03:48 PM, Alexey Neyman wrote:
> Was using svn 1.8.10, CentOS 6.5, Subversion RPM installed from 
> opensource.wandisco.com.
>
> During 'svn switch', the following error pops up:
>
> svn: E200030: sqlite: Expected database row missing
>
> What I was doing:
>
> - checked out a project from /trunk
> - did some local changes
> - copied WC to a branch
> - attempted to switch to the branch
>
> If I repeat the 'svn switch ^/branches/mybranch' command, the first 
> time switch proceeded a bit further - but later yields the same error. 
> Subsequent runs yield this error immediately.
> I cannot reproduce this by repeating the 'checkout-modify-copy-switch' 
> sequence, but I am keeping this working copy in case some information 
> can be gleaned from it.
>
> Any ideas what may be wrong?

Regards,
Alexey.

Re: svn: E200030: sqlite: Expected database row missing

Posted by Alexey Neyman <st...@att.net>.
On 10/15/2014 01:23 AM, Philip Martin wrote:
> Checked the issue using SVN trunk. It does not abort like 1.8.10, but
> it does report tree conflicts for d1/f1 and d1. I would say such
> conflicts should be resolved automatically, given that the working
> copy contains exactly the same changes as in the incoming
> edit. Figuring that out may not be trivial, though, as the copied
> directory may be arbitrarily deep.
> The difficulty here is that Subversion does not know that the repository
> tree was created as a commit from this working copy.  Resolving the
> tree-conflicts automatically probably needs more complete move-tracking.
>
I think this kind of conflicts happens with plain deletions as well. I 
don't have a trunk Subversion available right now to check though.

I think theoretically Subversion could work its way up: first it could 
note that d1/f1 is removed in both local tree and the repository. Since 
it is the same change, it could then resolve that conflict. Then, seeing 
no other changes in d1 in the local tree - it could conclude that the 
deletion of the d1 directory is again the same operation - and resolve 
that conflict, too. Lather, rinse, repeat for any higher-level directories.

Regards,
Alexey.

Re: svn: E200030: sqlite: Expected database row missing

Posted by Philip Martin <ph...@wandisco.com>.
Alexey Neyman <st...@att.net> writes:

> Actually, looking at the commit I came up with a reproduction scenario:

Thanks for that!  I've created an issue:

http://subversion.tigris.org/issues/show_bug.cgi?id=4524

> Checked the issue using SVN trunk. It does not abort like 1.8.10, but
> it does report tree conflicts for d1/f1 and d1. I would say such
> conflicts should be resolved automatically, given that the working
> copy contains exactly the same changes as in the incoming
> edit. Figuring that out may not be trivial, though, as the copied
> directory may be arbitrarily deep.

The difficulty here is that Subversion does not know that the repository
tree was created as a commit from this working copy.  Resolving the
tree-conflicts automatically probably needs more complete move-tracking.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Re: svn: E200030: sqlite: Expected database row missing

Posted by Alexey Neyman <st...@att.net>.
On 10/14/2014 05:03 AM, Philip Martin wrote:
> Alexey Neyman <st...@att.net> writes:
>
>> On 10/13/2014 04:08 PM, Andreas Stieger wrote:
>>> Hello,
>>>
>>> On 09/10/14 23:48, Alexey Neyman wrote:
>>>> What I was doing:
>>>>
>>>> - checked out a project from /trunk
>>>> - did some local changes
>>>> - copied WC to a branch
>>>> - attempted to switch to the branch
>>> What exactly does "copied WC to a branch" mean in terms of svn or file
>>> system operations?
>> It means exactly that, copying from a WC to a new directory in the repository:
>>
>> $ svn cp . ^/engr/aneyman/mybranch
> That's a commit.  Did it succeed?  If so then the commit should contain
> a lot of information about the state of the working copy.  What does the
> commit look like?  What does 'svn log -v' show for the commit?  Adds,
> modifications, copies, deletes, property changes, etc.?
Yes, it is a commit and it has succeeded. If I check out a separate 
working copy from that new path, it is fine and contains all the 
modifications from the working copy thus checked in.

Actually, looking at the commit I came up with a reproduction scenario:

[[[
#!/bin/bash

cd /tmp
svnadmin create repo
svn co file://`pwd`/repo wc
svn mkdir wc/trunk wc/trunk/d1 wc/trunk/d2
echo hi > wc/trunk/d1/f1
svn add wc/trunk/d1/f1
svn ci -mm wc
rm -rf wc
svn co file://`pwd`/repo/trunk wc
svn mv wc/d1/f1 wc/d2
svn rm wc/d1
svn cp -mm wc file://`pwd`/repo/newbranch
svn switch file://`pwd`/repo/newbranch wc
]]]

Running this script under SVN 1.8.10 gives the same "missing row" error. 
So, the problem operation is "copy a file from a directory, then delete 
that directory".

Checked the issue using SVN trunk. It does not abort like 1.8.10, but it 
does report tree conflicts for d1/f1 and d1. I would say such conflicts 
should be resolved automatically, given that the working copy contains 
exactly the same changes as in the incoming edit. Figuring that out may 
not be trivial, though, as the copied directory may be arbitrarily deep.

Regards,
Alexey.

Re: svn: E200030: sqlite: Expected database row missing

Posted by Philip Martin <ph...@wandisco.com>.
Alexey Neyman <st...@att.net> writes:

> On 10/13/2014 04:08 PM, Andreas Stieger wrote:
>> Hello,
>>
>> On 09/10/14 23:48, Alexey Neyman wrote:
>>> What I was doing:
>>>
>>> - checked out a project from /trunk
>>> - did some local changes
>>> - copied WC to a branch
>>> - attempted to switch to the branch
>> What exactly does "copied WC to a branch" mean in terms of svn or file
>> system operations?
> It means exactly that, copying from a WC to a new directory in the repository:
>
> $ svn cp . ^/engr/aneyman/mybranch

That's a commit.  Did it succeed?  If so then the commit should contain
a lot of information about the state of the working copy.  What does the
commit look like?  What does 'svn log -v' show for the commit?  Adds,
modifications, copies, deletes, property changes, etc.?
 
The tables in the SQLite database .svn/wc.db have some incorrect content
but it is hard to guess exactly what is wrong.  The working copy is
complicated and you have provided little information.  If there was no
corruption what sort of local changes do you expect?  Adds, deletes,
property changes, etc.?  Are there file or directory externals?  Do they
have changes?

Are you able to identify which paths in the working copy trigger the
problem?  Try running "svn st path", or "svn info path", for various
paths in the working copy, and see which succeed/fail.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Re: svn: E200030: sqlite: Expected database row missing

Posted by Alexey Neyman <st...@att.net>.
On 10/13/2014 04:08 PM, Andreas Stieger wrote:
> Hello,
>
> On 09/10/14 23:48, Alexey Neyman wrote:
>> What I was doing:
>>
>> - checked out a project from /trunk
>> - did some local changes
>> - copied WC to a branch
>> - attempted to switch to the branch
> What exactly does "copied WC to a branch" mean in terms of svn or file
> system operations?
It means exactly that, copying from a WC to a new directory in the 
repository:

$ svn cp . ^/engr/aneyman/mybranch

Regards,
Alexey.


Re: svn: E200030: sqlite: Expected database row missing

Posted by Andreas Stieger <an...@gmx.de>.
Hello,

On 09/10/14 23:48, Alexey Neyman wrote:
> What I was doing:
> 
> - checked out a project from /trunk
> - did some local changes
> - copied WC to a branch
> - attempted to switch to the branch

What exactly does "copied WC to a branch" mean in terms of svn or file
system operations?

Andreas