Fix inProcessPackedRefsLock not shared with copies of the instance
The in process lock is intended to manage contention on locking the packed-refs file within a single process without acquiring the file system lock. Not sharing it across RefDirectory instances of the same repository undermines that intent and results in more contention at the file system level. Change-Id: I68f11856aa0b4b1524f43554d7391a322a0a6897 Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
This commit is contained in:
parent
140a8b365a
commit
06cfebd066
|
@ -155,7 +155,7 @@ public class RefDirectory extends RefDatabase {
|
|||
* {@code RepositoryCache} is used, this lock instance will be used by all
|
||||
* threads.
|
||||
*/
|
||||
final ReentrantLock inProcessPackedRefsLock = new ReentrantLock(true);
|
||||
final ReentrantLock inProcessPackedRefsLock;
|
||||
|
||||
/**
|
||||
* Number of modifications made to this database.
|
||||
|
@ -190,6 +190,7 @@ public class RefDirectory extends RefDatabase {
|
|||
packedRefs.set(refDb.packedRefs.get());
|
||||
trustFolderStat = refDb.trustFolderStat;
|
||||
trustPackedRefsStat = refDb.trustPackedRefsStat;
|
||||
inProcessPackedRefsLock = refDb.inProcessPackedRefsLock;
|
||||
}
|
||||
|
||||
RefDirectory(FileRepository db) {
|
||||
|
@ -210,6 +211,7 @@ public class RefDirectory extends RefDatabase {
|
|||
.getEnum(ConfigConstants.CONFIG_CORE_SECTION, null,
|
||||
ConfigConstants.CONFIG_KEY_TRUST_PACKED_REFS_STAT,
|
||||
TrustPackedRefsStat.UNSET);
|
||||
inProcessPackedRefsLock = new ReentrantLock(true);
|
||||
}
|
||||
|
||||
Repository getRepository() {
|
||||
|
|
Loading…
Reference in New Issue