Re: subversion cross compile (arm)

2010-12-03 Thread Philip Martin
Takács András  writes:

> / # svn mkdir file:///var/svn/testrepo/xxx -m "aaa"
> fs_fs: [LINE 2082] calling svn_fs_fs__read_noderev
> fs_fs: [LINE 2140] calling read_rep_offsets '0 0 4 4
> 2d2977d1c96f487abe4a1e202dd03b4e'
> read_rep_offsets: [LINE 1947] '0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e'
> read_rep_offsets: [LINE 1956] '0'
> read_rep_offsets: [LINE 1973] '0'
> read_rep_offsets: [LINE 1984] '4'
> read_rep_offsets: [LINE 1995] '4'
> read_rep_offsets: [LINE 2009] '2d2977d1c96f487abe4a1e202dd03b4e'
> apr_file_open: '/var/svn/testrepo/db/transactions/0-0.txn/node.0.0'
> Call svn_fsfs__write_noderev in svn_fs_fs__put_node_revision [LINE 2390]
> svn_fsfs__write_noderev HEADER_TEXT
> rev 0
> offs 4618626049922564096
> size 4
> exp size 4
> md5 2d2977d1c96f487abe4a1e202dd03b4e
> svn_fsfs__write_noderev HEADER_TEXT OK

So here the file should contain the line

text: 0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e

> fs_fs: [LINE 2082] calling svn_fs_fs__read_noderev
> fs_fs: [LINE 2140] calling read_rep_offsets '0 4 4 531704 (null)'
> read_rep_offsets: [LINE 1947] '0 4 4 531704 (null)'

but here when you read the file you get the wrong data.  Is the file
corrupt or does the problem occur svn_fs_fs__read_noderev?

> read_rep_offsets: [LINE 1956] '0'
> read_rep_offsets: [LINE 1973] '4'
> read_rep_offsets: [LINE 1984] '4'
> read_rep_offsets: [LINE 1995] '531704'
> subversion/libsvn_fs_fs/fs_fs.c:2239: (apr_err=160004)
> svn: Corrupt node-revision '0.0.t0-0'
> subversion/libsvn_fs_fs/fs_fs.c:2006: (apr_err=160004)
> svn: Malformed text representation offset line in node-rev
> read_rep_offsets: apr_strtok #4 last_string '' string '0' str '(null)'
> strlen(str) 6 (APR_MD5_DIGESTS
> IZE*2) 32 revision 0 offset 4 size 0 expsize 4

-- 
Philip


Re: subversion cross compile (arm)

2010-12-03 Thread Philip Martin
Takács András  writes:

> 2010/12/3 Philip Martin :
>> Takács András  writes:
>>
>>> / # svn mkdir file:///var/svn/testrepo/xxx -m "aaa"
>>> fs_fs: [LINE 2082] calling svn_fs_fs__read_noderev
>>> fs_fs: [LINE 2140] calling read_rep_offsets '0 0 4 4
>>> 2d2977d1c96f487abe4a1e202dd03b4e'
>>> read_rep_offsets: [LINE 1947] '0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e'
>>> read_rep_offsets: [LINE 1956] '0'
>>> read_rep_offsets: [LINE 1973] '0'
>>> read_rep_offsets: [LINE 1984] '4'
>>> read_rep_offsets: [LINE 1995] '4'
>>> read_rep_offsets: [LINE 2009] '2d2977d1c96f487abe4a1e202dd03b4e'
>>> apr_file_open: '/var/svn/testrepo/db/transactions/0-0.txn/node.0.0'
>>> Call svn_fsfs__write_noderev in svn_fs_fs__put_node_revision [LINE 2390]
>>> svn_fsfs__write_noderev HEADER_TEXT
>>> rev 0
>>> offs 4618626049922564096
>>> size 4
>>> exp size 4
>>> md5 2d2977d1c96f487abe4a1e202dd03b4e
>>> svn_fsfs__write_noderev HEADER_TEXT OK
>>
>> So here the file should contain the line
>>
>> text: 0 0 4 4 2d2977d1c96f487abe4a1e202dd03b4e
>
> This line is in /var/svn/testrepo/db/revs/0/0 file.
> It is parsed correctly.

The new file 
 '/var/svn/testrepo/db/transactions/0-0.txn/node.0.0'
should also contain that same line.  Does it?

>>> fs_fs: [LINE 2082] calling svn_fs_fs__read_noderev
>>> fs_fs: [LINE 2140] calling read_rep_offsets '0 4 4 531704 (null)'
>>> read_rep_offsets: [LINE 1947] '0 4 4 531704 (null)'
>>
>> but here when you read the file you get the wrong data.  Is the file
>> corrupt or does the problem occur svn_fs_fs__read_noderev?
>
> I don't know the internal mechanism of subversion, so I don't know
> what is this second text representation.
> I guess it is generated for the committing (next) revision.
> The issue coming (I think) from this function: svn_fsfs__write_noderev
> which is called from svn_fs_fs__put_node_revision

The problem appears to be the data in the transactions/0-0.txn/node.0.0
file.  Either it is getting corrupted when written to the file, or when
subsequently read from the file.

-- 
Philip


Re: subversion cross compile (arm)

2010-12-03 Thread Philip Martin
Takács András  writes:

> One more interesting addition:
>
> The representation_string function is called from svn_fs_fs__write_noderev.
> Here at the nodrerev->data_rep section I preinted out the revision,
> offset, size, enpanded_size fields from the noderev->data_rep
> structure:
>
> rev 0
> offs 4618629949752868864

In hex: 4018AB78

> size 4
> exp size 4
> md5 2d2977d1c96f487abe4a1e202dd03b4e
>
> The offset seems to be quite high. Is it normal?
>
> The next debug step is in the representation_string function. Before
> calling the apr_psprintf function, I printed out again the fields:
>
> rs rev 0
> rs offs 4618628953320456192

in hex: 4018AA90

> rs size 4
> rs exp size 4
> rs md5 2d2977d1c96f487abe4a1e202dd03b4e
>

At a guess its a 32/64 bit issue.  Are you using 64 file offsets?

-- 
Philip


Re: subversion cross compile (arm)

2010-12-03 Thread Philip Martin
Philip Martin  writes:

> Takács András  writes:
>
>> The next debug step is in the representation_string function. Before
>> calling the apr_psprintf function, I printed out again the fields:
>>
>> rs rev 0
>> rs offs 4618628953320456192
>
> in hex: 4018AA90
>
>> rs size 4
>> rs exp size 4
>> rs md5 2d2977d1c96f487abe4a1e202dd03b4e
>>
>
> At a guess its a 32/64 bit issue.  Are you using 64 file offsets?

Obviously you are printing 64-bit offsets, so some part of your system
uses 64-bit offsets.  I think the problem is that some other part of
your system is only writing 32-bits into 64-bits of memory, and leaving
the higher 32-bits with random values.

-- 
Philip


Re: subversion cross compile (arm)

2010-12-03 Thread Philip Martin
Takács András  writes:

