You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Tony Stevenson <to...@pc-tony.com> on 2014/07/29 20:27:35 UTC

Issue with incomplete rev

Hi folks,   

I am hoping someone will be willing to help us (ASF Infra) bottom out this issue and suggest the most sane way to resolve it.   

We are using the ‘SVNMasterURI’ directive to enable the EU ‘mirror’. I am not aware of any special circumstances that led to the situation we have.  If you look at [1] and [2] you will see the US master has the revision, intact (as best we can tell) including log message and payload (not sure of the correct term here, but essentially I mean the changed paths).  Where as the EU mirror only has a revision with the log message no payload.   

Is there anyway to replay the single revision? Or are we going to have to dump the US master, and load it on the EU mirror and svnsync it ?   

EU Mirror:  svn, version 1.8.1 (r1503906)  
US Master:  svn, version 1.8.1 (r1503906)  


[1] - http://svn.us.apache.org/viewvc?view=revision&revision=r1362927  
[2] - http://svn.eu.apache.org/viewvc?view=revision&revision=r1362927  


--  

Cheers,  
Tony  

On behalf of the Apache Infrastructure Team

-------------------------  
Tony Stevenson  

tony@pc-tony.com  
pctony@apache.org  

http://www.pc-tony.com  

GPG - 1024D/51047D66  
-------------------------  






Re: Issue with incomplete rev

Posted by Philip Martin <ph...@wandisco.com>.
Tony Stevenson <to...@pc-tony.com> writes:

>> It is possible to do the operation on a copy of the slave repository and
>> keep the existing slave repository online but this requires doing
>> somthing to ensure that revprop changes made on the master during the
>> svnsync get to the copy.

If there is diskspace to have the copy on the same disk then one option
is to the leave the slave online.  When the svnsync finishes on the copy
the slave will have up-to-date revprops.  Then replace the slave
repository with the copy repository but keep the revprops:

    - hotcopy the slave repository
    - do the rewind/backdate/recover/svnsync operation on the copy
    - stop apache
    - move copy repository's db/revprops/ away
    - move slave repository's db/revprops/ into copy repository
    - move slave repository away
    - move copy repository to replace slave repository
    - start apache

The move operations are quick on the same disk, so the repository is
only offline for a short period.

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

Re: Issue with incomplete rev

Posted by Tony Stevenson <to...@pc-tony.com>.
>  
> On the master I see a text change to one file and an svn:mergeinfo
> change on one directory. The slave revision has the revision properties
> svn:log, svn:date and svn:author but does not have the versioned text or
> svn:mergeinfo change. I wonder how that happened? r1362927 is from
> 2012-07-18, do you know which version of Subversion was in use at that
> time?

Exact version, no.  But I suspect it was 1.6.x

>  
> To fix via svnsync there is no need to start from scratch, instead
> backdate the slave to a revision before r1362927 and resync:
>  
> - stop apache from serving the slave repository
> - delete the revision files (or pack files) from r1362927 onward
> - use an editor to rewrite db/current
> - run "svnadmin recover"
> - use "svn ps --revprop -r0" to reset svn:sync-last-merged-rev
> - allow apache to serve the slave repository
> - run svnsync (about 250,000 revisions)
>  
> The slave will be out-of-date until the sync completes so will not be
> much use to users. Perhaps it would be possible to redirect svn.eu to
> svn.us while this operation is in progress?
>  
> It is possible to do the operation on a copy of the slave repository and
> keep the existing slave repository online but this requires doing
> somthing to ensure that revprop changes made on the master during the
> svnsync get to the copy.
> 

Many thanks Philip.  I will add this to the JIRA issue if you don’t mind, and have it actioned as soon as we have the cycles. 


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






Re: Issue with incomplete rev

Posted by Philip Martin <ph...@wandisco.com>.
Tony Stevenson <to...@pc-tony.com> writes:

> I am hoping someone will be willing to help us (ASF Infra) bottom out
> this issue and suggest the most sane way to resolve it. 
>
> We are using the ‘SVNMasterURI’ directive to enable the EU ‘mirror’. I
> am not aware of any special circumstances that led to the situation we
> have.  If you look at [1] and [2] you will see the US master has the
> revision, intact (as best we can tell) including log message and
> payload (not sure of the correct term here, but essentially I mean the
> changed paths).  Where as the EU mirror only has a revision with the
> log message no payload. 
>
> Is there anyway to replay the single revision? Or are we going to have
> to dump the US master, and load it on the EU mirror and svnsync it ? 
>
> EU Mirror:  svn, version 1.8.1 (r1503906)  
> US Master:  svn, version 1.8.1 (r1503906)  
>
>
> [1] - http://svn.us.apache.org/viewvc?view=revision&revision=r1362927  
> [2] - http://svn.eu.apache.org/viewvc?view=revision&revision=r1362927  

On the master I see a text change to one file and an svn:mergeinfo
change on one directory.  The slave revision has the revision properties
svn:log, svn:date and svn:author but does not have the versioned text or
svn:mergeinfo change.  I wonder how that happened?  r1362927 is from
2012-07-18, do you know which version of Subversion was in use at that
time?

To fix via svnsync there is no need to start from scratch, instead
backdate the slave to a revision before r1362927 and resync:

  - stop apache from serving the slave repository
  - delete the revision files (or pack files) from r1362927 onward
  - use an editor to rewrite db/current
  - run "svnadmin recover"
  - use "svn ps --revprop -r0" to reset svn:sync-last-merged-rev
  - allow apache to serve the slave repository
  - run svnsync (about 250,000 revisions)

The slave will be out-of-date until the sync completes so will not be
much use to users.  Perhaps it would be possible to redirect svn.eu to
svn.us while this operation is in progress?

It is possible to do the operation on a copy of the slave repository and
keep the existing slave repository online but this requires doing
somthing to ensure that revprop changes made on the master during the
svnsync get to the copy.

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