Merge "Fix "stream has already been operated upon or closed"" into stable-2.16
diff --git a/java/com/google/gerrit/acceptance/GerritServer.java b/java/com/google/gerrit/acceptance/GerritServer.java
index 799feae..ebf7107 100644
--- a/java/com/google/gerrit/acceptance/GerritServer.java
+++ b/java/com/google/gerrit/acceptance/GerritServer.java
@@ -366,7 +366,6 @@
daemon.setAuditEventModuleForTesting(new FakeGroupAuditService.Module());
daemon.setAdditionalSysModuleForTesting(testSysModule);
daemon.setEnableSshd(desc.useSsh());
- daemon.setSlave(isSlave(baseConfig));
if (desc.memory()) {
checkArgument(additionalArgs.length == 0, "cannot pass args to in-memory server");
@@ -385,6 +384,7 @@
@Nullable InMemoryDatabase.Instance inMemoryDatabaseInstance)
throws Exception {
Config cfg = desc.buildConfig(baseConfig);
+ daemon.setSlave(isSlave(baseConfig) || cfg.getBoolean("container", "slave", false));
mergeTestConfig(cfg);
// Set the log4j configuration to an invalid one to prevent system logs
// from getting configured and creating log files.
diff --git a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
index 47be6e3..55d7c6c 100644
--- a/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
+++ b/java/com/google/gerrit/server/permissions/DefaultRefFilter.java
@@ -21,6 +21,7 @@
import static com.google.gerrit.reviewdb.client.RefNames.REFS_USERS_SELF;
import static java.util.Objects.requireNonNull;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
import com.google.common.flogger.FluentLogger;
@@ -59,7 +60,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.stream.Stream;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Ref;
@@ -343,17 +343,17 @@
private Map<Change.Id, Branch.NameKey> visibleChangesByScan(Repository repo)
throws PermissionBackendException {
Project.NameKey p = projectState.getNameKey();
- Stream<ChangeNotesResult> s;
+ ImmutableList<ChangeNotesResult> changes;
try {
- s = changeNotesFactory.scan(repo, db.get(), p);
+ changes = changeNotesFactory.scan(repo, db.get(), p).collect(toImmutableList());
} catch (IOException e) {
logger.atSevere().withCause(e).log(
"Cannot load changes for project %s, assuming no changes are visible", p);
return Collections.emptyMap();
}
- Map<Change.Id, Branch.NameKey> result = Maps.newHashMapWithExpectedSize((int) s.count());
- for (ChangeNotesResult notesResult : s.collect(toImmutableList())) {
+ Map<Change.Id, Branch.NameKey> result = Maps.newHashMapWithExpectedSize(changes.size());
+ for (ChangeNotesResult notesResult : changes) {
ChangeNotes notes = toNotes(notesResult);
if (notes != null) {
result.put(notes.getChangeId(), notes.getChange().getDest());
diff --git a/javatests/com/google/gerrit/acceptance/git/RefAdvertisementIT.java b/javatests/com/google/gerrit/acceptance/git/RefAdvertisementIT.java
index e4d9f7c..3f06dfb 100644
--- a/javatests/com/google/gerrit/acceptance/git/RefAdvertisementIT.java
+++ b/javatests/com/google/gerrit/acceptance/git/RefAdvertisementIT.java
@@ -344,7 +344,17 @@
}
@Test
- public void uploadPackNoSearchingChangeCacheImpl() throws Exception {
+ public void uploadPackNoSearchingChangeCacheImplMaster() throws Exception {
+ uploadPackNoSearchingChangeCacheImpl();
+ }
+
+ @Test
+ @GerritConfig(name = "container.slave", value = "true")
+ public void uploadPackNoSearchingChangeCacheImplSlave() throws Exception {
+ uploadPackNoSearchingChangeCacheImpl();
+ }
+
+ private void uploadPackNoSearchingChangeCacheImpl() throws Exception {
allow("refs/heads/*", Permission.READ, REGISTERED_USERS);
setApiUser(user);