in src/main/java/com/googlesource/gerrit/plugins/quota/MaxRepositorySizeQuota.java [89:124]
protected Optional<Long> getMaxPackSize(Project.NameKey project) {
QuotaSection quotaSection = quotaFinder.firstMatching(project);
if (quotaSection == null) {
return Optional.empty();
}
Long maxRepoSize = quotaSection.getMaxRepoSize();
Long maxTotalSize = quotaSection.getMaxTotalSize();
if (maxRepoSize == null && maxTotalSize == null) {
return Optional.empty();
}
try {
Long maxPackSize1 = null;
if (maxRepoSize != null) {
maxPackSize1 = Math.max(0, maxRepoSize - cache.get(project).get());
}
Long maxPackSize2 = null;
if (maxTotalSize != null) {
long totalSize = 0;
for (Project.NameKey p : projectCache.all()) {
if (quotaSection.matches(p)) {
totalSize += cache.get(p).get();
}
}
maxPackSize2 = Math.max(0, maxTotalSize - totalSize);
}
return Optional.ofNullable(
Ordering.<Long>natural().nullsLast().min(maxPackSize1, maxPackSize2));
} catch (ExecutionException e) {
log.warn("Couldn't calculate maxPackSize for {}", project, e);
return Optional.empty();
}
}