You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@subversion.apache.org by "Nathan Hartman (Jira)" <ji...@apache.org> on 2020/01/26 17:07:00 UTC

[jira] [Commented] (SVN-4588) Item index too large in revision

    [ https://issues.apache.org/jira/browse/SVN-4588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17023870#comment-17023870 ] 

Nathan Hartman commented on SVN-4588:
-------------------------------------

I'm closing this issue because it is not a bug. It was caused by replacing the repository without restarting the server. This is *not* a supported use case; the server must be stopped before changing the repository on disk and then restarted afterwards.

There were discussions (see comments above, and references below), about detecting this situation, e.g., by adding the instance ID to the cache key prefix (and even other items, such as repo format, addressing mode, sharding size). However, following those discussions, there is no way to handle this reliably and it is better to "fail early" than to open a whole can of worms of subtle race conditions that may arise.

The release notes for 1.8 and 1.9 were updated to reflect the server restart requirement.

References:

See, "Issue #4588, part 1: FSFS access error" on dev@, 2015 Aug 23:

[https://lists.apache.org/thread.html/4ce6e08318abcd3d60f4d4a24f62fb621d0cda450206a8628b129260%401440358683%40%3Cdev.subversion.apache.org%3E]

and this later thread, "Bug review of the week" on dev@, 2020 Jan 08, archived here:
[https://lists.apache.org/thread.html/r44a6370ab5fb211fad77f7aad49131763180db4e4c26c0f68df566d4%40%3Cdev.subversion.apache.org%3E]

If you believe this issue to be closed in error, please file a new one with a proper description (i.e., a feature request to detect this admin error) and reference this issue and the above discussions. Thanks.

> Item index too large in revision
> --------------------------------
>
>                 Key: SVN-4588
>                 URL: https://issues.apache.org/jira/browse/SVN-4588
>             Project: Subversion
>          Issue Type: Bug
>          Components: unknown
>    Affects Versions: 1.9.x
>            Reporter: Subversion Importer
>            Assignee: Stefan Fuhrmann
>            Priority: Blocker
>             Fix For: ---
>
>         Attachments: 1_globalmentor-repo-1.8-java-db-revs-1-1925.7z, 2_globalmentor-repo-1.9-java-db-revs-1-1925.7z
>
>
> ***Short version:
> I installed Subversion 1.9 on my server, and my Subclipse client using JavaHL in Eclipse 4.5 suddenly got this error when I tried to look at the history of a file:
> {noformat}
>     org.apache.subversion.javahl.ClientException: RA layer request failed
>     svn: Unable to connect to a repository at URL 'https://svn.example.com/trunk/src/main/java/com/example/FooBar.java'
>     svn: Unexpected HTTP status 500 'Internal Server Error' on '/trunk/src/main/java/com/example/FooBart.java'
>     
>     APR does not understand this error code
>     svn: Additional errors:
>     svn: Item index 5460 too large in revision 1925
> {noformat}
> I reinstalled Subversion 1.8, and this error went away.
> ***Long version
> # Subversion 1.9 is out. Yay! I decided to upgrade right away.
> # I tried to download and build the tarball, but now Subversion requires Python 2.7, which is quite hard to get on CentOS 6.4, because it conflicts with yum, etc. So I guess I'll skip running tests.
> # Alas Subversion 1.9 requires a higher version of Serf than I get with CentOS 6.4, so I decide to build it myself. It requires oodles of configuration using something called scons, and when I try to test the build, it fails. So I guess
> my brand new Subversion 1.9 won't have HTTP(S) support, either. But at least I'll have an extra-efficient repository on the server... right?
> # So Subversion 1.9 is now running on to the server. I go to my main repository (which I've been maintaining since around the time of the first public release of Subversion 1.0) and do a dump. Then I do a load. Oh... Subversion tells me
> that it won't do a reload because some of my super-old (decades-old?) svn:log entries don't have canonical EOLs (probably some old client put a few CRLFs in). (So svnadmin, why don't you fix it for me? Is it really so hard?)
> # Because I had (foolishly) deleted my original repository after dumping (what was I thinking?) I had to use the --bypass-prop-validation switch just to get a repository back. But how to get rid of all those bad EOLs? I came up with an elaborate dance using svnsync (because apparently it is smarter than svnadmin and can normalize EOLs). You can read the gory details here:
> http://stackoverflow.com/a/32030939/421049
> # Of course the new repository has the wrong UUID, so I had to use svnadmin setuuid to make my clients recognize it.
> # Then I tried to see the history of a file on my client, which is Subclipse on Eclipse 4.5 using JavaHL. (Subversion 1.8 clients can work with Subversion 1.9 servers, right?) That's when I get that long error I showed above.
> # Thinking that this stemmed from my elaborate dance using svnsync, I went to the server and switched back to the repository I had loaded using --bypass-prop-validation. Nope, same error.
> # Crossing my fingers, I downloaded the latest Subversion 1.8 series and installed it. I re-loaded the svnsync version of my repository (the one with normalized EOLs). Suddenly my Eclipse 4.5 with Subclipse and JavaHL are working again.
> Now that it's working I'm not touching anything until I get this all converted to Git. I must have been crazy to try to upgrade to Subversion 1.9 so soon...
> Original issue reported by *garretwilson*



--
This message was sent by Atlassian Jira
(v8.3.4#803005)