Merge branch 'stable-2.11'

* stable-2.11:
  Correct documentation of required capabilities for listing plugins
  Always show 'Not Current' as state when looking at old patch set
  Log IOExceptions on update of project configuration
  H2: Don't show stack trace when failing to build BloomFilter
  Update CodeMirror to 5.0 and consume from Maven Central
  Add support to consume CodeMirror from org.webjars on Maven Central
  Fix slave cloning issue by binding Scanning rather than Searching /index
  Bump JGit version to 3.7.1.201504261725-r
  Hybrid OpenID/OAuth: Check for session validity during logout
  RestApiServlet: Leave OutputStream open when flushing base64 padding
  RestApiServlet: Flush pending padding as well

Change-Id: Ib7fa8885cafea1e2dc300257c4dbaee3ef132df2
This commit is contained in:
David Pursehouse 2015-04-30 11:56:32 +09:00
commit 4aedf71c9f
11 changed files with 59 additions and 12 deletions

View File

@ -14,9 +14,12 @@ plugin ls - List the installed plugins.
List the installed plugins and show their version and status.
== ACCESS
* Caller must be a member of the privileged 'Administrators' group.
* The caller must be a member of a group that is granted the
link:access-control.html#capability_viewPlugins[View Plugins]
capability or the link:access-control.html#capability_administrateServer[
Administrate Server] capability.
* link:config-gerrit.html#plugins.allowRemoteAdmin[plugins.allowRemoteAdmin]
must be enabled in `$site_path/etc/gerrit.config`.
must be enabled in `$site_path/etc/gerrit.config`.
== SCRIPTING
This command is intended to be used in scripts.

View File

