Skip to main content

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

On 04/11/2012 09:56 AM, Shawn Pearce wrote:
> 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().

thanks for that hint - it solved the problem.

there was no setting for streamFileThreshold in the UI though, so i added one ([1]).

[1] https://git.eclipse.org/r/#/c/5560/

Regards,
Markus

> 
> On Apr 10, 2012 11:31 PM, "Markus Duft" <markus.duft@xxxxxxxxxx <mailto:markus.duft@xxxxxxxxxx>> wrote:
> 
>     Hi!
> 
>     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!
> 
>     [1] http://groups.google.com/group/repo-discuss/browse_thread/thread/d46af3758a383e7c/fa73c82ff222a616?#fa73c82ff222a616
>     [2] Thread [ModalContext] (Suspended)
>            Inflater.inflateBytes(long, byte[], int, int) line: not available [native method]
>            Inflater.inflate(byte[], int, int) line: 255
>            InflaterInputStream.read(byte[], 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
>            BufferedInputStream.read(byte[], int, int) line: 334
>            TeeInputStream.read(byte[], 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
>            CheckoutCommand.call() line: 174
>            GitRepositoryUtils.cloneRepository(File, URIish, String, boolean, IProgressMonitor, List<PostCloneTask>) line: 235
>            CloneRepositoryDialog$3.run(IProgressMonitor) line: 155
>            ModalContext$ModalContextThread.run() line: 121
> 
> 
>     Regards,
>     Markus
> 


Back to the top