]> source.dussan.org Git - jgit.git/commit
PackObjectSizeIndex: Read all bytes and use the byte[] directly 65/1198165/8
authorIvan Frade <ifrade@google.com>
Fri, 19 Jul 2024 22:44:15 +0000 (15:44 -0700)
committerIvan Frade <ifrade@google.com>
Wed, 24 Jul 2024 07:31:58 +0000 (10:31 +0300)
commit1c9d1a49b0f9fcf7980775f22302df35293a3776
treed48b3261f17ad785edcab615928ec6922bd27466
parent439512d7f82c503638e6b12689e751bb8debc015
PackObjectSizeIndex: Read all bytes and use the byte[] directly

The parser reads N integers one by one from the stream, assuming the
InputStream does some ahead reading from storage. We see some very
slow loading of indexes and suspect that this preemptive reading is
not happening. The slow loading can be reproduced in clones, and it
produces higher latencies and locks many threads waiting for the
loading.

Read the whole array from storage in one shot to avoid many small IO
reads. Work directly on the resulting byte[], so there is no need of a
second copy to cast to int/long.

This is how other indexes, like primary or commit graph, work.

Change-Id: I60058606e2c457f60aa4646a1f10ae7b28ce34c2
org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/PackObjectSizeIndexV1.java