Merge "Use 5 MiB for RevWalk default limit"
This commit is contained in:
commit
2b0c5c7207
|
@ -47,7 +47,6 @@
|
||||||
package org.eclipse.jgit.lib;
|
package org.eclipse.jgit.lib;
|
||||||
|
|
||||||
import static java.util.zip.Deflater.DEFAULT_COMPRESSION;
|
import static java.util.zip.Deflater.DEFAULT_COMPRESSION;
|
||||||
import static org.eclipse.jgit.lib.ObjectLoader.STREAM_THRESHOLD;
|
|
||||||
|
|
||||||
import org.eclipse.jgit.lib.Config.SectionParser;
|
import org.eclipse.jgit.lib.Config.SectionParser;
|
||||||
|
|
||||||
|
@ -68,21 +67,12 @@ public CoreConfig parse(final Config cfg) {
|
||||||
|
|
||||||
private final boolean logAllRefUpdates;
|
private final boolean logAllRefUpdates;
|
||||||
|
|
||||||
private final int streamFileThreshold;
|
|
||||||
|
|
||||||
private final boolean autoCRLF;
|
private final boolean autoCRLF;
|
||||||
|
|
||||||
private CoreConfig(final Config rc) {
|
private CoreConfig(final Config rc) {
|
||||||
compression = rc.getInt("core", "compression", DEFAULT_COMPRESSION);
|
compression = rc.getInt("core", "compression", DEFAULT_COMPRESSION);
|
||||||
packIndexVersion = rc.getInt("pack", "indexversion", 2);
|
packIndexVersion = rc.getInt("pack", "indexversion", 2);
|
||||||
logAllRefUpdates = rc.getBoolean("core", "logallrefupdates", true);
|
logAllRefUpdates = rc.getBoolean("core", "logallrefupdates", true);
|
||||||
|
|
||||||
long maxMem = Runtime.getRuntime().maxMemory();
|
|
||||||
long sft = rc.getLong("core", null, "streamfilethreshold", STREAM_THRESHOLD);
|
|
||||||
sft = Math.min(sft, maxMem / 4); // don't use more than 1/4 of the heap
|
|
||||||
sft = Math.min(sft, Integer.MAX_VALUE); // cannot exceed array length
|
|
||||||
streamFileThreshold = (int) sft;
|
|
||||||
|
|
||||||
autoCRLF = rc.getBoolean("core", "autocrlf", false);
|
autoCRLF = rc.getBoolean("core", "autocrlf", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,11 +98,6 @@ public boolean isLogAllRefUpdates() {
|
||||||
return logAllRefUpdates;
|
return logAllRefUpdates;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return the size threshold beyond which objects must be streamed. */
|
|
||||||
public int getStreamFileThreshold() {
|
|
||||||
return streamFileThreshold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return whether automatic CRLF conversion has been configured
|
* @return whether automatic CRLF conversion has been configured
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -61,7 +61,6 @@
|
||||||
import org.eclipse.jgit.lib.AnyObjectId;
|
import org.eclipse.jgit.lib.AnyObjectId;
|
||||||
import org.eclipse.jgit.lib.AsyncObjectLoaderQueue;
|
import org.eclipse.jgit.lib.AsyncObjectLoaderQueue;
|
||||||
import org.eclipse.jgit.lib.Constants;
|
import org.eclipse.jgit.lib.Constants;
|
||||||
import org.eclipse.jgit.lib.CoreConfig;
|
|
||||||
import org.eclipse.jgit.lib.MutableObjectId;
|
import org.eclipse.jgit.lib.MutableObjectId;
|
||||||
import org.eclipse.jgit.lib.ObjectId;
|
import org.eclipse.jgit.lib.ObjectId;
|
||||||
import org.eclipse.jgit.lib.ObjectIdSubclassMap;
|
import org.eclipse.jgit.lib.ObjectIdSubclassMap;
|
||||||
|
@ -96,6 +95,8 @@
|
||||||
* {@link #next()} does not.
|
* {@link #next()} does not.
|
||||||
*/
|
*/
|
||||||
public class RevWalk implements Iterable<RevCommit> {
|
public class RevWalk implements Iterable<RevCommit> {
|
||||||
|
private static final int MB = 1 << 20;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set on objects whose important header data has been loaded.
|
* Set on objects whose important header data has been loaded.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -171,9 +172,6 @@ public class RevWalk implements Iterable<RevCommit> {
|
||||||
|
|
||||||
private final ObjectIdSubclassMap<RevObject> objects;
|
private final ObjectIdSubclassMap<RevObject> objects;
|
||||||
|
|
||||||
/** Largest commit or annotated tag we are willing to touch. */
|
|
||||||
private final int bigFileThreshold;
|
|
||||||
|
|
||||||
private int freeFlags = APP_FLAGS;
|
private int freeFlags = APP_FLAGS;
|
||||||
|
|
||||||
private int delayFreeFlags;
|
private int delayFreeFlags;
|
||||||
|
@ -230,13 +228,6 @@ private RevWalk(final Repository repo, final ObjectReader or) {
|
||||||
filter = RevFilter.ALL;
|
filter = RevFilter.ALL;
|
||||||
treeFilter = TreeFilter.ALL;
|
treeFilter = TreeFilter.ALL;
|
||||||
retainBody = true;
|
retainBody = true;
|
||||||
|
|
||||||
if (repo != null) {
|
|
||||||
CoreConfig cfg = repo.getConfig().get(CoreConfig.KEY);
|
|
||||||
bigFileThreshold = cfg.getStreamFileThreshold();
|
|
||||||
} else {
|
|
||||||
bigFileThreshold = 15 * 1024 * 1024;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @return the reader this walker is using to load objects. */
|
/** @return the reader this walker is using to load objects. */
|
||||||
|
@ -867,7 +858,7 @@ byte[] getCachedBytes(RevObject obj) throws LargeObjectException,
|
||||||
byte[] getCachedBytes(RevObject obj, ObjectLoader ldr)
|
byte[] getCachedBytes(RevObject obj, ObjectLoader ldr)
|
||||||
throws LargeObjectException, MissingObjectException, IOException {
|
throws LargeObjectException, MissingObjectException, IOException {
|
||||||
try {
|
try {
|
||||||
return ldr.getCachedBytes(bigFileThreshold);
|
return ldr.getCachedBytes(5 * MB);
|
||||||
} catch (LargeObjectException tooBig) {
|
} catch (LargeObjectException tooBig) {
|
||||||
tooBig.setObjectId(obj);
|
tooBig.setObjectId(obj);
|
||||||
throw tooBig;
|
throw tooBig;
|
||||||
|
|
Loading…
Reference in New Issue