> I checked my toolchain. It's using 32 bit file offsets.
> I tried an other toolchain (ct-ng + eglibc). Same result. :(
>
> 2010/12/3 Philip Martin :
>> Takács András  writes:
>>
>>> Here at the nodrerev->data_rep section I preinted out the revision,
>>> offset, size, enpanded_size fields from the noderev->data_rep
>>> structure:
>>>
>>> rev 0
>>> offs 4618629949752868864
>>
>> In hex: 4018AB78

Here you are printing 64-bits, so some part of your system thinks that
apr_off_t is 64-bits.  How are apr_off_t and APR_HAS_LARGE_FILES defined
in apr.h?

-- 
Philip


Re: subversion cross compile (arm)

2010-12-06 Thread Philip Martin
Takács András  writes:

>> Here you are printing 64-bits, so some part of your system thinks that
>> apr_off_t is 64-bits.  How are apr_off_t and APR_HAS_LARGE_FILES defined
>> in apr.h?
>
> #define APR_HAS_LARGE_FILES   0
> typedef  off_t   apr_off_t;
>
> I think this is OK, isn't it?

It shows that APR is just following the rest of the system.  When you
printed values you showed 64 bits so it looks like off_t is 64-bits,
which conflicts with your earlier statement that you were using 32-bit
file offsets.  However the 64-bit values you printed look as if the
lower 32-bits are valid and the higher 32-bits are junk.  Your
environment appears to be confused about the size of file offsets.

-- 
Philip


Re: Subversion Issue: 'delete file' not transmitted to server when performing multiple merge-commit

2011-01-13 Thread Philip Martin
 writes:

> My user reported that an extra file existed in the repository after
> performing a merge (claiming this file was not in his working copy prior
> to the commit).  My initial thought was they had done the merges out of
> sequence causing the deletion of a file before it was added, the user
> was adamant this was not the case.

A simpler sequence:

  rm -rf repo wc file
  touch file
  url=file://`pwd`/repo
  svnadmin create repo

  svn mkdir -mm $url/trunk
  svn cp -mm $url/trunk $url/branch
  svn import -mm file $url/branch/folder/file
  svn rm -mm $url/branch/folder/file

  svn co $url/trunk wc
  svn merge $url/branch@3 wc
  svn merge $url/branch@4 wc

The first merge adds a folder containing a file, the second merge
deletes the file.  After the two merges 1.6 shows status:

 Mwc
A  +  wc/folder

This is a problem because folder's history is a copy from a revision
where it contains the file, so the file will exist in repository after
the commit.  Using 1.7 status shows:

 Mwc
A  +  wc/folder
D  +  wc/folder/file

so 1.7 will delete explicitly the file when the merge is committed.

-- 
Philip


Re: XML parsing and checksum mismatch errors at updates and checkouts

2011-04-08 Thread Philip Martin
Daniel Shahaf  writes:

> [ summary for dev@: bug in trunk that doesn't reproduce in 1.6.16;
> I can reproduce it with trunk/ra_serf but not with trunk/ra_neon ]
>
> Aleksandr Platonov wrote on Thu, Apr 07, 2011 at 17:52:13 +0400:
>> 
>> I build Subversion as a part of TortoiseSVN (see
>> http://tortoisesvn.googlecode.com/svn/trunk/ext/build/subversion.build)
>> 
>> This problem happens when I try to checkout following url:
>> http://svn.webdav.org/repos/projects/neon/tags/0.29.5
>> 
>
> I can reproduce it (with trunk svn):
>
> * Checking out that URL over ra_neon proceeds normally.
>
> * Checking out that URL over ra_serf is
>   (a) noticeably slower
>   (b) fails with a checksum error:
>
> svn: E200014: Checksum mismatch for 
> '/tmp/svn/neon-0.29.5-via-serf/src/ne_auth.c':
>expected:  4ce0a5989ad4d1b0f7f66ae08c1e05c1
>  actual:  5848237f8c173bd25a118db45cd5574a

I was getting that error last month:

http://svn.haxx.se/dev/archive-2011-03/0745.shtml

What I find is that the problem sometimes appears and sometimes does
not.  It's not predictable either, repeating a failed export/checkout
will sometimes work and sometimes fail at a different place.  That is
the case when I try that neon URL:

svn: E200014: Checksum mismatch for 'subversion/tests/xx/src/ne_openssl.c':
   expected:  3bd789b372ca14793e8ac228cdf43a15
 actual:  be72d4221d805da2484b1cd0182b9049

svn: E200014: Checksum mismatch for 'subversion/tests/xx/src/ne_ssl.h':
   expected:  6fbb6c5dda02229623c887a9a08b1533
 actual:  4f0c8e04845b70ebf1e88adbb780a2f0

I suspect the pool/memory handling in serf or libsvn_ra_serf, but I'm
not certain.

-- 
Philip


Re: XML parsing and checksum mismatch errors at updates and checkouts

2011-04-08 Thread Philip Martin
"Bert Huijben"  writes:

>> What I find is that the problem sometimes appears and sometimes does
>> not.  It's not predictable either, repeating a failed export/checkout
>> will sometimes work and sometimes fail at a different place.  That is
>> the case when I try that neon URL:
>> 
>> svn: E200014: Checksum mismatch for
>> 'subversion/tests/xx/src/ne_openssl.c':
>>expected:  3bd789b372ca14793e8ac228cdf43a15
>>  actual:  be72d4221d805da2484b1cd0182b9049
>> 
>> svn: E200014: Checksum mismatch for 'subversion/tests/xx/src/ne_ssl.h':
>>expected:  6fbb6c5dda02229623c887a9a08b1533
>>  actual:  4f0c8e04845b70ebf1e88adbb780a2f0
>> 
>> I suspect the pool/memory handling in serf or libsvn_ra_serf, but I'm
>> not certain.
>
> The update in one fetch operation in neon doesn't receive all checksums in
> all places. Serf receives a few more, because it uses a request per file.
> For trunk I fixed the missing checksums for 1.7, so a trunk server with a
> trunk client gets all the checksums editor v1 supports.
>
> But using an older server or an older client will not. In that case you just
> get the calculated checksums in your working copy.
>
> I think this server is pre 1.5, but it is certainly possible to get invalid
> checksums in a checkout when you encounter the problems mentioned in issue
> #3711. But you don't encounter these problems with trunk clients.

I was getting those checksum errors while doing an export, I'm not sure
how 3711 is relevant.

-- 
Philip


Re: XML parsing and checksum mismatch errors at updates and checkouts

2011-04-08 Thread Philip Martin
Philip Martin  writes:

> I was getting those checksum errors while doing an export, I'm not sure
> how 3711 is relevant.

So I got an checksum error during an export using serf for the file
src/ne_uri.c.  I compared the "bad" file in the export with a "good"
version from a checkout using neon:

$ diff -a bad/src/svn-DfdRjG good/src/ne_uri.c 
86,90c86,110
< #define URI_SEGCHAR (URI_PCHAR | FOT, OT, OT, OT, OT, OT, OT, OT, OT, 
O2010-10-14T15:02:41.455674Z *010-10-14T15:02:41.455674Z���
   *DAV:getlastmodifiedThu, 14 
Oct 2010 15:02:41 GMT�*Thu, 14 Oct 2010 15:02:41 
GMTuN��p*�*DAV:version-name1823(+1823�+Z�+
  
+DAV:creator-displaynamejoe�+joe4r�p`+�+http://subversion.tigris.org/xmlns/dav/md5-checksum###error###,
 
###error###�<�p,3�(.@-http://subversion.tigris.org/xmlns/dav/�RIW�'(,Ơ��

,http://subversion.tigris.org/xmlns/dav/repository-uuid61a7d7f5-40b7-0310-9c16-bb0ea8cb1845�$61a7d7f5-40b7-0310-9c16-bb0ea8cb1845doH8�-�DAV:supportedlock
< 
< X.
< 
/T, OT, OT, OT, OT, OT, teK.DAV:lockdiscovery/
---
> #define URI_SEGCHAR (URI_PCHAR | FS)
> /* query = *( pchar / "/" / "?" ) */
> #define URI_QUERY (URI_PCHAR | FS | QU)
> /* fragment == query */
> #define URI_FRAGMENT URI_QUERY
> 
> /* any characters which should be path-escaped: */
> #define URI_ESCAPE ((URI_GENDELIM & ~(FS)) | URI_SUBDELIM | OT | PC)
> 
> static const unsigned int uri_chars[256] = {
> /* 0xXXx0  x2  x4  x6  x8  xA  xC  xE */
> /*   0x */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT,
> /*   1x */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT,
> /*   2x */ OT, SD, OT, GD, SD, PC, SD, SD, SD, SD, SD, PS, SD, DS, DT, FS,
> /*   3x */ DG, DG, DG, DG, DG, DG, DG, DG, DG, DG, CL, SD, OT, SD, OT, QU,
> /*   4x */ AT, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
> /*   5x */ AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, GD, OT, GD, OT, US,
> /*   6x */ OT, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL,
> /*   7x */ AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, AL, OT, OT, OT, TD, OT,
> /*   8x */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, 
> /*   9x */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, 
> /*   Ax */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, 
> /*   Bx */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, 
> /*   Cx */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, 
> /*   Dx */ OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, OT, 


-- 
Philip


Re: Problems compiling 1.7.0 on redhat el4 64bit

2011-08-10 Thread Philip Martin
Mark Phippard  writes:

> On Tue, Aug 9, 2011 at 4:49 PM,  wrote:
>
>> ** **
>>
>> Ok, I’ve tracked down which revision caused the problem.  It happened in
>> rev 1104160.  Stefan2 made a change to utf.c to speed up UTF8 conversion.
>> Ever since this change went in I am seeing subversion crash when I compile
>> on 64bit el4.
>>
>> ** **
>>
>> Just for kicks and giggles I updated to the HEAD revision of
>> http://svn.apache.org/repos/asf/subversion/trunk.  Did a reverse merge on
>> rev 1104160, cleaned up the conflicts and built it and viola!  No more
>> crashing when built on 64bit el4.
>>
>
> Thanks.  Moving the thread to dev@
>
> Can someone look at this and possibly fix it?
>
> If you are not on users@, and to summarize this thread.  SVN builds fine on
> RHEL 4 64-bit but crashes immediately on any command, even svn help.  I saw
> the same problem with our builds.

It could be a compiler/optimiser bug.  Which compiler are you using?
Can you provide a stack trace of the crash (with debug symbols please)?
Does the crash go away if you compile utf.c without optimisation?  Which
version of APR are you using?  Is APR_HAS_THREADS defined in apr.h?

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com


Re: Problems compiling 1.7.0 on redhat el4 64bit

2011-08-10 Thread Philip Martin
 writes:

> I am attaching a stack trace with symbols enabled.

Thanks!

> I'm using gcc.  The default in the makefile.

I think RHEL may have come with two different gcc, a 3 series and a 4
series.  What version does 'gcc -v' show?

> I am using the apr that you get from the get-deps.sh
> script. APR_HAS_THREADS is defined.

Just to check, APR_HAS_THREADS is defined to be 1?

It would be good to confirm that at runtime you really are using the
version of libapr you compiled, run ldd on the svn executable.

> If I disable optimizations by doing "make CFLAGS=-O0" the program no
> longer crashes.

That suggests it could be a compiler bug.

> #0  apr_xlate_conv_buffer (convset=0x2d6674752d6e7673, 

convset looks to be corrupt, that value is way bigger than the other
pointer values.  It looks like ASCII, "-ftu-nvs", but that probably
just means it's random.

> inbuf=0x7fbe8a "/cos/home/ryttingm", inbytes_left=0x7fb038, 
> outbuf=0x54d5a8 "", outbytes_left=0x7fb030) at xlate/xlate.c:339
> 339   if (convset->ich != (iconv_t)-1) {
> (gdb) 
> Thread 1 (process 14949):
> #0  apr_xlate_conv_buffer (convset=0x2d6674752d6e7673, 
> inbuf=0x7fbe8a "/cos/home/ryttingm", inbytes_left=0x7fb038, 
> outbuf=0x54d5a8 "", outbytes_left=0x7fb030) at xlate/xlate.c:339
>   status = 0
> #1  0x002a965a4b95 in convert_to_stringbuf (node=0x2a965bcc30, 

node looks to be corrupt as well, that looks like a code value.

Looking at the rest of the stack trace I would say this is the first
call to a utf8 conversion function that would have invoked
get_xlate_handle_node and I suspect it is that function that is going
wrong.  At a guess something to do with the use of atomic_swap, which
makes it important to confirm the value of APR_HAS_THREADS.

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com


Re: Problems compiling 1.7.0 on redhat el4 64bit

2011-08-10 Thread Philip Martin
Dave Huang  writes:

> On Aug 10, 2011, at 4:51 PM, Philip Martin wrote:
>> convset looks to be corrupt, that value is way bigger than the other
>> pointer values.  It looks like ASCII, "-ftu-nvs", but that probably
>> just means it's random.
>
> It's byte-reversed "svn-utf-"

Ah, yes!  It's a little-endian machine so the pointer value is the
opposite order to the string.

-- 
Philip


Re: Problems compiling 1.7.0 on redhat el4 64bit

2011-08-10 Thread Philip Martin
Philip Martin  writes:

>  writes:
>
>> If I disable optimizations by doing "make CFLAGS=-O0" the program no
>> longer crashes.
>
> That suggests it could be a compiler bug.

The other flag you could try is to enable optimisation but to use
-fno-strict-aliasing.

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com


Re: Problems compiling 1.7.0 on redhat el4 64bit

2011-08-22 Thread Philip Martin
 writes:

> It is set to 1
>> 
>> Looking at the rest of the stack trace I would say this is the first
>> call to a utf8 conversion function that would have invoked
>> get_xlate_handle_node and I suspect it is that function that is going
>> wrong.  At a guess something to do with the use of atomic_swap, which
>> makes it important to confirm the value of APR_HAS_THREADS.

I wonder if it is connected to this APR bug:

https://issues.apache.org/bugzilla/show_bug.cgi?id=50731

In subversion/libsvn_subr/utf.c we declare

static volatile void *xlat_ntou_static_handle = NULL;
static volatile void *xlat_uton_static_handle = NULL;

that is "pointers to volatile data", as required by APR, but we really
want "volatile pointers to data".  Perhaps we should do something
similar to svn_cache_config.c.  Would you try this patch built with
optimisations enabled:

Index: subversion/libsvn_subr/utf.c
===
--- subversion/libsvn_subr/utf.c(revision 1160136)
+++ subversion/libsvn_subr/utf.c(working copy)
@@ -90,8 +90,8 @@
  * using atomic xchange ops, i.e. without further thread synchronization.
  * If the respective item is NULL, fallback to hash lookup.
  */
-static volatile void *xlat_ntou_static_handle = NULL;
-static volatile void *xlat_uton_static_handle = NULL;
+static void * volatile xlat_ntou_static_handle = NULL;
+static void * volatile xlat_uton_static_handle = NULL;
 
 /* Clean up the xlate handle cache. */
 static apr_status_t
@@ -182,11 +182,11 @@
  * the caller.
  */
 static APR_INLINE void*
-atomic_swap(volatile void **mem, void *new_value)
+atomic_swap(void * volatile * mem, void *new_value)
 {
 #if APR_HAS_THREADS
 #if APR_VERSION_AT_LEAST(1,3,0)
-   return apr_atomic_xchgptr(mem, new_value);
+   return apr_atomic_xchgptr((volatile void **)mem, new_value);
 #else
/* old APRs don't support atomic swaps. Simply return the
 * input to the caller for further proccessing. */


-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com


Re: Assertion Failed: workqueue.c

2011-10-13 Thread Philip Martin
Patrick Quirk  writes:

> I upgraded to 1.7 yesterday when the new version of Tortoise came out,
> and used it with no issues last evening and today until I encountered
> this assertion:
>
> In file
> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\libsvn_wc\workqueue.c'
> line 672: assertion failed (checksum != NULL)

Is this a working copy that you checked-out with the old 1.6 Tortoise
and upgraded to 1.7, or is it a working copy that you checked-out with
1.7?

> Now any time I attempt anything (cleanup, update, commit, etc) in that
> WC I always get this assertion (using Tortoise or the command line).
> I got it first while running an update on my working copy after
> resolving a conflict (resolved using 'theirs').

A text-conflict or a tree-conflict?  Do you have any local modifications
to the working copy?  Adds, deletes, copies etc.?

Is the sqlite3 utility readily available on Windows?  If it is then run:

  sqlite3 .svn/wc.db "select * from work_queue"

-- 
Philip


Re: Assertion Failed: workqueue.c

2011-10-13 Thread Philip Martin
Patrick Quirk  writes:

>> Is the sqlite3 utility readily available on Windows?  If it is then run:
>>  sqlite3 .svn/wc.db "select * from work_queue"
>
> Yep, here's the output:
> 79|(file-install X/MONSTER.FMX/MONSTER.FMX.csproj 1 0 1 1)
> 80|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.resx 1 0 1 1)
> 81|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs 1 0 1 1)
> 82|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.cs 1 0 1 1)
>
> These are files that were new from the repo and were the last to show up 
> before the assertion appeared.

So now we want to see the nodes row for each of those four paths:

sqlite3 .svn/wc.db "select * from nodes where 
local_relpath='X/MONSTER.FMX/MONSTER.FMX.csproj'"
sqlite3 .svn/wc.db "select * from nodes where 
local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.resx'"
sqlite3 .svn/wc.db "select * from nodes where 
local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs'"
sqlite3 .svn/wc.db "select * from nodes where 
local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.cs'"

-- 
Philip


Re: checksum error upgrading working copy

2011-10-13 Thread Philip Martin
Stefan Sperling  writes:

> On Thu, Oct 13, 2011 at 04:28:21PM +0200, Daniel Sparing wrote:
>> Dear fellow subversion users,
>> 
>> as requested by the error message, i would like to report an error as
>> the following:
>> 
>> ---8<---
>> In file
>>  
>> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\libsvn_wc\entries.c'
>>  line 1935: assertion failed (svn_checksum_match(entry_md5_checksum,
>>  found_md5_checksum))
>> ---8<---
>> 
>> what i was doing: I updated my TortoiseSVN client to 1.7.0, then tried
>> to upgrade my two working copies to the new 1.7 format, one of them
>> succeeded, the other one repeatedly returns the error message above.
>> 
>> daniel
>
> You had a broken 1.6 working copy which cannot be upgraded.
> See http://svn.haxx.se/tsvnusers/archive-2011-10/0086.shtml
>
> We've been getting this report a lot lately.
> Maybe it's time to add this to the FAQ?
>
> I also think we should change the assert into a proper error message.

In this particular case one of the checksum values in one of the
.svn/entries files doesn't match the checksum of the corresponding file
in .svn/text-base.  The incorrect checksum won't show up as an error in
1.6 until an update or commit attempts to modify the corresponding file.
The 1.7 upgrade process checks all checksums so it will detect errors
that lie dormant in 1.6 working copies.

I agree we should be returning a better error, one that includes the
name of the file with the incorrect checksum.

-- 
Philip


Re: checksum error upgrading working copy

2011-10-13 Thread Philip Martin
Hyrum K Wright  writes:

> Another option might be to run a pre-upgrade check to ensure this type
> of error doesn't exist, before we irrevocably upgrade (and potentially
> hose) the working copy.

This is happening during upgrade so the working copy remains a 1.6
working copy.

-- 
Philip


Re: Assertion Failed: workqueue.c

2011-10-13 Thread Philip Martin
Patrick Quirk  writes:

 Is the sqlite3 utility readily available on Windows?  If it is then run:
  sqlite3 .svn/wc.db "select * from work_queue"
>>>
>>> Yep, here's the output:
>>> 79|(file-install X/MONSTER.FMX/MONSTER.FMX.csproj 1 0 1 1)
>>> 80|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.resx 1 0 1 1)
>>> 81|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs 1 0 1 1)
>>> 82|(file-install X/MONSTER.FMX/Boxes/gbFMXDisplay.cs 1 0 1 1)
>>>
>>> These are files that were new from the repo and were the last to show up 
>>> before the assertion appeared.
>>
>> So now we want to see the nodes row for each of those four paths:
>>
>> sqlite3 .svn/wc.db "select * from nodes where 
>> local_relpath='X/MONSTER.FMX/MONSTER.FMX.csproj'"
>> sqlite3 .svn/wc.db "select * from nodes where 
>> local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.resx'"
>> sqlite3 .svn/wc.db "select * from nodes where 
>> local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.Designer.cs'"
>> sqlite3 .svn/wc.db "select * from nodes where 
>> local_relpath='X/MONSTER.FMX/Boxes/gbFMXDisplay.cs'"
>
> I've attached the output since it's a little unreadable in 80 column format.

Thanks! So each file has an op-depth=0, presence=normal line that has a
checksum.  Can you verify that each checksum exists in pristine:

sqlite3 .svn/wc.db "select * from pristine where checksum 
='$sha1$a6fb31cbea18a2f670e5d1387b2a1b118f831f09'"
sqlite3 .svn/wc.db "select * from pristine where checksum 
='$sha1$9addd651cd4260ee52b26cf5eae2d2bfe798aba5'"
sqlite3 .svn/wc.db "select * from pristine where checksum 
='$sha1$041ffe70415ce290a4f14a770d869e2eb3b420e8'"
sqlite3 .svn/wc.db "select * from pristine where checksum 
='$sha1$ea6871c7f57dd63e0a74ac0fd19435232322e5ff'"


What I don't yet understand is why each file also has an op-depth=1,
presence=base-deleted row.  That seems to imply that 'X' is deleted in
the working copy, so we should see two lines here:

sqlite3 .svn/wc.db "select op_depth, presence from nodes where 
local_relpath='X'"

-- 
Philip


Re: Error running configure for subversion 1.7.0

2011-10-14 Thread Philip Martin
Ed Hillmann  writes:

> checking for a BSD-compatible install... build/install-sh -c
> configure: Apache Portable Runtime (APR) library configuration
> checking for APR... yes
> checking APR version... 1.4.5
> /u01/ct/ctapp/subversion-1.7.0/configure: bad substitution
>
>
> I can't see what is causing the bad substitution error.

> printf "%s" "${output_flags# }"

I'm guessing it's the # substitution in that line.  Which shell are you
using?  It's a long time since I used Solaris but there used to be
/usr/xpg4/bin/sh that was more like the shells commonly found on Linux.
Perhaps you could use that. Alternatively you may be able to replace
the above line with:

  echo $output_flags

it occurs in several places in configure.

-- 
Philip


Re: Help! Subversion Exception!

2011-10-18 Thread Philip Martin
sebb  writes:

> In that case, either that is an insufficient check, or the upgrade
> fails to act correctly on the results of the check.

In what way?  The upgrade detected the problem, stopped the upgrade and
left the 1.6 working copy unchanged apart from some files in .svn/tmp.

-- 
Philip


Re: Problem using mod_dav_svn (returns 500 on non-svn requests)

2011-10-18 Thread Philip Martin
[Adding dev@s.a.o as I think this is a bug in the Subversion code,
 although I don't know enough to be sure.]

Jean-Daniel Dupas  writes:

>> Le 18 oct. 2011 à 18:39, Jean-Daniel Dupas a écrit:
>>
>>> After upgrading to svn 1.7, I encounter some very annoying issues.
>>> I have a web server with the following configuration:
>>> 
>>> hostname/ : standard website
>>> hostname/svn: subversion repositories (using dav_svn)
>>> hostname/projects: other website.
>>> 
>>> Before the update, this configuration were working fine. But after
>>> the update, anytime the server receives a POST request (whatever the
>>> path is), the dav_svn module try to handle it, and when it failed
>>> (always when the path does not start with /svn/...), it returns a
>>> 500 error (without logging anything in the error.log, which is an
>>> other issue).
>>> 
>>> FWIW, the error is created and returned by the get_resource()
>>> function, in mod_dav_svn/repos.c.
>>> 
>>> Is there something I can do to workaround this issue ? 
>
> I found some details about this issue.
>
> When neither SVNPath, nor SVNParentPath are defined in a vhost, or
> alias, the mod_dav_svn prevents processing of all POST requests.
>
> So it is no longer possible to have mod_dav_svn loaded in an apache
> instance used to serve other content (as modules are globals).

As far as I can see mod_dav_svn.c:dav_svn__handler passes all POST
requests to dav_svn__method_post and that function will return an error
if the request does not have SVNPath or SVNParentPath set since it will
fail to open a repository.

Is that the behaviour we want?  I don't think we should be attempting to
handle POST requests that are directed at non-Subversion locations.
Should one of those functions simply ignore the POST request when
neither SVNPath nor SVNParentPath is set?

I see we register the hook using APR_HOOK_LAST.  Does that mean we
expect other hooks to get in first and handle non-Subversion POST
requests?  What happpens if the other handler also uses APR_HOOK_LAST?
Does it then depend on the order of the module loads?  Is it random?

-- 
Philip


Re: 1.7.0 does not build on Solaris9

2011-10-19 Thread Philip Martin
Andreas Krey  writes:

> + svn commit -m 1 
> Adding kadr.polon.p
> Transmitting file data .ld.so.1: svn: fatal: relocation error: file 
> /export/home/krey/svn17/lib/libsvn_delta-1.so.0: symbol compressBound: 
> referenced symbol not found

I think that is a zlib symbol.  Subversion links some libraries against
zlib but doesn't link executables to zlib directly, relying on the
library to pull them in. If you build using

 make EXTRA_LDFLAGS=-lz

that will probably fix the problem.  If zlib is in some non-standard
location you may need

 make EXTRA_LDFLAGS='-lz -L/some/dir'


-- 
Philip


Re: Help! Subversion Exception!

2011-10-20 Thread Philip Martin
Les Mikesell  writes:

> Perhaps it is obvious and known to you.  I think the number of error
> reports on the list indicates that the scenarios that cause errors are
> not generally well understood.

The error in this case:

line 1935: assertion failed (svn_checksum_match(entry_md5_checksum, 
found_md5_checksum))

indicates that the working copy is corrupt.  This is not a problem that
can be solved by running cleanup.  It's possible that it could be solved
in other ways (by running "svn up -r0" on the affected files perhaps, or
"rm -rf on a subdir) but it's still risky to upgrade a corrupt working
copy as we don't know what other corruption is present.

It's possible that the corruption has lain dormant in the 1.6 working
copy for some time, the corrupt checksum will only be reconised when an
update or commit attempts to explicitly modify the file with a problem.
Other 1.6 operations won't examine the corrupt checksum.  However the
1.7 upgrade has to recalculate checksums for all the files so it falls
over on such cases.

One of the things we would like to do is verify that this really is
corruption but that is hard because the error message isn't very good
(1.7.1 will do better--it will tell you which file has the problem) and
our users don't always have the tools to do it.  We need sombody capable
of debugging the assertion to identify the file, and then checking the
stored checksum against the actual checksum.  Alternatively somebody who
can validate all the the checksums in the working copy to see if any are
wrong.  Or somebody who is prepared to send their working copy to me so
that I can do it.

-- 
Philip


Re: why does my SVN client process die an hour after completion of commit?

2011-10-21 Thread Philip Martin
Stefan Sperling  writes:

> On Fri, Oct 21, 2011 at 10:34:52AM +0100, Jon Nicoll wrote:
>> So, my question is: is there something in the 'svn commit' protocol
>> which causes the client process to do a lot of work, potentially
>> causing the client machine to run out of memory, up to one hour after
>> the server has determined that a checkin is complete?
>
> This is a known issue in Subversion 1.6.
> Adding many files in one commit uses too much memory, see:
> http://subversion.tigris.org/issues/show_bug.cgi?id=1964#desc12

The reason it happens after a commit is complete on the server is that
the client has to modify the metadata for all the items in the working
copy that were committed.  When the commit starts the items being
committed all have local modifications of some kind, when the commit is
complete they must all be change to unmodified.  This can involve a lot
of work, writing pristine text and properties, updating the revision
numbers.  This updating cannot happen until the client knows that the
commit was successful.

-- 
Philip


Re: why does my SVN client process die an hour after completion of commit?

2011-10-21 Thread Philip Martin
Jon Nicoll  writes:

> So for now I would be best off to regard my 'initial working
> directory' as suspect, and if I checkout from the server into a new
> directory, that directory should be correct, yes?

You will probably need to run cleanup on the old working copy to remove
locks but it should be OK.  Items that have been not been updated to
commited revision will get pulled from the server on the next update.

-- 
Philip


Re: Problem using mod_dav_svn (returns 500 on non-svn requests)

2011-10-22 Thread Philip Martin
Philip Martin  writes:

>>> Le 18 oct. 2011 à 18:39, Jean-Daniel Dupas a écrit:
>>>> 
>>>> Before the update, this configuration were working fine. But after
>>>> the update, anytime the server receives a POST request (whatever the
>>>> path is), the dav_svn module try to handle it, and when it failed
>>>> (always when the path does not start with /svn/...), it returns a
>>>> 500 error (without logging anything in the error.log, which is an
>>>> other issue).
>
> Is that the behaviour we want?  I don't think we should be attempting to
> handle POST requests that are directed at non-Subversion locations.
> Should one of those functions simply ignore the POST request when
> neither SVNPath nor SVNParentPath is set?

Fixed by r1187695, proposed for 1.7.x.

-- 
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com


Re: Subversion Exception!

2011-10-24 Thread Philip Martin
Pecinovský Rudolf  writes:

> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\libsvn_wc\adm_ops.c'
>
> line 177: assertion failed (status == svn_wc__db_status_normal || status == 
> svn_wc__db_status_added)

> However the command line client tells:
>
> D:\Tvorba_PGM_SVN>svn st
>
> !M  @B_Knihy\@B_41C_OOP-NMPO\nbproject

Yes, that looks like a new bug.  I've raised issue 4042:

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

-- 
Philip


Re: build error

2011-10-24 Thread Philip Martin
Ludescher Antal  writes:

> In file included from subversion/libsvn_subr/sqlite.c:32:0:
> subversion/libsvn_subr/internal_statements.h:6:3: warning: missing
> terminating " character [enabled by default]
> subversion/libsvn_subr/internal_statements.h:8:4: warning: missing
> terminating " character [enabled by default]

You trying to build from the .zip file on Linux and the files have the
wrong line endings, use the .tar.bz2 file instead.

-- 
Philip


Re: Subversion Exception! - Performing a "copy versioned items" from Tortoise SVN client

2011-10-24 Thread Philip Martin
"Richard Millet"  writes:

> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\lib
> svn_wc\copy.c'
>
> line 491: assertion failed (child_status ==
> svn_wc__db_status_server_excluded)

Probably issue 4026:

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

-- 
Philip


Re: Subversion Exception! - Performing a "copy versioned items" from Tortoise SVN client

2011-10-24 Thread Philip Martin
Stefan Sperling  writes:

> On Mon, Oct 24, 2011 at 10:02:03AM -0700, Richard Millet wrote:
>> In file
>> 
>> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\lib
>> svn_wc\copy.c'
>> 
>> line 491: assertion failed (child_status ==
>> svn_wc__db_status_server_excluded)
>
> It is somewhat likely that this problem got fixed in 1.7.1.

Sort of.  If the incomplete node is a result of the issue 4035 upgrade
problem then 1.7.1 would not have produced the incomplete node and the
copy would work.  However there are other valid ways to produce
incomplete nodes and issue 4026 is still active.

> Can you please update to 1.7.1 and try to reproduce it again? Thanks.

Unlikely to work.  It will only work it the user can go back to the 1.6
working copy and run the upgrade again.

-- 
Philip


Re: 1.7RC4 file externals produce errors on updates

2011-10-24 Thread Philip Martin
Mothmonsterman  writes:

> Should this have been resolved with Issue 4015?
>
> http://subversion.tigris.org/issues/show_bug.cgi?id=4015
>
> On Oct 17, 4:30 pm, Mothmonsterman  wrote:
>> same problem here..
>>
>> On Oct 4, 1:10 pm, Rolf Campbell 
>> wrote:
>>
>> > When I try to update a working view that contains file-externals, I get
>> > an error because the client thinks the external is aversioneditem.
>>
>> > In an attempt to clear the problem, I deleted the file (locally), but
>> > "svn up" restores the file and then complains about itexisting.
>>
>> > Are file-externals supported in v1.7?
>>
>> > $ svn up
>> > Updating '.':
>> > Restored 'lastserial.txt'
>>
>> > Fetching externaliteminto 'lastserial.txt':
>> > svn: warning: W195017: The file external from
>> > 'https://[snip]/trunk/SerialNumbers/lastserial.txt'cannotoverwritetheexistingversionedite
>> >  mat '/c/[snip]/lastserial.txt'
>>
>> > At revision 3905.
>> > svn: E205011: Failure occurred processing one or more externals definitions

Difficult to say.  Issue 4015 is fixed in 1.7.  Are you using rc4?  Are
you using a 1.7 checkout, or a 1.6 checkout upgraded to 1.7?

-- 
Philip


Re: Diff output: get full path of files

2011-10-24 Thread Philip Martin
Jacob Weber  writes:

> I want to pass the output of "svn diff OLD-URL NEW-URL" to a 
> code-review tool, but I need to include the full path of each file 
> in the ---/+++ headers.
>
> The paths in the output always seem to be relative to the directories 
> you pass in. Is there a way to make it include the full paths?

The paths in the standard diff output are repository relative paths.  If
you want the paths to local copies of the files use --diff-cmd to invoke
your own wrapper, the files paths are parameters 6 and 7.

-- 
Philip


Re: 1.7RC4 file externals produce errors on updates

2011-10-24 Thread Philip Martin
Mothmonsterman  writes:

> No, it was the 2011-10-11 — 1.7.0
>
> I just noticed there is a 1.7.1 release, so I upgraded client to it...
> No dice, still have same issue. (svn, version 1.7.1 (r1186859)).
>
> It is a 1.6 checkout upgraded to 1.7.
>
> My setup is identical to the test case described in Issue 4015, hence
> my reference to it.

Which version was used to do the upgrade?  If you upgraded the working
copy with an a 1.7 pre-release that was affected by 4015 then the
upgraded working will be faulty.  Changing the client will not fix a
faulty working copy.  If you upgraded the working copy with a released
1.7 then you should not see the problem and if you do we need to
investigate.

-- 
Philip


Re: 1.7RC4 file externals produce errors on updates

2011-10-24 Thread Philip Martin
Mothmonsterman  writes:

> 2011-10-11 — 1.7.0 was used to do the upgrade. No release candidates
> were ever installed.
>
> On Oct 24, 5:28 pm, Philip Martin  wrote:
>> Mothmonsterman  writes:
>> > No, it was the 2011-10-11 — 1.7.0
>>
>> > I just noticed there is a 1.7.1 release, so I upgraded client to it...
>> > No dice, still have same issue. (svn, version 1.7.1 (r1186859)).
>>
>> > It is a 1.6 checkout upgraded to 1.7.
>>
>> > My setup is identical to the test case described in Issue 4015, hence
>> > my reference to it.
>>
>> Which version was used to do the upgrade?  If you upgraded the working
>> copy with an a 1.7 pre-release that was affected by 4015 then the
>> upgraded working will be faulty.  Changing the client will not fix a
>> faulty working copy.  If you upgraded the working copy with a released
>> 1.7 then you should not see the problem and if you do we need to
>> investigate.

How is the svn:external defined?  So what does 'svn st' show on the file
external, and on the directory defining the svn:externals?  What did
they look like when you upgraded?  Were they different from the current
state?  Do you have the sqlite3 tool?

-- 
Philip


Re: 1.7RC4 file externals produce errors on updates

2011-10-24 Thread Philip Martin
Mothmonsterman  writes:

> External definition:
> C:\eclipse\workspaces_3_6\CADOC\eOMIS>svn propget svn:externals
> ^/eOMIS/trunk/src/a/b/c/SF02_SampleClass.java src/a/b/c/
> SF02_SampleClass.java
> ^/eOMIS/trunk/src/a/b/c/SF02_SampleServlet.java src/a/b/c/
> SF02_SampleServlet.java
> ^/eOMIS/trunk/WebContent/d/sf2tzzz.jsp WebContent/d/sf2tzzz.jsp

The 4015 fix doesn't handle svn:externals where the path has multiple
components.  I've reopened the issue.

> svn st:
> C:\eclipse\workspaces_3_6\CADOC\eOMIS>svn st
> S   src\a\b\c\SF02_SampleClass.java
> S   src\a\b\c\SF02_SampleServlet.java
> S   WebContent\d\sf2tzzz.jsp

You can recover your working copy by updating each file:externals to r0:

svn up -r0 src\a\b\c\SF02_SampleClass.java

and then updating the whole working copy.

-- 
Philip


Re: Error when updating

2011-10-25 Thread Philip Martin
Wabe W  writes:

> First, please bear with my ignorance here. I only just figured out
> that I don't get a reply to my e-mail in my inbox. I'm apparently
> supposed to visit this page...

People are replying to utwente.nl address in your Reply-To header.

> Anyway, thank you for replying. To return to the problem:
>>Does the problem occur with an upgraded working copy or with
>
>>a new checkout?
>
> The answer is: with both.
>
>>Can you please try a new checkout if you haven't already?
>
> When it first happened (after upgrading) I tried a new checkout. But
> only for one of the directories.
>
> Right now I checked out the two directories I'm currently using. And I
> still get the same error message if I simply click SVN update.  Only
> if I commit (just anything) first and then update, it works fine - and
> only for that directory it works.

Did you checkout the new working copy to the same location as the old
working copy?  If so did you move/delete the old working copy first?

What state is your working copy before the update that fails?  Any
modifications?  Can you reproduce the problem with a local test
repository?

-- 
Philip


Re: Subversion Exception!

2011-10-26 Thread Philip Martin
"Schoenbrun, Jason"  writes:

> I was trying to checkout everything in our repository, from the very
> top. Got to 400 - 500 MB before getting this error.

> In file
>
> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion
> \libsvn_wc\update_editor.c'
>
> line 1582: assertion failed (action == svn_wc_conflict_action_edit ||
> action
>
> == svn_wc_conflict_action_delete || action ==
> svn_wc_conflict_action_replace)

Was this a checkout on top of an existing working copy?  Was it checking
out externals when the assertion occurred?

-- 
Philip


Re: assertion failed

2011-10-26 Thread Philip Martin
Davor Barcan  writes:

> During an update I received the following error:
>
> In file
> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\libsvn_wc\update_editor.c'
> line 2898: assertion failed (status != svn_wc__db_status_normal)
>
> I did not see that error was reported previously on the mailing list
> archives, so I am reporting this as requested by the error message.

Is this a working copy that was upgraded from a 1.6 checkout?  What sort
of changes was the update making?  Did you have any local modifications
in the working copy?  Is the error repeatable?

-- 
Philip


Re: SVN repo cross-platform compatibility

2011-10-26 Thread Philip Martin
Stefan Sperling  writes:

> With BDB repositories, it will not work, so you should dump/load.

Is that right?  According to the documentation:

http://download.oracle.com/docs/cd/E17076_02/html/gsg/C/databaseLimits.html

the BDB database files are portable.  I think the BDB environment files
are platform dependent, but they can be deleted/recreated on the new
platform by running recover.

-- 
Philip


Re: Assertion failed and crash with 1.7.1

2011-10-26 Thread Philip Martin
Attila Nagy  writes:

> I'm trying to update a working copy of some tens of GBs with svn 1.7.1

Did you upgrade with 1.7.0 or 1.7.1?

> $ svn up
> Updating '.':
> svn: E235000: In file 'subversion/libsvn_wc/update_editor.c' line
> 1582: assertion failed (action == svn_wc_conflict_action_edit ||
> action == svn_wc_conflict_action_delete || action ==
> svn_wc_conflict_action_replace)
> Abort (core dumped)

Can you show us a gdb stack trace?

How many working nodes do you have?
sqlite3 .svn/wc.db "select count (*) from nodes where op_depth > 0"

-- 
Philip


Re: Subversion Exception!

2011-10-26 Thread Philip Martin
"Schoenbrun, Jason"  writes:

> I got the same error twice - once the first time I was doing that
> checkout, and then again when I checked out on top of an existing
> working copy.
>
> I'm not sure if it was checking out externals at the time.

There is not much I can do with the information you have given so far.
Can you identify which part of your tree is causing the problem?  Does
it always happen in the same place?  What does the structure of files,
directories, externals look like?

-- 
Philip


Re: Subversion Exception!

2011-10-26 Thread Philip Martin
"Schoenbrun, Jason"  writes:

> We have a few directories under the main repository URL - "trunk"
> worked, but the problem occurred in "legacy". It happens each time (2x?
> 3x?) in the same place.

If you just checkout "legacy", or "legacy/foo", or "legacy/foo/bar",
does the problem still occur?

-- 
Philip


Re: Subversion Exception!

2011-10-26 Thread Philip Martin
"Schoenbrun, Jason"  writes:

> Yes, it happens in all 3 scenarios.
>
> -Original Message-----
> From: Philip Martin [mailto:philip.mar...@wandisco.com] 
> Sent: Wednesday, October 26, 2011 11:47 AM
> To: Schoenbrun, Jason
> Cc: users@subversion.apache.org
> Subject: Re: Subversion Exception!
>
> "Schoenbrun, Jason"  writes:
>
>> We have a few directories under the main repository URL - "trunk"
>> worked, but the problem occurred in "legacy". It happens each time
> (2x?
>> 3x?) in the same place.
>
> If you just checkout "legacy", or "legacy/foo", or "legacy/foo/bar",
> does the problem still occur?

So keep going, "legacy/foo/bar/zig/..." until you get the smallest
working copy that demonstrates the problem.  Describe the tree structure
of that working copy as fully as possible, the layout of files and
directories, any svn:externals.

Compare the repository tree:

svn ls -R URL

with the working copy tree:

ls -R wc   # or whatever the Windows equivalent is

What is the difference between the two trees?

I wonder if it could be some sort of case problem, or some special
filename that has special meaning on Windows?

-- 
Philip


Re: Assertion failed and crash with 1.7.1

2011-10-27 Thread Philip Martin
Attila Nagy  writes:

> On 10/26/11 15:37, Philip Martin wrote:
>> Attila Nagy  writes:
>>
>>> I'm trying to update a working copy of some tens of GBs with svn 1.7.1
>> Did you upgrade with 1.7.0 or 1.7.1?
> I've upgraded the WC with 1.7.0, then switched to 1.7.1, which I'm
> currently using.
> The upgrade took nearly one week (I can't afford a clean checkout,
> because I have to preserve the files' inode numbers), at the start it
> was running very fast, and at the end of the week it could print a new
> directory in every 8-10 seconds, while the svn processes CPU usage was
> 100%.
> The disks weren't touched, it seems that even with a database
> completely in the OS's buffer cache the SQL operations are pretty slow
> with a lot of files.
> Could it be because some indexes are missing (or not optimized for
> this amount of files), or it is what we could get from SQLite?

There is one query/index fix in 1.7.1 but it doesn't affect upgrade.

I've not upgraded a wc as large as yours but I have just upgraded a 5GB
working copy on my desktop machine (3 years old, not hugely powerful).
It took about 45 minutes and used about 30 minutes of CPU.  There wasn't
any noticeable slowdown as the update proceeded.

I see that you are using Fibre Channel storage, perhaps there is an
SQLite issue there?  What sort of filesystem are you using?

-- 
Philip


Re: Error when updating

2011-10-27 Thread Philip Martin
Wabe W  writes:

> I also tried a checkout of a(n existing) repository to a different
> location. I get the same error message when I try to update.

This is reproducible?  You checkout some revision R1 and update to R2
and see the error?

Can you describe the changes between R1 and R2?

Is there a single revision that causes the problem: checkout R1 and
update revision by revision to R2 to determine when the error occurs.

> Maybe it is like this because our SVN server has not yet been upgraded to 1.7.
> Although release notes say:

> "Older clients and servers interoperate transparently with 1.7
> servers and clients.  However, some of the new 1.7 features 
> may
> not be available unless both client and server are the latest 
> version.  There are also cases where a new feature will work 
> but will run less efficiently if the client is new and the 
> server old."

> It seems to me that SVN Update is not a 'new feature' and, therefore,
> it should work, right?  (Anyway, I will request an update of our
> server.)  Regards,

The server version should be irrelevant.

-- 
Philip


Re: Assertion failed and crash with 1.7.1

2011-10-27 Thread Philip Martin
Mark Phippard  writes:

> I would imagine svn upgrade is almost entirely writes and I recall it does
> quite a few transactions.  So couldn't the linear slow down just be based on
> the growth in the amount of bytes that are written to disk each time?

Yes, number of transactions matters a lot.  However upgrade is a special
case that runs in a single SQLite transaction as this makes most
upgrades faster.  Maybe for really large upgrades the huge transaction
is a problem?  My 100,000 node working copy upgrades in 45 minutes.

Upgrade does a number of read queries as well as writes, but all within
the same transaction.

-- 
Philip


Re: tortoise 1.7 - error on repository manipulation

2011-10-28 Thread Philip Martin
Erwane Breton  writes:

> On my client (windows 7 x64 tortoise SVN), i CAN commit with Tortoise
> 1.6.15 on my laptop but i CAN'T commit (or rename or delete) on my
> other computer with tortoise 1.7.1.22161
>
> The error is always the same
>
>> Commit
>> Commit failed (details follow):
>> '/svn/site/*!svn/me*' path not found

>> [Thu Oct 27 14:59:00 2011] [debug] mod_deflate.c(615): [client
>> 82.226.xxx.xxx] Zlib: Compressed 484 to 354 : URL
>> /svn/site/*!svn/me*

That's a v2 protocol problem.  The v2 protocol is only used when both
client and server are 1.7.  If you add "SVNAdvertiseV2Protocol off" to
the 1.7 Apache config file then clients should use the v1 protocol.

Do the error messages really have two '*' characters in the URL or is
that an email artifact?

Is your 1.7 server a write-through proxy to a 1.6 master?  That won't
work unless you disable the v2 protocol because the 1.6 master will not
understand the v2 protocol.

Is there some proxy or filter between the client and server that is
corrupting the ULR?

-- 
Philip


Re: Assertion failed and crash with 1.7.1

2011-10-28 Thread Philip Martin
Attila Nagy  writes:

> ZFS.
> It it worth to make benchmarks with this WC with 1.6 and 1.7? I so, I
> can try to find the time for it.

There are some reports that a mismatch between SQLite page size and ZFS
block size can cause performance problems and that better performance is
obtained when they match:

http://osdir.com/ml/sqlite-users/2010-10/msg00582.html
http://www.mail-archive.com/zfs-discuss@opensolaris.org/msg20395.html

If you build Subversion from source we could try changing the SQLite
page size.

-- 
Philip


Re: update --depth=empty ignored since 1.7

2011-10-28 Thread Philip Martin
Mojca Miklavec  writes:

> I'm experiencing some weird behaviour with SVN 1.7. The following
> sequence of commands fails to respect --depth=empty:
>    svn co --depth=empty http://foundry.supelec.fr/svn/metapost
>    svn up --depth=empty metapost/tags
>
> (you can use 'anonymous' as a username) The first command runs fine,
> but the second one starts fetching all tags. If I try to open
> repository in web browser, it reports that the server is using SVN
> 1.4.2 (r22196) which is a bit old, but with SVN 1.6.16 the same
> sequence of commands worked fine - depth=empty seems to be respected.

That certainly looks like a 1.7 bug, I've raised issue 4046

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

-- 
Philip


Re: Error when updating

2011-11-01 Thread Philip Martin
Wabe W  writes:

>> This is reproducible?  You checkout some revision R1 and update to R2
>> and see the error?
>> 
>> Can you describe the changes between R1 and R2?
>
> I just did a checkout of the latest revision of the repository. So, if
> I click update the chances are large that there is no newer revision.
> But whether there is new revision or not, this doesn't influence the
> fail of the update.

The error you report is:

 
'D:\Development\SVN\Releases\TortoiseSVN-1.7.0\ext\subversion\subversion\libsvn_wc\wc_db.c'
 line 11039: assertion failed (base_status == svn_wc__db_status_incomplete)

That happens inside the function end_directory_update, which is called
from close_edit only if the editor didn't open the root.  You report
that it doesn't happen immediately after a commit and that makes sense
since the commit will likely leave a mixed revision working copy so the
update will not run this bit of code.

I'm surprised it happens when the update makes changes to the working
copy, I can't see how close_edit is called in that case.

You report that a commit makes the next update work.  Does an update
after the successful update work?

Which Subversion protocol are you using (http:, https:, svn:, file:)?
I assume you are using some sort of server.  Which version of Subversion
is the server running?  Is it a googlecode server?  Are you using serf
or neon?

-- 
Philip


Re: Error when updating

2011-11-01 Thread Philip Martin
Philip Martin  writes:

> I'm surprised it happens when the update makes changes to the working
> copy, I can't see how close_edit is called in that case.

Oops!  I meant to say I can't see how end_directory_update is called.

-- 
Philip


Re: subversion questions

2011-11-01 Thread Philip Martin
Nrupen Kantamneni  writes:

> Now from my mobile browser, I should be able to upload a document to
> the server after downloading the file and making changes. That would
> be more convenient for me to manage the files from where ever I am.
> Hope I am clear in clarifying my use model

Perhaps autoversioning:
http://svnbook.red-bean.com/nightly/en/svn.webdav.autoversioning.html

-- 
Philip


Re: Apparent "svn rm" scaling problem in 1.7.x

2011-11-01 Thread Philip Martin
Stefan Sperling  writes:

> On Tue, Nov 01, 2011 at 11:31:35AM -0600, michael_rytt...@agilent.com wrote:
> Note that I am not going to commit this as is.
> It just tests whether the overhead of sorting paths in sqlite matters
> much on NFS.
>
> Index: subversion/libsvn_wc/wc-queries.sql
> ===
> --- subversion/libsvn_wc/wc-queries.sql   (revision 1196149)
> +++ subversion/libsvn_wc/wc-queries.sql   (working copy)
> @@ -1208,7 +1208,6 @@ WHERE wc_id = ?1
>  
>  -- STMT_SELECT_DELETE_LIST
>  SELECT local_relpath FROM delete_list
> -ORDER BY local_relpath
>  
>  -- STMT_FINALIZE_DELETE
>  DROP TABLE IF EXISTS delete_list

I put in the ORDER BY to preserve the parents before children
notification used by 1.6.  I wonder if that notification order is
important?

A patch that we could commit without affecting the order is:

Index: subversion/libsvn_wc/wc-queries.sql
===
--- subversion/libsvn_wc/wc-queries.sql (revision 1196106)
+++ subversion/libsvn_wc/wc-queries.sql (working copy)
@@ -1193,7 +1193,7 @@
 CREATE TEMPORARY TABLE delete_list (
 /* ### we should put the wc_id in here in case a delete spans multiple
### working copies. queries, etc will need to be adjusted.  */
-   local_relpath TEXT PRIMARY KEY NOT NULL
+   local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE
)
 
 /* This matches the selection in STMT_INSERT_DELETE_FROM_NODE_RECURSIVE */

-- 
Philip


Re: Apparent "svn rm" scaling problem in 1.7.x

2011-11-01 Thread Philip Martin
Stefan Sperling  writes:

> On Tue, Nov 01, 2011 at 06:29:59PM +0000, Philip Martin wrote:
>> I put in the ORDER BY to preserve the parents before children
>> notification used by 1.6.  I wonder if that notification order is
>> important?
>
> See r1196191.
> It should preserve the 1.6.x order (via svn_path_compare_paths()).
>
>> A patch that we could commit without affecting the order is:
>> 
>> Index: subversion/libsvn_wc/wc-queries.sql
>> ===
>> --- subversion/libsvn_wc/wc-queries.sql  (revision 1196106)
>> +++ subversion/libsvn_wc/wc-queries.sql  (working copy)
>> @@ -1193,7 +1193,7 @@
>>  CREATE TEMPORARY TABLE delete_list (
>>  /* ### we should put the wc_id in here in case a delete spans multiple
>> ### working copies. queries, etc will need to be adjusted.  */
>> -   local_relpath TEXT PRIMARY KEY NOT NULL
>> +   local_relpath TEXT PRIMARY KEY NOT NULL UNIQUE
>> )
>
> Interesting. Can you explain why this doesn't affect order?

Because I retained ORDER BY in the select statement.

> I guess this works because there is only one column in the table?
> Do UNIQUE columns happen to be inserted, or selected, in sorted order?

UNIQUE simple means that an index is created so the ORDER BY is fast.

-- 
Philip


Re: Error when updating

2011-11-02 Thread Philip Martin
Wabe W  writes:

>> I assume you are using some sort of server.  Which version of Subversion
>> is the server running?  

> It is 1.0.8 (2004)

That's old (very old) and unsupported.  The client should still work but
I haven't built or used 1.0.x for years.

>>Is it a googlecode server?  Are you using serf or neon?

> I sent the person that runs the server an e-mail regarding these questions.
> It is a Linux server, that I know.

It won't be a googlecode server.  serf/neon is a client question.

-- 
Philip


Re: svn 1.7.1 for Windows/64bit - cannot perform svn update

2011-11-03 Thread Philip Martin
Tomáš Klinkovský  writes:

> starting from svn 1.7 I cannot make "svn update" anymore on Windows 7,
> 64bit.
>
> C:\Users\tomas\Documents\xxx>svn --version
> svn, version 1.7.1-SlikSvn-1.7.1-X64 (SlikSvn/1.7.1) X64
>   compiled Oct 26 2011, 14:18:24
>
> C:\Users\tomas\Documents\xxx>svn update
> Updating '.':
> svn: E235000: In file '..\..\..\subversion\libsvn_wc\wc_db.c' line 11039:
>   assertion failed (base_status == svn_wc__db_status_incomplete)
>
> This problem is there even if I make a fresh checkout and then update.

What version of mod_dav_svn is server using?  This has been reported to
happen when the server is running the very old 1.0.8 mod_dav_svn.

-- 
Philip


Re: svn 1.7.1 for Windows/64bit - cannot perform svn update

2011-11-03 Thread Philip Martin
Tomáš Klinkovský  writes:

> My server is also very old:
>
> $ svn --version
> svn, version 1.0.9 (r11378)
>   compiled Oct 14 2004, 10:04:20
>
> But I don't access it through Apache, I have the Subversion daemon
> running and I use the "svn:" protocol.
>
> Can I provide any other help?

I can reproduce the error. I've raised issue 4048:

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

-- 
Philip


Re: Error when updating

2011-11-03 Thread Philip Martin
Wabe W  writes:

> So, we just have to update the server and see if the problem is solved?

It's issue 4048, it may get fixed in a 1.7.x release:
http://subversion.tigris.org/issues/show_bug.cgi?id=4048

-- 
Philip


Re: mod_dav_svn and Apache directive

2011-11-05 Thread Philip Martin
Michaël Bruneel  writes:

> 
>   DAV svn
>   SVNPath /srv/svnroot/myproject
> 

Given  and an URL '/foo/bar/zig/zag' mod_dav_svn
treats '/foo/bar' as the path to the repository and '/zig/zag' as the
path inside the repository.

How would you Location work?  Where does '/foo/bar/zig/zag' get divided?

-- 
Philip


Re: Subversion repository config problem

2011-11-09 Thread Philip Martin
"Tony Butt"  writes:

> On Tue, 2011-11-08 at 13:50 +0200, Daniel Shahaf wrote:
>> Tony Butt wrote on Tue, Nov 08, 2011 at 15:07:55 +1100:
>> > I tried to edit the log message of a commit made with svn+ssh://, using
>> > http:// access, and failed. Now the strange thing, after changing a
>> > different commit message for a test (using http:// access only,
>> > successsfully), drafting this email, and re-checking the revprops file
>> > in question, it was now owned by www-data - the apache user.
>> > 
>> 
>> We make rev files read only intentionally.  I don't remember offhand
>> how revprop files would be affected, but in any case those are never
>> changed either --- we only ever rename(2) new versions on top of old
>> ones.
>> 
>> And, anyway, I really don't understand your bottom line.  Are you saying
>> the new behaviour is non backwards compatible?  That it should be
>> changed?  Or just that it's surprising?
> The new behaviour is slightly different, and slightly incompatible in
> our corner case. It was more surprising than anything else, and I wanted
> to check that I didn't need to tweak the repository config in some way
> to allow for this - possibly some subtlety with umasks that I was not
> aware of.

The fact that the files are read-only should have no effect on
Subversion operations.  It should be possible to use svn+ssh and http
access simulataneously provided the repository Unix permissions are
correct:
http://svnbook.red-bean.com/nightly/en/svn-book.html#svn.serverconfig.multimethod

-- 
Philip


Re: [1.7.1] UUID error replacing local file with file external

2011-11-09 Thread Philip Martin
Neil Bird  writes:

>   Am I just doing something wrong?

You are trying to make a file external point to a file in a different
repository, that is not supported.

-- 
Philip


Re: Checkout including externals is getting the head revision instead of specified one

2011-11-10 Thread Philip Martin
Bastian Holtermann / SOREL GmbH  writes:

> I got the problem that when I checkout some code that is using
> externals with a special specified revision of that external to be
> checked out svn checks out the head revision in stead of the specified
> revision number.

Agreed, that is a bug.  I've raised issue 4053:

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

-- 
Philip


Re: Error found

2011-11-10 Thread Philip Martin
Ulrich Eckhardt  writes:

> Am 10.11.2011 10:07, schrieb JESUS LUNAR PEREZ:
>> Please take the time to report this on the Subversion mailing list
>> with
>> as much information as possible about what you were trying to do.
>   
>
>> But please
>> first search the mailing list archives for the error message
>   
>
> Please consider those two parts of the quest, too. Without knowing
> what you did, there is no way for a developer to reproduce the error,
> unless they happen to come across it by chance. Reporting a known
> error over and over without adding any information is only causing
> useless work and not getting any bugs fixed.

Indeed.  It looks like issue

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

but with the limited information provided we can only guess.

-- 
Philip


Re: merge problem. impossible to revert deleted file

2011-11-10 Thread Philip Martin
Gunnar Dalsnes  writes:

> REM change this to the dir you are running the script from
> set wd=c:/temp/test
>
> svnadmin create repo
>
> svn mkdir file:///%wd%/repo/trunk -m test
>
> svn co file:///%wd%/repo/trunk trunk1
> svn co file:///%wd%/repo/trunk trunk2

trunk2 is an empty directory at r1

>
> svn copy trunk1 file:///%wd%/repo/branch -m branch
>
> svn co file:///%wd%/repo/branch branch
>
> pushd branch
> md dir1
> pushd dir1
> echo > file2.txt
> popd
> svn add *
> svn commit -m test
>
> popd
>
> pushd trunk1
> svn update
> md dir1
> pushd dir1
> echo > file1.txt
> popd
> svn add *
> svn commit -m test
>
> popd
>
> pushd trunk2
>
> svn merge file:///%wd%/repo/branch@4
>
> REM tree conflict
>
> svn resolve --accept=working dir1

Did you miss a step?  trunk2 is still an empty directory at r1, how can
that cause a conflict.

>
> svn up
>
> REM Updating '.':
> REMA dir1\file1.txt
>
> REM It says dir1\file1.txt is added, but it's nowhere to be seen
> dir dir1
> svn status dir1
>
> svn resolve --accept=working dir1
> svn revert dir1\file1.txt
>
> REM Nope, file is still deleted. Impossible to undelete it.
> popd
>
> popd
>
> ---end script---
>
>
> Another small issue:
> svn merge don't seem to like backslash in file urls:
> C:\temp\test\trunk2>svn merge file:///C:\temp\test\trunk2/repo/branch@4
> svn: E180001: Unable to connect to a repository at URL
> file:///C:%5Ctemp%5Ctest
> %5Ctrunk2/repo/branch'
> svn: E180001: Unable to open an ra_local session to URL
> svn: E180001: Unable to open repository
> file:///C:%5Ctemp%5Ctest%5Ctrunk2/repo/
> branch'
>
> Otoh, svn co and svn mkdir etc. seems to work with backslash in file urls.
>
>
> thanks,
> Gunnar Dalsnes
>

-- 
Philip


Re: WC database corruption (1.7.1)

2011-11-10 Thread Philip Martin
Neil Bird  writes:

>   Having just done a couple of commits (after an update), I did some
> work on a file then went to commit again (no 2nd. update) and
> TortoiseSVN reported no changes.
>
>   A command line 'svn status .' is giving me:
>
> svn: E200030: database disk image is malformed
> svn: E200030: database disk image is malformed
>
>   Er.  Can I recover from this?  Do you want any diagnostics from it
> (the SQLite d/b)?

Never seen that before.  If you have the sqlite3 tool then you can try

sqlite3 .svn/wc.db "pragma integrity_check"

which may give more information.

-- 
Philip


Re: WC database corruption (1.7.1)

2011-11-10 Thread Philip Martin
Neil Bird  writes:

> "*** in database main ***
> On tree page 40898 cell 60: 2nd reference to page 325
> On tree page 40898 cell 60: Child page depth differs
> On tree page 40898 cell 61: Child page depth differs"
> "rowid 14277 missing from index sqlite_autoindex_PRISTINE_1"
> "rowid 14278 missing from index sqlite_autoindex_PRISTINE_1"
> "wrong # of entries in index sqlite_autoindex_PRISTINE_1"
> "rowid 45935 missing from index I_NODES_PARENT"
> "rowid 45935 missing from index sqlite_autoindex_NODES_1"
> "rowid 45936 missing from index I_NODES_PARENT"
> "rowid 45936 missing from index sqlite_autoindex_NODES_1"
> "rowid 469 missing from index I_NODES_PARENT"
> "rowid 469 missing from index sqlite_autoindex_NODES_1"
> "rowid 470 missing from index I_NODES_PARENT"
> "rowid 470 missing from index sqlite_autoindex_NODES_1"
> "rowid 471 missing from index I_NODES_PARENT"
> "rowid 471 missing from index sqlite_autoindex_NODES_1"
> "rowid 472 missing from index I_NODES_PARENT"
> "rowid 472 missing from index sqlite_autoindex_NODES_1"
> "wrong # of entries in index I_NODES_PARENT"
> "wrong # of entries in index sqlite_autoindex_NODES_1"

Interesting!  I've never seen a corrupt SQLite database before.  It
seems as if the corruption is restricted to the indices so it may be
recoverable.

It may be as simple as

sqlite .svn/wc.db "reindex nodes"
sqlite .svn/wc.db "reindex pristine"

but I don't know if that will work.  If it doesn't then it may be
possible to copy, drop, replace the tables.  This may not work either as
the index corruption may simply be the visible effect of larger
corruption.

sqlite3 .svn/wc.db "select sql from sqlite_master where name='NODES'"
sqlite3 .svn/wc.db "select sql from sqlite_master where name='I_NODES_PARENT'"

will show you the SQL for the table and index that need to be recreated.

Make a backup copy of wc.db before going further!

Create a duplicate table NODES_COPY:

sqlite3 .svn/wc.db "CREATE TABLE NODES_COPY (   wc_id  INTEGER NOT NULL 
REFERENCES WCROOT (id),   local_relpath  TEXT NOT NULL,   op_depth INTEGER NOT 
NULL,   parent_relpath  TEXT,   repos_id  INTEGER REFERENCES REPOSITORY (id),   
repos_path  TEXT,   revision  INTEGER,   presence TEXT NOT NULL,   moved_here  
INTEGER,   moved_to  TEXT,   kind  TEXT NOT NULL,   properties  BLOB,   depth  
TEXT,   checksum  TEXT REFERENCES PRISTINE (checksum),   symlink_target  TEXT,  
 changed_revision INTEGER,   changed_date  INTEGER, changed_author
TEXT, translated_size  INTEGER,   last_mod_time  INTEGER, dav_cache  BLOB, 
file_external  TEXT,   PRIMARY KEY (wc_id, local_relpath, op_depth)   )"

Copy NODES into NODES_COPY

sqlite3 .svn/wc.db "insert into NODES_COPY select * from NODES"

Drop and recreate NODES:

sqlite3 .svn/wc.db "drop table NODES"

sqlite3 .svn/wc.db "CREATE TABLE NODES (   wc_id  INTEGER NOT NULL REFERENCES 
WCROOT (id),   local_relpath  TEXT NOT NULL,   op_depth INTEGER NOT NULL,   
parent_relpath  TEXT,   repos_id  INTEGER REFERENCES REPOSITORY (id),   
repos_path  TEXT,   revision  INTEGER,   presence TEXT NOT NULL,   moved_here  
INTEGER,   moved_to  TEXT,   kind  TEXT NOT NULL,   properties  BLOB,   depth  
TEXT,   checksum  TEXT REFERENCES PRISTINE (checksum),   symlink_target  TEXT,  
 changed_revision INTEGER,   changed_date  INTEGER, changed_author
TEXT, translated_size  INTEGER,   last_mod_time  INTEGER, dav_cache  BLOB, 
file_external  TEXT,   PRIMARY KEY (wc_id, local_relpath, op_depth)   )"

sqlite3 .svn/wc.db "create index I_NODES_PARENT on NODES (wc_id, 
parent_relpath, op_depth)"

Copy NODES_COPY into NODES:

sqlite3 .svn/wc.db "insert into NODES select * from NODES_COPY"

Drop table NODES_COPY:

sqlite3 .svn/wc.db "drop table NODES_COPY"

Then you need to do something similar for PRISTINE, although this time
there is no extra index:

sqlite3 .svn/wc.db "select sql from sqlite_master where name='PRISTINE'"

Create PRISTINE_COPY
Copy PRISTINE into PRISTINE_COPY
Drop and recreate PRISTINE
Copy PRISTINE_COPY into PRISTINE
Drop PRISTINE_COPY

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-10 Thread Philip Martin
"Jens Geyer"  writes:

> I can confirm that.
> Deleting is only possible if the user has write permnissions on the
> ENTIRE path.
>
>   / top/subdir/mypath
>
> In order to delete mypath, the user needs write permission on
>
>   /
>   /top/subdir
>   /top/subdir
>   /top/subdir/mypath
>
> With an 1.6.x server, write access to /top and above were not necessary.
>
> I could not find any documentation about this changed behavior. Next, it
> is not really what we want. I don't want to give all users write access
> on the entire tree up to the rootfolder just to enable them to svn
> delete their own files and folders.

I can't reproduce this, or your other authz problem, on my Linux
machine:

$ cat repo/conf/svnserve.conf
[general]
auth-access = write
anon-access =
password-db = passwd
authz-db = authz

$ cat repo/conf/authz
[/A/B]
pm = rw
[/]
* = r

$ svn ls -R --username pm svn://localhost/repo
A/
A/B/
X/
X/Y/

$ svn cp -mm --username pm svn://localhost/repo/X/Y svn://localhost/repo/A/B/C
Committed revision 12.

$ svn rm -mm --username pm svn://localhost/repo/A/B/C
Committed revision 13.

$ svn rm -mm --username pm svn://localhost/repo/A/B
svn: E220004: Access denied

$ svn cp -mm --username pm svn://localhost/repo/X/Y svn://localhost/repo/A/C
svn: E220004: Access denied


I wonder if there is an upper/lower case problem somewehere in your
authz file?  Or perhaps in the Subversion authz code?

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-10 Thread Philip Martin
Stefan Sperling  writes:

> On Thu, Nov 10, 2011 at 05:25:27PM +0000, Philip Martin wrote:
>> I wonder if there is an upper/lower case problem somewehere in your
>> authz file?  Or perhaps in the Subversion authz code?
>
> If so, this is likely due to the change in case-awareness we made in 1.7:
> file:///home/stsp/svn/svn-site/publish/docs/release-notes/1.7.html#case-sensitive-authz

http://subversion.apache.org/docs/release-notes/1.7.html#case-sensitive-authz

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-11 Thread Philip Martin
Bostjan Skufca  writes:

> Well, in my case, it is all lower-case all the time. Is there any other way
> to double check this? I checked with "svn ls ..." every component of path
> to be lower case, and it was. authz file is also in lower case completely.
> Still, delete as described before does not work.

Here is a working setup on my system:

svnadmin create repo
svn mkdir -mm --parents file://$PWD/repo/A/B
svn mkdir -mm --parents file://$PWD/repo/X/Y
cat - > repo/conf/svnserve.conf < repo/conf/passwd < repo/conf/authz <

Re: svn copy doesn't honour "--quiet" in 1.7.1 ??

2011-11-11 Thread Philip Martin
"Zibetti Paolo"  writes:

> With Subversion version 1.6.x, I could add the "--quiet" switch to the
> "svn copy" command to suppress all output in case the command succeeds.
>
> With Subversion version 1.7.1 "svn copy --quiet ..."  always prints
> informational messages such as "Committed revision 42."
> Other commands such as "svn commit", on the contrary, honour the
> "-quiet" switch as expected.
>
> Is this an intended behaviour or a bug ?

That looks like an unintended change in behaviour.  I don't see any
discussion around the time the change (r988627) was made.

-- 
Philip


Re: merge problem. impossible to revert deleted file

2011-11-11 Thread Philip Martin
Gunnar Dalsnes  writes:

>>>
>>> REM tree conflict
>>>
>>> svn resolve --accept=working dir1
>> Did you miss a step?
> No, nothing is missed, but it seems this line is useless (but
> harmless). The problem appears regardless.
>>   trunk2 is still an empty directory at r1, how can
>> that cause a conflict.
> Yes, just ignore that line.

I thought that was the conflict you were complaining about. I
misunderstood your email.

>>> svn up
>>>
>>> REM Updating '.':
>>> REMA dir1\file1.txt
>>>
>>> REM It says dir1\file1.txt is added, but it's nowhere to be seen
>>> dir dir1
>>> svn status dir1
>>>
>>> svn resolve --accept=working dir1
>>> svn revert dir1\file1.txt
>>>
>>> REM Nope, file is still deleted. Impossible to undelete it.

So here's my simple version:

svnadmin create repo
svn mkdir -mm file://`pwd`/repo/T
svn cp -mm file://`pwd`/repo/T ^/B
svn mkdir -mm file://`pwd`/repo/T/D
svn mkdir -mm file://`pwd`/repo/B/D
svn import -mm repo/format file://`pwd`/repo/B/D/f
svn co file://`pwd`/repo/B@2 wc
svn merge ^/T wc
svn up wc
svn st wc

What I see is:

svn st wc
 M  wc
R  +  C wc/D
  >   local add, incoming add upon update
D   wc/D/f
Summary of conflicts:
  Tree conflicts: 1

The merge creates an added directory wc/D (copied from /T/D in the
repo).  This conflicts with the directory D added by the update (which
is /X/B in the repo) so a tree conflict is created. Note that wc/D is
marked as replaced. After accepting the working state:

svn resolve --accept working wc/D

I see:

svn st wc
 M  wc
R  +wc/D
D   wc/D/f

This is equivalent (ignoring the mergeinfo property) to

svn co file://`pwd`/repo/B
svn rm wc/D
svn cp ^/T/D wc/D

You can't revert wc/D/f without reverting the replace of wc/D.

-- 
Philip


Re: merge problem. impossible to revert deleted file

2011-11-11 Thread Philip Martin
Philip Martin  writes:

> The merge creates an added directory wc/D (copied from /T/D in the
> repo).  This conflicts with the directory D added by the update (which
> is /X/B in the repo) so a tree conflict is created. Note that wc/D is

Typo: /X/B should be /B/D.

> marked as replaced.

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-14 Thread Philip Martin
Bostjan Skufca  writes:

> Nope, first step already fails (commit 3) if there are "[/]\n* = r" lines
> present in authz file.
>
> It works if I create authz file like this (note the usage of rw everywhere):
> [/A/B]
> pm = rw
>
> [/X/Y]
> pm = rw
> -
>
>
> It DOES NOTwork if I create authz file like this:
> [/A/B]
> pm = rw
>
> [/X/Y]
> pm = r
> -
>
>
> Any further ideas?

Use "--log-file log.txt" when you start svnserve and then try the
failing copy.  On my Linux machine with:

$ cat repo/conf/authz
[/A/B]
pm = rw
[/]
pm = r

$ svn cp -mm svn://localhost/repo/X svn://localhost/repo/A/B/C
Committed revision 22

$ cat log.txt
9486 2011-11-14T09:48:08.909530Z 127.0.0.1 - repo open 2 cap=(edit-pipeline 
svndiff1 absent-entries depth mergeinfo log-revprops) /X/Y SVN/1.7.1-dev -
9486 2011-11-14T09:48:08.910096Z 127.0.0.1 - repo get-latest-rev
9486 2011-11-14T09:48:08.910211Z 127.0.0.1 - repo get-latest-rev
9486 2011-11-14T09:48:08.910339Z 127.0.0.1 - repo get-mergeinfo (/X/Y) inherited
9486 2011-11-14T09:48:08.910587Z 127.0.0.1 - repo reparent /X/Y
9486 2011-11-14T09:48:08.910675Z 127.0.0.1 - repo reparent /A/B
9486 2011-11-14T09:48:08.910743Z 127.0.0.1 - repo reparent /X/Y
9486 2011-11-14T09:48:08.911190Z 127.0.0.1 pm repo check-path /X/Y@21
9486 2011-11-14T09:48:08.911633Z 127.0.0.1 pm repo reparent /A/B
9486 2011-11-14T09:48:08.911712Z 127.0.0.1 pm repo check-path /A/B/C@21
9486 2011-11-14T09:48:08.930591Z 127.0.0.1 pm repo commit r22


-- 
Philip


Re: mod_dav_svn and Apache directive

2011-11-14 Thread Philip Martin
Michaël Bruneel  writes:

>   IMHO, given  and URL '/', mod_dav_svn
> should be able to understand the regular expression and treat '/' as
> both the path to the repository and the path inside the repository. It
> should not use raw '(?!viewvc)' data as it does now.

That's only one case out of many. What about things like?







Take that last one: "/foo/bar/zig/zag" matches "/foo/(?!xxx)/zig" but
what is the path to the repository and what is the path inside the
repository?

What about SVNParentPath?

Are multiple regepxs allowed?



Which things should be supported?  How should they behave?  What is the
advantage of supporting them?

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-14 Thread Philip Martin
Bostjan Skufca  writes:

> On error, this is the log:
> --
> 32537 2011-11-14T11:27:47.115320Z - testuser1 svn open 2 cap=(edit-pipeline
> svndiff1 absent-entries depth mergeinfo log-revprops) /X/Y SVN/1.7.1 -
> 32558 2011-11-14T11:27:52.216951Z - testuser1 svn open 2 cap=(edit-pipeline
> svndiff1 absent-entries depth mergeinfo log-revprops) /X/Y SVN/1.7.1 -
> 32558 2011-11-14T11:27:52.217898Z - testuser1 svn get-latest-rev
> 32558 2011-11-14T11:27:52.218009Z - testuser1 svn get-latest-rev
> 32558 2011-11-14T11:27:52.218086Z - testuser1 svn get-mergeinfo (/X/Y)
> inherited
> 32558 2011-11-14T11:27:52.238038Z - testuser1 svn reparent /X/Y
> 32558 2011-11-14T11:27:52.238109Z - testuser1 svn reparent /A/B
> 32558 2011-11-14T11:27:52.238140Z - testuser1 svn reparent /X/Y
> 32558 2011-11-14T11:27:52.238178Z - testuser1 svn check-path /X/Y@19
> 32558 2011-11-14T11:27:52.238221Z - testuser1 svn reparent /A/B
> 32558 2011-11-14T11:27:52.238256Z - testuser1 svn check-path /A/B/E@19
> ----------
>
> On 14 November 2011 10:49, Philip Martin  wrote:
>
>> Bostjan Skufca  writes:
>>
>> > Nope, first step already fails (commit 3) if there are "[/]\n* = r" lines
>> > present in authz file.
>> >
>> > It works if I create authz file like this (note the usage of rw
>> everywhere):
>> > [/A/B]
>> > pm = rw
>> >
>> > [/X/Y]
>> > pm = rw
>> > -
>> >
>> >
>> > It DOES NOTwork if I create authz file like this:
>> > [/A/B]
>> > pm = rw
>> >
>> > [/X/Y]
>> > pm = r
>> > -

Your errorlog shows the username "testuser1" but the authz file uses the
username "pm".

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-14 Thread Philip Martin
Bostjan Skufca  writes:

> Authz is correct, I just changed pm to testuser1 because user already
> existed and because it is bad to use auth credentials which have been sent
> to mailing list on a public server:)

But it makes it harder for us to work out whether you are doing things
correctly.  I installed Subversion 1.7.1 on my Windows box and the setup
I showed works properly.  I expect you have made a mistake with a
username or path, but since you made arbitrary changes it's hard to say.
Perhaps you could zip up a test repository that shows the problem and
make it available?

-- 
Philip


Re: line 1310: assertion failed

2011-11-14 Thread Philip Martin
vincze béla  writes:

> using tortoise svn 1.7.1.22161 64bit on Win7. on updating a certain
> folder, i've got the following crash message:
>
> In file
>
> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.1\ext\subversion\subversion\libsvn_wc\update_editor.c'
>  line 1310: assertion failed (added_status == svn_wc__db_status_added ||
>  added_status == svn_wc__db_status_copied || added_status ==
>  svn_wc__db_status_moved_here)
>
> also tried the latest nightly build (1.7.99.22265), with the very same
> result. any suggestions are welcome on how to fix the problem.

Not seen that particular error message before. Is this a working copy
that was checked out using the 1.7 client or was it checked out using a
1.6 client and upgraded?  If it was upgraded was it upgraded using 1.7.0
or 1.7.1?

-- 
Philip


Re: AW: Unable to delete directory in repository, server version 1.7.1

2011-11-14 Thread Philip Martin
Bostjan Skufca  writes:

> This does not work:
>
> svn cp svn://127.0.0.1/X/Y ^/A/B/C -m Test
> Authentication realm:  Test repo
> Password for 'testuser1':
> svn: E220004: Access denied

The difference is that you are doing:

svnserve -dr svn
svn cp svn:/localhost/X/Y ^/A/B/C

while my example was:

svnserve -dr .
svn cp svn://localhost/svn/X/Y ^/A/B/C

It's got nothing to do with the authz files or the OS, it's how you
invoke svnserve.  I've raised issue 4060:

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

-- 
Philip


Re: 1.7.1, Build 22161 line 672: assertion failed (checksum != NULL)

2011-11-15 Thread Philip Martin
Ethan Bradford  writes:

> I upgraded a tree from 1.6.x directly to 1.7.1 and I'm getting this, so the
> bug (or a similar one) definitely persists.
>
> I've got very big trees, so checkouts take most of a day, so redoing the
> checkout isn't so convenient.

What did the 1.6 working copy look like?  Was it a sparse working copy?
Did it have any local modifications?  Any switched subdirectories?  Any
uncommitted moves, copies or deletes?

Do you have the sqlite3 tool available to query the 1.7 working copy?

sqlite3 .svn/wc.db "select count(*) from nodes where op_depth > 0"

-- 
Philip


Re: 1.7.1, Build 22161 line 672: assertion failed (checksum != NULL)

2011-11-15 Thread Philip Martin
Ethan Bradford  writes:

>> Do you have the sqlite3 tool available to query the 1.7 working copy?
>>
>> sqlite3 .svn/wc.db "select count(*) from nodes where op_depth > 0"
>>
>
> I installed sqlite3 to check this.  The answer it gets is 0.

Fine. Next:

sqlite3 .svn/wc.db "select * from work_queue"

There may be multiple lines.  You should see something like:
6|(file-install A/f 1 0 1 1)

"A/f" is just an example, in your case it will be the path of a file in
your wc.  So

sqlite3 .svn/wc.db "select * from nodes where local_relpath='A/f'"

You may see a checksum like:

$sha1$7ab6a41b5d9bc8fad70cc0314c142c91feab4686

or it may be missing. If present:

sqlite3 .svn/wc.db "select * from pristine where checksum like 
'%ab6a41b5d9bc8fad70cc0314c142c91feab4686"

or 

sqlite3 .svn/wc.db "select * from pristine where 
checksum='\$sha1\$ab6a41b5d9bc8fad70cc0314c142c91feab4686"

they should be the same (one escapes the '$' characters, the other drops them).

-- 
Philip


Re: WC database corruption (1.7.1)

2011-11-15 Thread Philip Martin
Neil Bird  writes:

>> Copy NODES_COPY into NODES:
>> sqlite3 .svn/wc.db "insert into NODES select * from NODES_COPY"
>
>   Oops.  “Error: database disk image is malformed”.
>
>   Which is a bit odd, since we copied NODES to NODES_COPY OK, and have
> since re-created NODES!

Odd indeed.  Some sort of lazy, copy-on-write copy perhaps?  I think
that means that the corruption extends beyond the indices into the nodes
table, and that makes it very hard to recover.

-- 
Philip


Re: error report

2011-11-15 Thread Philip Martin
Frank Liu - Orite Group  writes:

> In file
>  
> 'D:\Development\SVN\Releases\TortoiseSVN-1.7.1\ext\subversion\subversion\libsvn_wc\workqueue.c'
>  line 672: assertion failed (checksum != NULL)

That's the same error as reported in this thread:

http://mail-archives.apache.org/mod_mbox/subversion-users/20.mbox/%3c87d3ctd7if@stat.home.lan%3E

so the same questions apply.

-- 
Philip


Re: 1.7.1, Build 22161 line 672: assertion failed (checksum != NULL)

2011-11-15 Thread Philip Martin
Ethan Bradford  writes:

>> sqlite3 .svn/wc.db "select * from work_queue"
>
> 3|(file-install 59
> DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED] 1 0 1 1)
>
>> sqlite3 .svn/wc.db  "select * from nodes where
> local_relpath='DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED]'"
>
> 1|DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED]|0|DBBuild/Wordlists/Belarusian|1|Trunk/DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED]|3936|normal|||file||infinity|||3323|1294867663142001|Erik.Larsson|504|1294985508149158||
>
> So there's no checksum (according to other entries, it would be the field
> just after "infinity").

That's very odd.  Do you know which version of Subversion is running on
the server?  Running something like "curl -D - REPO_URL" might help find
out.

Are there other files with no checksum?

sqlite3 .svn/wc.db "select count(*) from nodes where checksum is null and 
kind='file'"

If there are other files then is there any pattern in the filenames?
All in the same directory?  All modified in the same commit? etc.

sqlite3 .svn/wc.db "select local_relpath from nodes where checksum is null and 
kind='file'"


Can you describe the recent activity in the working copy?  Do you
normally update the whole working copy or do you update subtrees?  Did
you commit changes in the Belarusian directory just before the update?

The NODES row shows that the update was trying to install revision 3936
of the file.  The filename is "BelarusianForceFreq.txt[MOVED]"; has this
file been moved/copied within the repository?  The last modified
revision of the file is 3323, would you have committed that revision
from this working copy?

Do you know the revision before the update?  It's possible that you can
identify it using

sqlite3 .svn/wc.db "select revision from nodes where revision != 3936"

or perhaps

sqlite3 .svn/wc.db "select revision from nodes where 
parent_relpath='DBBuild/Wordlists/Belarusian'"

or perhaps you can guess the approximate revision based on dates?

If you can identify the (approx?) revision before the update then
running "svn log -vq URL" will allow you to see the sort of changes the
update would have been making.  I want to know what the update did to
this file, did it just modify the content of the file, or add the file,
or replace another file of the same name?  Perhaps the whole directory
was being added?

Thanks for your help so far!

-- 
Philip


Re: 1.7.1, Build 22161 line 672: assertion failed (checksum != NULL)

2011-11-15 Thread Philip Martin
Ethan Bradford  writes:

> I don't know what the server version is.  cURL won't accept  an svn: URL.

Ah! svnserve.  Then "telnet server.com 3690" will get the handshake
which will tell us something.

> Using the repo browser I can see the whole history.  There are just two
> versions of this file, none more recent than  3323.  I think  3936 is a red
> herring -- that was perhaps the tip revision for the whole repository when
> the update was attempted.  (The current tip is 4013.)

Yes.  3936 is the revision to which you were updating.

> I hate to confess to such absent mindedness, but I may have "svn delete"ed
> this file.  I see that I don't have a local copy of it, which supports that
> theory.  If I did that, I didn't commit the change -- the repository still
> has the file.

I'll have to think about that.  The nodes row was presence=normal.  I
wonder if the update was creating a tree conflict?  Unlikely if there
are no more recent changes than 3323.

sqlite3 .svn/wc.db "select tree_conflict_data from actual_node"

>> Thanks for your help so far!
>>
>
> I'm happy to help, and I appreciate your time.  Just to be clear, I
> wouldn't dream of taking so much of your time just to solve my local
> problem.  You're digging into this to figure out the bug with change to the
> 1.7.1 version (or maybe "svn update" within the 1.7.1 version), right?

Yes.

> Since I will likely need to do another checkout anyhow, I'm happy to try
> experiments which might be destructive to my local copy.

We may be able to recover it.  Please make a copy of the wc.db file
first.  The following instructions assume there is no tree conflict.

First we look at the workqueue, to confirm there is just one row.

sqlite3 .svn/wc.db "select * from work_queue"

Next look at the parent dir:

sqlite3 .svn/wc.db "select op_depth, local_relpath, presence from nodes where 
local_relpath='DBBuild/Wordlists/Belarusian'"

to confirm there is just one row with op-depth=0 and presence=normal or
presence=incomplete.  If the presence is something else then stop, the
instuctions below do not apply.

If presence is normal then set the parent dir to presence=incomplete:

sqlite3 .svn/wc.db "update nodes set presence='incomplete' where 
local_relpath='DBBuild/Wordlists/Belarusian'"

Now remove the corrupt file row:

sqlite3 .svn/wc.db "delete from nodes where 
local_relpath='DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED]'"
sqlite3 .svn/wc.db "delete from actual_node where 
local_relpath='DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED]'"

Remove the now unversioned file (except you say it doesn't exist so skip
this step).

rm 'DBBuild/Wordlists/Belarusian/BelarusianForceFreq.txt[MOVED]'

Remove the workqueue:

sqlite3 .svn/wc.db "delete from work_queue"

Run cleanup to remove locks:

svn cleanup

The working copy should be fixed; the next update will pull the missing
file.

-- 
Philip


Re: 1.7.1, Build 22161 line 672: assertion failed (checksum != NULL)

2011-11-16 Thread Philip Martin
Philip Martin  writes:

>> I hate to confess to such absent mindedness, but I may have "svn delete"ed
>> this file.  I see that I don't have a local copy of it, which supports that
>> theory.  If I did that, I didn't commit the change -- the repository still
>> has the file.
>
> I'll have to think about that.

This does explain some things.  The client is not adding or modifying
the file due to any change sent from server, it is merely restoring the
missing file from its own metadata.  That's a small step forward in
understanding the problem.

It's still not clear how the upgrade went wrong.  It's not as simple as
"svn rm file", "svn upgrade", "svn update" as that works (and would have
created an op_depth>0 nodes row that we didn't see in the very first
query you ran).

Perhaps it's something to do with the moved file?  Perhaps you did
something like:

   svn rm file-before-mv   # or perhaps a mv?
   # some other wc moves and commits the file
   svn update  # getting a delete/delete tree conflict
   svn resolved# or revert?
   rm file-after-mv# a non-svn rm
   svn upgrade

Perhaps you had two files with the same checksum (that's legitimate) and
that caused the upgrade to fail?  I'll experiment and see if I can
reproduce it.

-- 
Philip


Re: "Couldn't open rep-cache database" (post commit FS processing)

2011-11-16 Thread Philip Martin
Aleksandr Sidorenko  writes:

> I tried changed the permissions on the repository to be more permissive, and 
> changing the user/group of the Apache server: no help.
>
> I also tried recompiling from source, but that did not help either.
>
> To recap, I am getting this warning after every commit since we upgraded the 
> SVN server to 1.7.1:
>
>   Warning: post commit FS processing had error:
>   Couldn't open rep-cache database

As you are building from source could you try the following patch, it
will cause the lower level error to be returned:


Index: subversion/libsvn_fs_fs/rep-cache.c
===
--- subversion/libsvn_fs_fs/rep-cache.c (revision 1202695)
+++ subversion/libsvn_fs_fs/rep-cache.c (working copy)
@@ -121,7 +121,7 @@
   fs_fs_data_t *ffd = fs->fsap_data;
   svn_error_t *err = svn_atomic__init_once(&ffd->rep_cache_db_opened,
open_rep_cache, fs, pool);
-  return svn_error_quick_wrap(err, _("Couldn't open rep-cache database"));
+  return err;
 }
 
 svn_error_t *


-- 
Philip


Re: "Couldn't open rep-cache database" (post commit FS processing)

2011-11-16 Thread Philip Martin
Aleksandr Sidorenko  writes:

> Rebuilt, now I get this message on post-commit:
>
>   Warning: post commit FS processing had error:
>   Couldn't perform atomic initialization

It could be the atomic functions failing, but more likely it's still a
DB problem.  Please add this patch as well:

Index: subversion/libsvn_subr/atomic.c
===
--- subversion/libsvn_subr/atomic.c (revision 1202695)
+++ subversion/libsvn_subr/atomic.c (working copy)
@@ -57,8 +57,7 @@
  SVN_ATOMIC_INIT_FAILED,
  SVN_ATOMIC_START_INIT);
 #endif
-  return svn_error_create(SVN_ERR_ATOMIC_INIT_FAILURE, err,
-  "Couldn't perform atomic initialization");
+  return err;
 }
   svn_atomic_cas(global_status,
  SVN_ATOMIC_INITIALIZED,

-- 
Philip


Re: "Couldn't open rep-cache database" (post commit FS processing)

2011-11-16 Thread Philip Martin
Aleksandr Sidorenko  writes:

> But it seems it's not this error that is triggered; it's the one a few lines 
> down (I changed the error message to detect it):
>
> #if APR_HAS_THREADS
>   /* Wait for whichever thread is performing initialization to finish. */
>   /* XXX FIXME: Should we have a maximum wait here, like we have in
> the Windows file IO spinner? */
>   else while (status != SVN_ATOMIC_INITIALIZED)
> {
>   if (status == SVN_ATOMIC_INIT_FAILED)
>   return svn_error_create(SVN_ERR_ATOMIC_INIT_FAILURE, NULL,
> "Couldn't perform atomic initialization");

Wow!  The atomic operations are failing!  Which OS?  Which distribution?
Which complier?  32-bit or 64-bit?

-- 
Philip


Re: "Couldn't open rep-cache database" (post commit FS processing)

2011-11-16 Thread Philip Martin
"Bert Huijben"  writes:

> You get in this branch if a previous atomic initialization call failed: the
> callback function failed and returned an error. This result is then ignored
> in some code paths.
>
> It is most likely not caused by the atomic operations failing itself, but
> more likely by an initialization error in a third party library.

Ah, yes!  When we first open/read the rep-cache during the commit the
failure is not treated as a hard error.  The subsequent open in the
post-commit then returns the atomic error.

If the rep-cache has been setup you should see:

$ sqlite3 repo/db/rep-cache.db "select * from sqlite_master"
table|rep_cache|rep_cache|3|CREATE TABLE rep_cache (   hash TEXT NOT NULL 
PRIMARY KEY,   revision INTEGER NOT NULL,   offset INTEGER NOT NULL,   size 
INTEGER NOT NULL,   expanded_size INTEGER NOT NULL   )
index|sqlite_autoindex_rep_cache_1|rep_cache|4|

I suspect you will see no output because init_sqlite has failed.

I see you are using --with-sqlite=/usr/local.  Did you build sqlite with
thread support?  We should check which sqlite is being picked at
runtime: either use "ldd executable" or identify the process ID and grep
through /proc/NNN/maps, look libsqlite.

-- 
Philip


Re: "Couldn't open rep-cache database" (post commit FS processing)

2011-11-16 Thread Philip Martin
Aleksandr Sidorenko  writes:

> The sqlite command worked (I see the expected output), but I suspect that's 
> because the rep-cache.db file was already there (since 1.6.12). If I move it, 
> though, the file is NOT recreated.
>
> greping through /proc/xxx/maps gives me the following:
>
> 2a96fc4000-2a97058000 r-xp  08:01 18104376 
> /usr/local/lib/libsqlite3.so.0.8.6
> 2a97058000-2a97158000 ---p 00094000 08:01 18104376 
> /usr/local/lib/libsqlite3.so.0.8.6
> 2a97158000-2a9715c000 rw-p 00094000 08:01 18104376 
> /usr/local/lib/libsqlite3.so.0.8.6
>
> sqlite was built with default options, but "--enable-threadsafe" defaults to 
> "yes" if it's not used, so I guess it *is* built with thread support?

Try this patch:

Index: subversion/libsvn_fs_fs/fs_fs.c
===
--- subversion/libsvn_fs_fs/fs_fs.c (revision 1202738)
+++ subversion/libsvn_fs_fs/fs_fs.c (working copy)
@@ -5580,6 +5580,7 @@
   svn_error_t *err;
   err = svn_fs_fs__get_rep_reference(&old_rep, b->fs, rep->sha1_checksum,
  b->parent_pool);
+  SVN_ERR(err);
   /* ### Other error codes that we shouldn't mask out? */
   if (err == SVN_NO_ERROR
   || err->apr_err == SVN_ERR_FS_CORRUPT

To make the first error hard.  Then try committing a file over ra_local:

$ rm -rf repo && svnadmin create repo
$ svn import -mm repo/format file://`pwd`/repo/f

That should make the error explicit.

-- 
Philip


Re: "Couldn't open rep-cache database" (post commit FS processing)

2011-11-16 Thread Philip Martin
Aleksandr Sidorenko  writes:

> On 2011-11-16, at 11:15 , Philip Martin wrote:
>
>>> ...
>> 
>> Try this patch:
>> 
>> Index: subversion/libsvn_fs_fs/fs_fs.c
>> ===
>> --- subversion/libsvn_fs_fs/fs_fs.c (revision 1202738)
>> +++ subversion/libsvn_fs_fs/fs_fs.c (working copy)
>> @@ -5580,6 +5580,7 @@
>>   svn_error_t *err;
>>   err = svn_fs_fs__get_rep_reference(&old_rep, b->fs, rep->sha1_checksum,
>>  b->parent_pool);
>> +  SVN_ERR(err);
>>   /* ### Other error codes that we shouldn't mask out? */
>>   if (err == SVN_NO_ERROR
>>   || err->apr_err == SVN_ERR_FS_CORRUPT
>> 
>> To make the first error hard.  Then try committing a file over ra_local:
>> 
>> $ rm -rf repo && svnadmin create repo
>> $ svn import -mm repo/format file://`pwd`/repo/f
>> 
>> That should make the error explicit.
>
> I should note that the error does NOT occur locally, or if I use svnserve. It 
> only occurs for commits done via HTTP (the mod_dav_svn module).
>
> For local commits (or via svnserve), the repo/db/rep-cache.db file is touched 
> as expected (the modification date changes).

That should work for apache as well, but only the first commit after
apache is started.  Subsequent commits will just give the atomic error
message.

-- 
Philip


Re: Assertion failed and crash with 1.7.1

2011-11-16 Thread Philip Martin
Attila Nagy  writes:

> I use pysvn for this and basically the code looks like this (in python):
> def update_perms():
> for path in propchg:
> proplist = svn.propget('file:permissions', path)
> if not os.path.islink(path) and proplist.has_key(path):
> set_perms(path, proplist[path])
> svn.update(walkroot)
> update_perms()
>
> The svn update collects the changed entries (propchg) and update_perms
> iterates on them and gets their file:permissions property and sets it
> in the file system.
>
> And this is what takes ages (literally), compared to 1.6.
> Any ideas about what could be done in this topic?

It might be faster to run a recursive propget, which is a single
transaction, and discard the output if it doesn't match one of the
changed paths.

-- 
Philip


Re: "svn commit" does not work with SVNParentPath in location and 1.7-client (HTTPv2)

2011-11-17 Thread Philip Martin
Sergey Skvortsov  writes:

>  Also, in 1.7 reading repos is working fine:
>
> "OPTIONS /svn/foo/bar HTTP/1.1" 200
> "REPORT /svn/foo/bar/!svn/me HTTP/1.1" 200
>
> but only POST fails:
> "POST /svn/foo/bar/!svn/me HTTP/1.1" 500
>
> So the problem is not in Apache or configuration but in mod_dav_svn itself.

Yes, POST requests are handled differently.  You should be able to work
around the problem by disabling the v2 protocol using:

SVNAdvertiseV2Protocol off

-- 
Philip


Re: "svn commit" does not work with SVNParentPath in location and 1.7-client (HTTPv2)

2011-11-17 Thread Philip Martin
[Adding dev]

Philip Martin  writes:

> Sergey Skvortsov  writes:
>
>>  Also, in 1.7 reading repos is working fine:
>>
>> "OPTIONS /svn/foo/bar HTTP/1.1" 200
>> "REPORT /svn/foo/bar/!svn/me HTTP/1.1" 200
>>
>> but only POST fails:
>> "POST /svn/foo/bar/!svn/me HTTP/1.1" 500
>>
>> So the problem is not in Apache or configuration but in mod_dav_svn itself.
>
> Yes, POST requests are handled differently.  You should be able to work
> around the problem by disabling the v2 protocol using:
>
> SVNAdvertiseV2Protocol off

The config is nested Locations with SVNParentPath:


  ...
  SVNParentPath /home/svn



  ...
  SVNParentPath /home/svn/foo


This works apart from v2 commits to the nested Location.  The reason it
fails is that the POST gets directed to the containing Location, and
that happens because of the root_dir setting in mod_dav_svn's dir_conf_t
setup in mod_dav_svn.c:merge_dir_config:

  /* Prefer our parent's value over our new one - hence the swap. */
  newconf->root_dir = INHERIT_VALUE(parent, child, root_dir);

All the other fields use INHERIT_VALUE(child, parent, ...).

This code was added in the first commit to the dav-mirror branch and has
not been changed since.

If I change it to prefer the child value for root_dir then POSTs go to
the right Location and commits work.  Changing it doesn't break my
simple mirror setup.

I don't understand why the code prefers the parent root_dir.  I can't
think of any reason why mirroring would make a difference.  Can anyone
explain?

-- 
Philip


Re: "svn commit" does not work with SVNParentPath in location and 1.7-client (HTTPv2)

2011-11-17 Thread Philip Martin
Philip Martin  writes:

> [Adding dev]

Gah!  Got the address wrong.  I'll start a thread on dev.

-- 
Philip


Re: "svn commit" does not work with SVNParentPath in location and 1.7-client (HTTPv2)

2011-11-17 Thread Philip Martin
Stefan Sperling  writes:

> How do we avoid ambiguity when handling requests to nested Locations?
> How can a client access a folder /bar inside a repository at Location /svn
> if another repository exists at a nested Location /svn/bar?

Yes, I was surprised too!  If we assume that /svn and /svn/foo are
directories that contain repositories then there can be no overlap:


  ...
  SVNParentPath /svn


  ...
  SVNParentPath /svn/foo


/svn/repo/ and /svn/foo/repo/ cannot overlap.

The only way there could be a problem is if /svn/foo were itself a
repository, but the admin can ensure that is not the case.

-- 
Philip


Re: Assertion failed and crash with 1.7.1

2011-11-17 Thread Philip Martin
Attila Nagy  writes:

> On 11/16/11 18:40, Philip Martin wrote:
>> Attila Nagy  writes:
>>
>>> I use pysvn for this and basically the code looks like this (in python):
>>> def update_perms():
>>>  for path in propchg:
>>>  proplist = svn.propget('file:permissions', path)
>>>  if not os.path.islink(path) and proplist.has_key(path):
>>>  set_perms(path, proplist[path])
>>> svn.update(walkroot)
>>> update_perms()
>>>
>>> The svn update collects the changed entries (propchg) and update_perms
>>> iterates on them and gets their file:permissions property and sets it
>>> in the file system.
>>>
>>> And this is what takes ages (literally), compared to 1.6.
>>> Any ideas about what could be done in this topic?
>>
>> It might be faster to run a recursive propget, which is a single
>> transaction, and discard the output if it doesn't match one of the
>> changed paths.
>>
> I will try this. Should this be true even for 10+ million files?

It depends on the ratio of changed files to total files.  If there is
only one changed file then the single propget will be faster.  If most
of the files are changed then the recursive propget will be faster.

-- 
Philip


Re: "svn commit" does not work with SVNParentPath in location and 1.7-client (HTTPv2)

2011-11-17 Thread Philip Martin
Stefan Sperling  writes:

> Yes, of course it works with SVNParentPath. But I suspect that is
> a result of implementation rather than concious design.

Perhaps, but the line that stops it working looks like an outright bug.
  
  newconf->root_dir = INHERIT_VALUE(child, parent, root_dir);

The order of parent and child in Subversion's INHERIT_VALUE macro only
has an effect when nesting one Subversion location in another.  When not
nested the parent root_dir is NULL and the child value will be used
whatever the order in INHERIT_VALUE.  I can't see how it would ever be
correct to inherit the parent root_dir value.

This bug only comes to light because 1.7 uses the root_dir value when
processing POST requests; 1.6 doesn't use POST requests so the wrong
value had no effect.

-- 
Philip


  1   2   3   4   5   6   7   >