Hi all,
We ended up working around this problem by using a script to perform the clean up of the workspace. The script takes about 10 seconds to run, as opposed to the estimated hour it used to take the Java svn implementation before it started taking literally forever.
While we were at it, we decided to move to using a script to perform a platform specific, sparse directory checkout. This is the same script that our developers use to get only the stuff that they need to build on a given platform. No need to have pre-built Windows libraries checked out on a Mac, for example.
In total, moving away from letting Jenkins and the underlying SVN library do the clean up and checkout has shaved 2 hours off of our build time.
What we've lost is the ability to nicely associate svn changes with a given build on Jenkins. To attempt address this, I tried to have the build job that's downstream of the cleanup/checkout job do an SVN update of the workspace, but after watching it run for an hour, I gave up and terminated it. The same update of a sparse check out workspace with the command line svn tool takes 7 seconds.
Honestly, I don't know if the current underlying Java svn lib simply cannot handle updating a sparse directory (which would be a bug), or it's just so slow that it's unreasonable to use with our source tree. Either way it looks like we're going to stick with the pragmatic approach of going "native" for portions of our jobs when Jenkins doesn't give us with the results we need.
Best,
--
Allen Cronce