Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [jgit-dev] Large Objects

That parameter is a global for the process and isn't set in a repository. JGit has no way to set this for its command line tools. Egit needs to set it from the workspace prefs. Its the WindowCacheConfig, you need to load it and call WindowCache.reconfigure().

On Apr 10, 2012 11:31 PM, "Markus Duft" <markus.duft@xxxxxxxxxx> wrote:

Currently, 80 developers came to a screeching halt because somebody managed to push a 127Mb file. We managed to get Gerrit back to working order by following [1]. Still all developers cannot checkout, since jgit completely hangs (* not true, see below) when checking out this file

* jgit actually does not hang. it spends huuuuge amounts of time reading the file from the pack [2]. since the file isLarge(), it uses the fixed 8k buffer in a loop, with another 8k buffer on top, reading junks of (so it seems) 4-20 bytes. I let it run all night today, and it managed to checkout half the file (~64Mb) in 12 hours!

I need a quick and dirty solution to get around the problem to get all devs back on track. I played with streamFileThreshold, as that helped on the Gerrit server, but it seems to have no effect on local JGit. Any other thing i can do? And if it's changing a constant in jgit source for now, i'm happy too!

[2] Thread [ModalContext] (Suspended)
       Inflater.inflateBytes(long, byte[], int, int) line: not available [native method]
       Inflater.inflate(byte[], int, int) line: 255[], int, int) line: 152
       InflaterInputStream.skip(long) line: 208
       BufferedInputStream.skip(long) line: 366
       ObjectStream$Filter.skip(long) line: 199
       IO.skipFully(InputStream, long) line: 327
       LargePackedDeltaObject$2(DeltaStream).seekBase() line: 339
       LargePackedDeltaObject$2(DeltaStream).read(byte[], int, int) line: 213
       BufferedInputStream.read1(byte[], int, int) line: 273[], int, int) line: 334[], int, int) line: 111
       LargePackedDeltaObject$1(ObjectStream$Filter).read(byte[], int, int) line: 209
       LargePackedDeltaObject$1(InputStream).read(byte[]) line: 101
       LargePackedDeltaObject(ObjectLoader).copyTo(OutputStream) line: 254
       DirCacheCheckout.checkoutEntry(Repository, File, DirCacheEntry, ObjectReader) line: 961
       DirCacheCheckout.doCheckout() line: 447
       DirCacheCheckout.checkout() line: 381 line: 174
       GitRepositoryUtils.cloneRepository(File, URIish, String, boolean, IProgressMonitor, List<PostCloneTask>) line: 235
       CloneRepositoryDialog$ line: 155
       ModalContext$ line: 121


Back to the top