Use chunked encoding when uploading LFS objects to avoid OOM when transferring very large objects. Use a chunk size of 256kB. In jgit-186 a user reported that uploading objects larger than 2GB fails with an OOM error. Bug: jgit-186 Change-Id: I6876f3cbb60b3a08d6d1ff3d6bcd8ac6ee8cd442
diff --git a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java index 9b3d608..802835c 100644 --- a/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java +++ b/org.eclipse.jgit.lfs/src/org/eclipse/jgit/lfs/LfsPrePushHook.java
@@ -246,6 +246,7 @@ private void uploadFile(Protocol.ObjectInfo o, .getLfsContentConnection(getRepository(), uploadAction, METHOD_PUT); contentServer.setDoOutput(true); + contentServer.setChunkedStreamingMode(256 << 10); try (OutputStream out = contentServer .getOutputStream()) { long size = Files.copy(path, out);