summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@gmail.com>2022-11-21 08:00:28 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-11-21 08:00:28 +0000
commit35b42a202bdacd930d4b37f1dd2132a341622842 (patch)
tree5e51fd486f3f70040652711d24a45d805c96f637
parent2d86020cc07384317463f07c6e5901ccd60ae9b7 (diff)
parent29c4ccc31998f6d8fba783bf34f3a13f297f685a (diff)
Merge "Remove eTag from RevisionResource, subject to experiment" into stable-3.4
-rw-r--r--java/com/google/gerrit/httpd/restapi/RestApiServlet.java19
-rw-r--r--java/com/google/gerrit/server/experiments/ExperimentFeaturesConstants.java3
-rw-r--r--java/com/google/gerrit/server/restapi/change/GetRevisionActions.java2
3 files changed, 20 insertions, 4 deletions
diff --git a/java/com/google/gerrit/httpd/restapi/RestApiServlet.java b/java/com/google/gerrit/httpd/restapi/RestApiServlet.java
index 9b86a4fe1f..269d1c413a 100644
--- a/java/com/google/gerrit/httpd/restapi/RestApiServlet.java
+++ b/java/com/google/gerrit/httpd/restapi/RestApiServlet.java
@@ -30,6 +30,7 @@ import static com.google.common.net.HttpHeaders.AUTHORIZATION;
import static com.google.common.net.HttpHeaders.CONTENT_TYPE;
import static com.google.common.net.HttpHeaders.ORIGIN;
import static com.google.common.net.HttpHeaders.VARY;
+import static com.google.gerrit.server.experiments.ExperimentFeaturesConstants.GERRIT_BACKEND_REQUEST_FEATURE_REMOVE_REVISION_ETAG;
import static java.math.RoundingMode.CEILING;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -110,7 +111,9 @@ import com.google.gerrit.server.RequestListener;
import com.google.gerrit.server.audit.ExtendedHttpAuditEvent;
import com.google.gerrit.server.cache.PerThreadCache;
import com.google.gerrit.server.change.ChangeFinder;
+import com.google.gerrit.server.change.RevisionResource;
import com.google.gerrit.server.config.GerritServerConfig;
+import com.google.gerrit.server.experiments.ExperimentFeatures;
import com.google.gerrit.server.group.GroupAuditService;
import com.google.gerrit.server.logging.Metadata;
import com.google.gerrit.server.logging.PerformanceLogContext;
@@ -252,6 +255,7 @@ public class RestApiServlet extends HttpServlet {
final PluginSetContext<ExceptionHook> exceptionHooks;
final Injector injector;
final DynamicMap<DynamicOptions.DynamicBean> dynamicBeans;
+ final ExperimentFeatures experimentFeatures;
@Inject
Globals(
@@ -269,7 +273,8 @@ public class RestApiServlet extends HttpServlet {
RetryHelper retryHelper,
PluginSetContext<ExceptionHook> exceptionHooks,
Injector injector,
- DynamicMap<DynamicOptions.DynamicBean> dynamicBeans) {
+ DynamicMap<DynamicOptions.DynamicBean> dynamicBeans,
+ ExperimentFeatures experimentFeatures) {
this.currentUser = currentUser;
this.webSession = webSession;
this.paramParser = paramParser;
@@ -286,6 +291,7 @@ public class RestApiServlet extends HttpServlet {
allowOrigin = makeAllowOrigin(config);
this.injector = injector;
this.dynamicBeans = dynamicBeans;
+ this.experimentFeatures = experimentFeatures;
}
private static Pattern makeAllowOrigin(Config cfg) {
@@ -775,6 +781,11 @@ public class RestApiServlet extends HttpServlet {
TraceContext.newTimer(
"RestApiServlet#getEtagWithRetry:resource",
Metadata.builder().restViewName(rsrc.getClass().getSimpleName()).build())) {
+ if (rsrc instanceof RevisionResource
+ && globals.experimentFeatures.isFeatureEnabled(
+ GERRIT_BACKEND_REQUEST_FEATURE_REMOVE_REVISION_ETAG)) {
+ return null;
+ }
return invokeRestEndpointWithRetry(
req,
traceContext,
@@ -1056,7 +1067,7 @@ public class RestApiServlet extends HttpServlet {
if (rsrc instanceof RestResource.HasETag) {
String have = req.getHeader(HttpHeaders.IF_NONE_MATCH);
- if (have != null) {
+ if (!Strings.isNullOrEmpty(have)) {
String eTag = getEtagWithRetry(req, traceContext, (RestResource.HasETag) rsrc);
return have.equals(eTag);
}
@@ -1134,7 +1145,9 @@ public class RestApiServlet extends HttpServlet {
res.setHeader(HttpHeaders.ETAG, eTag);
} else if (rsrc instanceof RestResource.HasETag) {
String eTag = getEtagWithRetry(req, traceContext, (RestResource.HasETag) rsrc);
- res.setHeader(HttpHeaders.ETAG, eTag);
+ if (!Strings.isNullOrEmpty(eTag)) {
+ res.setHeader(HttpHeaders.ETAG, eTag);
+ }
}
if (rsrc instanceof RestResource.HasLastModified) {
res.setDateHeader(
diff --git a/java/com/google/gerrit/server/experiments/ExperimentFeaturesConstants.java b/java/com/google/gerrit/server/experiments/ExperimentFeaturesConstants.java
index af49438c33..0f8557876c 100644
--- a/java/com/google/gerrit/server/experiments/ExperimentFeaturesConstants.java
+++ b/java/com/google/gerrit/server/experiments/ExperimentFeaturesConstants.java
@@ -22,6 +22,9 @@ public class ExperimentFeaturesConstants {
/** Features that are known experiments and can be referenced in the code. */
public static String UI_FEATURE_PATCHSET_COMMENTS = "UiFeature__patchset_comments";
+ public static String GERRIT_BACKEND_REQUEST_FEATURE_REMOVE_REVISION_ETAG =
+ "GerritBackendRequestFeature__remove_revision_etag";
+
/** Features, enabled by default in the current release. */
public static final ImmutableSet<String> DEFAULT_ENABLED_FEATURES =
ImmutableSet.of(UI_FEATURE_PATCHSET_COMMENTS);
diff --git a/java/com/google/gerrit/server/restapi/change/GetRevisionActions.java b/java/com/google/gerrit/server/restapi/change/GetRevisionActions.java
index 527129cc23..f3c0fb859e 100644
--- a/java/com/google/gerrit/server/restapi/change/GetRevisionActions.java
+++ b/java/com/google/gerrit/server/restapi/change/GetRevisionActions.java
@@ -34,6 +34,6 @@ public class GetRevisionActions implements RestReadView<RevisionResource> {
@Override
public Response<Map<String, ActionInfo>> apply(RevisionResource rsrc) {
- return Response.withMustRevalidate(delegate.format(rsrc));
+ return Response.ok(delegate.format(rsrc));
}
}