diff --git a/WORKSPACE b/WORKSPACE index 64a06ae983..97fb1fb427 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -556,10 +556,10 @@ maven_jar( maven_jar( name = "blame_cache", - artifact = "com/google/gitiles:blame-cache:0.2", + artifact = "com/google/gitiles:blame-cache:0.2-1", attach_source = False, repository = GERRIT, - sha1 = "519fc548df920123bce986056d2f644663665ae4", + sha1 = "da7977e8b140b63f18054214c1d1b86ffa6896cb", ) # Keep this version of Soy synchronized with the version used in Gitiles. diff --git a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ServerInfo.java b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ServerInfo.java index 0a37307756..dcd1cf1e39 100644 --- a/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ServerInfo.java +++ b/gerrit-gwtui-common/src/main/java/com/google/gerrit/client/info/ServerInfo.java @@ -70,7 +70,8 @@ public class ServerInfo extends JavaScriptObject { public final native String replyTooltip() /*-{ return this.reply_tooltip; }-*/; - public final native boolean showAssigneeInChangesTable() /*-{ return this.show_assignee_in_changes_table || false; }-*/; + public final native boolean + showAssigneeInChangesTable() /*-{ return this.show_assignee_in_changes_table || false; }-*/; public final native int updateDelay() /*-{ return this.update_delay || 0; }-*/; diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java b/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java index 925cf64ebe..5c09055ef7 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/config/GetServerInfo.java @@ -207,7 +207,8 @@ public class GetServerInfo implements RestReadView { boolean hasAssigneeInIndex = indexes.getSearchIndex().getSchema().hasField(ChangeField.ASSIGNEE); info.showAssigneeInChangesTable = - toBoolean(cfg.getBoolean("change", "showAssigneeInChangesTable", false) && hasAssigneeInIndex); + toBoolean( + cfg.getBoolean("change", "showAssigneeInChangesTable", false) && hasAssigneeInIndex); info.largeChange = cfg.getInt("change", "largeChange", 500); info.replyTooltip = Optional.ofNullable(cfg.getString("change", null, "replyTooltip")).orElse("Reply and score") diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/PluginLoader.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/PluginLoader.java index d790fe9ea8..e0afc08ec9 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/PluginLoader.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/PluginLoader.java @@ -79,6 +79,7 @@ public class PluginLoader implements LifecycleListener { private final Path pluginsDir; private final Path dataDir; + private final Path tempDir; private final PluginGuiceEnvironment env; private final ServerInformationImpl srvInfoImpl; private final PluginUser.Factory pluginUserFactory; @@ -107,6 +108,7 @@ public class PluginLoader implements LifecycleListener { UniversalServerPluginProvider pluginFactory) { pluginsDir = sitePaths.plugins_dir; dataDir = sitePaths.data_dir; + tempDir = sitePaths.tmp_dir; env = pe; srvInfoImpl = sii; pluginUserFactory = puf; @@ -325,8 +327,34 @@ public class PluginLoader implements LifecycleListener { } } + private void removeStalePluginFiles() { + DirectoryStream.Filter filter = + new DirectoryStream.Filter() { + @Override + public boolean accept(Path entry) throws IOException { + return entry.getFileName().toString().startsWith("plugin_"); + } + }; + try (DirectoryStream files = Files.newDirectoryStream(tempDir, filter)) { + for (Path file : files) { + log.info("Removing stale plugin file: " + file.toFile().getName()); + try { + Files.delete(file); + } catch (IOException e) { + log.error( + String.format( + "Failed to remove stale plugin file %s: %s", + file.toFile().getName(), e.getMessage())); + } + } + } catch (IOException e) { + log.warn("Unable to discover stale plugin files: " + e.getMessage()); + } + } + @Override public synchronized void start() { + removeStalePluginFiles(); log.info("Loading plugins from " + pluginsDir.toAbsolutePath()); srvInfoImpl.state = ServerInformation.State.STARTUP; rescan();