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

Re: Repository became corrupt on commit

From: Alan Spark <alansparkstar_at_gmail.com>
Date: Tue, 23 Oct 2018 14:41:28 +0100

Hi Daniel,

Sorry, I meant to reply to all. For the benefit of others, here is what I said:

---
Thanks for the response.
> where dump-noderev.pl is [1]?  The output should be just a few rfc822-like
> headers specifying the offset and checksum of the file contents representation
> ("rep").  One of the headers should be "type: file".
I'll take a look at this as soon as I can.
> Sorry, I don't follow.  Can you explain again what the contents of the
> file is and what's its significance?  Has the server been restarted
> between the two commit attempts?  Is it svnserve (in which mode,
> -i/-t/-d/-T/service) or mod_dav_svn (which MPM)?
The file is a python script. It is just a text file. The first time it
was committed it corrupted the repository. We rolled back to a backup
and tried to commit the same file and it again broke the repository.
Only when we deleted, then added exactly the same file did the problem
go away. So it was reproducible until we rolled back and deleted the
file.
The server has not been restarted. It is mod_dav_dvn. I'm not sure
what you mean by MPM, sorry.
---
I'm afraid I'm new to perl so I may be doing something wrong, but I
checked out the entire infrastructure-puppet repository and ran the
command from within
~/infrastructure-puppet/modules/rootbin_asf/files/bin to get the
following output:
perl dump-noderev.pl /path/to/repository /trunk/scripts/script.py 728
Use of uninitialized value $noderev_id in split at dump-noderev.pl line 41.
Use of uninitialized value $txn_id in pattern match (m//) at
dump-noderev.pl line 42.
Use of uninitialized value $txn_id in pattern match (m//) at
dump-noderev.pl line 43.
Use of uninitialized value $REVISION in division (/) at dump-noderev.pl line 10.
Use of uninitialized value $REVISION in modulus (%) at dump-noderev.pl line 11.
Use of uninitialized value $REVISION in concatenation (.) or string at
dump-noderev.pl line 13.
Use of uninitialized value $REVISION in concatenation (.) or string at
dump-noderev.pl line 15.
Use of uninitialized value $REVISION in concatenation (.) or string at
dump-noderev.pl line 16.
Use of uninitialized value $file_offset in concatenation (.) or string
at dump-noderev.pl line 49.
xxd: 1024: No such file or directory
Is there a simple command that I can run rather than this script?
I tried to find out what our MPM is but I am not sure. I ran this command:
/usr/sbin/apache2 -l
Compiled in modules:
  core.c
  mod_so.c
  mod_watchdog.c
  http_core.c
  mod_log_config.c
  mod_logio.c
  mod_version.c
  mod_unixd.c
I'm not sure if that tells you anything but I don't think it is
prefork or worker.
Regards,
Alan
On Mon, Oct 22, 2018 at 4:54 PM Daniel Shahaf <d.s_at_daniel.shahaf.name> wrote:
>
> Please send that to the list, not just to me. :)
>
> (To save a round trip: an MPM is an httpd thing, see https://httpd.apache.org/docs/current/mpm.html .  It's related to requests are distributed among httpd processes which factors in due to intra-process caches)
>
> Alan Spark wrote on Mon, 22 Oct 2018 16:50 +0100:
> > Hi Daniel,
> >
> > Thanks for the response.
> >
> > > where dump-noderev.pl is [1]?  The output should be just a few rfc822-like
> > > headers specifying the offset and checksum of the file contents representation
> > > ("rep").  One of the headers should be "type: file".
> >
> > I'll take a look at this as soon as I can.
> >
> > > Sorry, I don't follow.  Can you explain again what the contents of the
> > > file is and what's its significance?  Has the server been restarted
> > > between the two commit attempts?  Is it svnserve (in which mode,
> > > -i/-t/-d/-T/service) or mod_dav_svn (which MPM)?
> >
> > The file is a python script. It is just a text file. The first time it
> > was committed it corrupted the repository. We rolled back to a backup
> > and tried to commit the same file and it again broke the repository.
> > Only when we deleted, then added exactly the same file did the problem
> > go away. So it was reproducible until we rolled back and deleted the
> > file.
> >
> > The server has not been restarted. It is mod_dav_dvn. I'm not sure
> > what you mean by MPM, sorry.
> >
> > Regards,
> > Alan
> >
> > On Sat, Oct 20, 2018 at 6:04 PM Daniel Shahaf <d.s_at_daniel.shahaf.name> wrote:
> > >
> > > Alan Spark wrote on Fri, 19 Oct 2018 16:04 +0100:
> > > > * Error verifying revision 728.
> > > > svnadmin: E160013: Filesystem path 'trunk/scripts/script.py' is
> > > > neither a file nor a directory
> > >
> > > E160013 is SVN_ERR_FS_CORRUPT, but this message is a new one.
> > >
> > > Can you share the output of
> > > .
> > >     % dump-noderev.pl ${REPO_DIR} /trunk/scripts/script.py 728
> > > .
> > > where dump-noderev.pl is [1]?  The output should be just a few rfc822-like
> > > headers specifying the offset and checksum of the file contents representation
> > > ("rep").  One of the headers should be "type: file".
> > >
> > > > The content of that file is what had replaced what used to be the trunk
> > > > folder. [...]  Now that we have deleted then re-committed exactly the same
> > > > file, the repository is back to normal and it seems like an unreproducable
> > > > bug at this stage.
> > >
> > > Sorry, I don't follow.  Can you explain again what the contents of the
> > > file is and what's its significance?  Has the server been restarted
> > > between the two commit attempts?  Is it svnserve (in which mode,
> > > -i/-t/-d/-T/service) or mod_dav_svn (which MPM)?
> > >
> > > Cheers,
> > >
> > > Daniel
> > >
> > > [1] https://github.com/apache/infrastructure-puppet/blob/0a97d8e60798656d856bb0521bee76b24fbe5574/modules/rootbin_asf/files/bin/dump-noderev.pl
Received on 2018-10-23 15:41:56 CEST

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

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