Allow to inherit receive.maxObjectSizeLimit from parent project
In the current implementation it is possible to set the limit per project in the project.config on refs/meta/config, and at global level in $site/etc/gerrit.config. The project setting may override the global setting if it is lower. Changing the global setting requires a server restart. A limitation of this implementation is that we cannot set the limit at a project level and have it inherited to its child projects; it is necessary to explicitly set the limit on each child project. This limitation causes a lot of extra work in the case where for example we have a project hierarchy like: |- All-Projects | -- Namespace-A | | | |-- Project-A | |-- Project-B . . .. . . .. | |-- Project-X | | -- Namespace-B Where the Namespace-X projects are assumed to be "parent only" projects, if we want to set a limit for all the projects under a namespace hierarchy, we need to set it explicitly on all those projects individually rather than only on the "Namespace-X". With this change the limit is inherited from the parent project. The global limit is still respected, and the project still can't set a higher value than the global, either explicitly per project or via inheritance. Similarly, if no global limit is specified, a child project still may not set a limit higher than its parent. The inheritedValue is removed from the config info and replaced by a summary string describing how the effective value was inherited or overridden from the parent project or the global config. This string is used as the tooltip on the effective value in the UI. As a side effect of this change, it is now possible to effectively change the global limit without having to restart the server, by setting it on the All-Projects project. Note that this only works if the new limit is lower than what is already configured in the actual global limit in gerrit.config. Bug: Issue 9528 Change-Id: I5f8b333e905ed0a147526ae33ff2bab2cbe222ef
This commit is contained in:
@@ -36,8 +36,6 @@ public interface AdminMessages extends Messages {
|
||||
|
||||
String effectiveMaxObjectSizeLimit(String effectiveMaxObjectSizeLimit);
|
||||
|
||||
String globalMaxObjectSizeLimit(String globalMaxObjectSizeLimit);
|
||||
|
||||
String noMaxObjectSizeLimit();
|
||||
|
||||
String pluginProjectOptionsTitle(String pluginName);
|
||||
|
@@ -6,7 +6,6 @@ deletedGroup = Deleted Group {0}
|
||||
deletedReference = Reference {0} was deleted
|
||||
deletedSection = Section {0} was deleted
|
||||
effectiveMaxObjectSizeLimit = effective: {0} bytes
|
||||
globalMaxObjectSizeLimit = The global max object size limit is set to {0}. The limit cannot be increased on project level.
|
||||
noMaxObjectSizeLimit = No max object size limit is set.
|
||||
pluginProjectOptionsTitle = {0} Plugin Options
|
||||
pluginProjectOptionsTitle = {0} Plugin
|
||||
|
@@ -404,9 +404,8 @@ public class ProjectInfoScreen extends ProjectScreen {
|
||||
if (result.maxObjectSizeLimit().value() != null) {
|
||||
effectiveMaxObjectSizeLimit.setText(
|
||||
AdminMessages.I.effectiveMaxObjectSizeLimit(result.maxObjectSizeLimit().value()));
|
||||
if (result.maxObjectSizeLimit().inheritedValue() != null) {
|
||||
effectiveMaxObjectSizeLimit.setTitle(
|
||||
AdminMessages.I.globalMaxObjectSizeLimit(result.maxObjectSizeLimit().inheritedValue()));
|
||||
if (result.maxObjectSizeLimit().summary() != null) {
|
||||
effectiveMaxObjectSizeLimit.setTitle(result.maxObjectSizeLimit().summary());
|
||||
}
|
||||
} else {
|
||||
effectiveMaxObjectSizeLimit.setText(AdminMessages.I.noMaxObjectSizeLimit());
|
||||
|
@@ -158,10 +158,10 @@ public class ConfigInfo extends JavaScriptObject {
|
||||
public static class MaxObjectSizeLimitInfo extends JavaScriptObject {
|
||||
public final native String value() /*-{ return this.value; }-*/;
|
||||
|
||||
public final native String inheritedValue() /*-{ return this.inherited_value; }-*/;
|
||||
|
||||
public final native String configuredValue() /*-{ return this.configured_value }-*/;
|
||||
|
||||
public final native String summary() /*-{ return this.summary; }-*/;
|
||||
|
||||
protected MaxObjectSizeLimitInfo() {}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user