Move batch user priority to a capability

Instead of using a magical group, use a special capability to
denote users that should get the batch priority behavior.

Change-Id: I3e1f8f3ee39f5dcb2cdad2f9c71c46db25fc30b6
This commit is contained in:
Shawn O. Pearce
2011-06-16 18:01:21 -07:00
parent 897d9218ac
commit 76409cf7fa
24 changed files with 186 additions and 141 deletions

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.sshd;
import com.google.gerrit.server.CurrentUser;
import com.google.gerrit.server.git.QueueProvider;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -33,12 +34,6 @@ class CommandExecutorProvider implements Provider<WorkQueue.Executor> {
@Override
public WorkQueue.Executor get() {
WorkQueue.Executor executor;
if (user.isBatchUser()) {
executor = queues.getBatchQueue();
} else {
executor = queues.getInteractiveQueue();
}
return executor;
return queues.getQueue(user.getCapabilities().getQueueType());
}
}

View File

@@ -15,6 +15,7 @@
package com.google.gerrit.sshd;
import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.git.QueueProvider;
import com.google.gerrit.server.git.WorkQueue;
import com.google.inject.Inject;
@@ -64,13 +65,13 @@ public class CommandExecutorQueueProvider implements QueueProvider {
}
@Override
public WorkQueue.Executor getInteractiveQueue() {
return interactiveExecutor;
public WorkQueue.Executor getQueue(QueueType type) {
switch (type) {
case INTERACTIVE:
return interactiveExecutor;
case BATCH:
default:
return batchExecutor;
}
}
@Override
public WorkQueue.Executor getBatchQueue() {
return batchExecutor;
}
}

View File

@@ -1,11 +0,0 @@
package com.google.gerrit.sshd;
import com.google.gerrit.server.git.WorkQueue;
public interface QueueProvider {
public WorkQueue.Executor getInteractiveQueue();
public WorkQueue.Executor getBatchQueue();
}

View File

@@ -28,6 +28,7 @@ import com.google.gerrit.server.account.AccountManager;
import com.google.gerrit.server.account.ChangeUserName;
import com.google.gerrit.server.config.FactoryModule;
import com.google.gerrit.server.config.GerritRequestModule;
import com.google.gerrit.server.git.QueueProvider;
import com.google.gerrit.server.git.WorkQueue;
import com.google.gerrit.server.project.ProjectControl;
import com.google.gerrit.server.ssh.SshInfo;