@ -388,7 +388,7 @@ public class H2CacheImpl<K, V> extends AbstractLoadingCache<K, V> implements
return b;
}
} catch (SQLException e) {
log.warn("Cannot build BloomFilter for " + url, e);
log.warn("Cannot build BloomFilter for " + url + ": " + e.getMessage());
c = close(c);
return null;
} finally {

View File

@ -1128,13 +1128,12 @@ public class ChangeScreen extends Screen {
private void renderRevisionInfo(ChangeInfo info,
NativeMap<ActionInfo> actionMap) {
RevisionInfo revisionInfo = info.revision(revision);
boolean current = info.status().isOpen()
&& revision.equals(info.current_revision())
boolean current = revision.equals(info.current_revision())
&& !revisionInfo.is_edit();
if (revisionInfo.is_edit()) {
statusText.setInnerText(Util.C.changeEdit());
} else if (!current && info.status() == Change.Status.NEW) {
} else if (!current) {
statusText.setInnerText(Util.C.notCurrent());
labels.setVisible(false);
} else {
@ -1149,7 +1148,7 @@ public class ChangeScreen extends Screen {
}
history.set(commentLinkProcessor, replyAction, changeId, info);
if (current) {
if (current && info.status().isOpen()) {
quickApprove.set(info, revision, replyAction);
loadSubmitType(info.status(), isSubmittable(info));
} else {

View File

@ -50,6 +50,8 @@ class OAuthOverOpenIDLogoutServlet extends HttpLogoutServlet {
protected void doLogout(HttpServletRequest req, HttpServletResponse rsp)
throws IOException {
super.doLogout(req, rsp);
oauthSession.get().logout();
if (req.getSession(false) != null) {
oauthSession.get().logout();
}
}
}

View File

@ -54,6 +54,7 @@ import com.google.gerrit.server.config.MasterNodeStartup;
import com.google.gerrit.server.config.RestCacheAdminModule;
import com.google.gerrit.server.contact.ContactStoreModule;
import com.google.gerrit.server.contact.HttpContactStoreConnection;
import com.google.gerrit.server.git.ChangeCacheImplModule;
import com.google.gerrit.server.git.GarbageCollectionModule;
import com.google.gerrit.server.git.ReceiveCommitsExecutorModule;
import com.google.gerrit.server.git.WorkQueue;
@ -324,6 +325,7 @@ public class Daemon extends SiteProgram {
modules.add(new DiffExecutorModule());
modules.add(new MimeUtil2Module());
modules.add(cfgInjector.getInstance(GerritGlobalModule.class));
modules.add(new ChangeCacheImplModule(slave));
modules.add(new InternalAccountDirectory.Module());
modules.add(new DefaultCacheFactory.Module());
if (emailModule != null) {

View File

@ -76,7 +76,6 @@ import com.google.gerrit.server.git.MergeQueue;
import com.google.gerrit.server.git.MergeUtil;
import com.google.gerrit.server.git.NotesBranchUtil;
import com.google.gerrit.server.git.ReceivePackInitializer;
import com.google.gerrit.server.git.SearchingChangeCacheImpl;
import com.google.gerrit.server.git.TagCache;
import com.google.gerrit.server.git.TransferConfig;
import com.google.gerrit.server.git.validators.CommitValidationListener;
@ -158,7 +157,6 @@ public class GerritGlobalModule extends FactoryModule {
install(authModule);
install(AccountByEmailCacheImpl.module());
install(AccountCacheImpl.module());
install(SearchingChangeCacheImpl.module());
install(ChangeKindCacheImpl.module());
install(ConflictsCacheImpl.module());
install(GroupCacheImpl.module());
@ -257,7 +255,6 @@ public class GerritGlobalModule extends FactoryModule {
DynamicSet.setOf(binder(), ProjectDeletedListener.class);
DynamicSet.setOf(binder(), HeadUpdatedListener.class);
DynamicSet.setOf(binder(), UsageDataPublishedListener.class);
DynamicSet.bind(binder(), GitReferenceUpdatedListener.class).to(SearchingChangeCacheImpl.class);
DynamicSet.bind(binder(), GitReferenceUpdatedListener.class).to(ReindexAfterUpdate.class);
DynamicSet.bind(binder(), GitReferenceUpdatedListener.class)
.to(ProjectConfigEntry.UpdateChecker.class);

View File

@ -0,0 +1,38 @@
// Copyright (C) 2015 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.gerrit.server.git;
import com.google.gerrit.extensions.events.GitReferenceUpdatedListener;
import com.google.gerrit.extensions.registration.DynamicSet;
import com.google.inject.AbstractModule;
public class ChangeCacheImplModule extends AbstractModule {
private final boolean slave;
public ChangeCacheImplModule(boolean slave) {
this.slave = slave;
}
@Override
protected void configure() {
if (slave) {
install(ScanningChangeCacheImpl.module());
} else {
install(SearchingChangeCacheImpl.module());
DynamicSet.bind(binder(), GitReferenceUpdatedListener.class)
.to(SearchingChangeCacheImpl.class);
}
}
}

View File

@ -48,7 +48,7 @@ import java.util.concurrent.ExecutionException;
@Singleton
public class ScanningChangeCacheImpl implements ChangeCache {
private static final Logger log =
LoggerFactory.getLogger(SearchingChangeCacheImpl.class);
LoggerFactory.getLogger(ScanningChangeCacheImpl.class);
public static Module module() {
return new CacheModule() {

View File

@ -191,6 +191,8 @@ public class PutConfig implements RestModifyView<ProjectResource, Input> {
throw new ResourceConflictException("Cannot update " + projectName
+ ": " + e.getCause().getMessage());
} else {
log.warn(String.format("Failed to update config of project %s.",
projectName), e);
throw new ResourceConflictException("Cannot update " + projectName);
}
}

View File

@ -39,6 +39,7 @@ import com.google.gerrit.server.config.GerritServerConfig;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.config.TrackingFooters;
import com.google.gerrit.server.config.TrackingFootersProvider;
import com.google.gerrit.server.git.ChangeCacheImplModule;
import com.google.gerrit.server.git.EmailReviewCommentsExecutor;
import com.google.gerrit.server.git.GarbageCollection;
import com.google.gerrit.server.git.GitRepositoryManager;
@ -128,6 +129,7 @@ public class InMemoryModule extends FactoryModule {
}
});
install(cfgInjector.getInstance(GerritGlobalModule.class));
install(new ChangeCacheImplModule(false));
factory(GarbageCollection.Factory.class);
bindScope(RequestScoped.class, PerThreadRequestScope.REQUEST);

View File

@ -39,6 +39,7 @@ import com.google.gerrit.server.config.RestCacheAdminModule;
import com.google.gerrit.server.config.SitePath;
import com.google.gerrit.server.contact.ContactStoreModule;
import com.google.gerrit.server.contact.HttpContactStoreConnection;
import com.google.gerrit.server.git.ChangeCacheImplModule;
import com.google.gerrit.server.git.GarbageCollectionModule;
import com.google.gerrit.server.git.LocalDiskRepositoryManager;
import com.google.gerrit.server.git.ReceiveCommitsExecutorModule;
@ -288,6 +289,7 @@ public class WebAppInitializer extends GuiceServletContextListener
modules.add(new DiffExecutorModule());
modules.add(new MimeUtil2Module());
modules.add(cfgInjector.getInstance(GerritGlobalModule.class));
modules.add(new ChangeCacheImplModule(false));
modules.add(new InternalAccountDirectory.Module());
modules.add(new DefaultCacheFactory.Module());
modules.add(new SmtpEmailSender.Module());