Skip to content

Commit cd7be97

Browse files
committed
Fix compile
1 parent 01ec33a commit cd7be97

File tree

2 files changed

+33
-15
lines changed

2 files changed

+33
-15
lines changed

modules/repository-s3/src/javaRestTest/java/org/elasticsearch/repositories/s3/RepositoryS3ConditionalWritesUnsupportedRestIT.java

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
import fixture.s3.S3HttpFixture;
1414
import fixture.s3.S3HttpHandler;
1515

16+
import com.carrotsearch.randomizedtesting.annotations.SuppressForbidden;
1617
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakFilters;
1718
import com.carrotsearch.randomizedtesting.annotations.ThreadLeakScope;
19+
import com.sun.net.httpserver.HttpExchange;
1820
import com.sun.net.httpserver.HttpHandler;
1921

2022
import org.elasticsearch.ExceptionsHelper;
@@ -40,6 +42,7 @@
4042

4143
@ThreadLeakFilters(filters = { TestContainersThreadFilter.class })
4244
@ThreadLeakScope(ThreadLeakScope.Scope.NONE) // https://github.com/elastic/elasticsearch/issues/102482
45+
@SuppressForbidden("HttpExchange and Headers are ok here")
4346
public class RepositoryS3ConditionalWritesUnsupportedRestIT extends AbstractRepositoryS3RestTestCase {
4447

4548
private static final String PREFIX = getIdentifierPrefix("RepositoryS3BasicCredentialsRestIT");
@@ -50,32 +53,46 @@ public class RepositoryS3ConditionalWritesUnsupportedRestIT extends AbstractRepo
5053
private static final String CLIENT = "no_conditional_writes_client";
5154

5255
private static final Supplier<String> regionSupplier = new DynamicRegionSupplier();
56+
5357
private static final S3HttpFixture s3Fixture = new S3HttpFixture(
5458
true,
5559
BUCKET,
5660
BASE_PATH,
5761
fixedAccessKey(ACCESS_KEY, regionSupplier, "s3")
5862
) {
5963
@Override
64+
@SuppressForbidden("HttpExchange and Headers are ok here")
6065
protected HttpHandler createHandler() {
61-
final var delegateHandler = asInstanceOf(S3HttpHandler.class, super.createHandler());
62-
return exchange -> {
63-
if (exchange.getRequestHeaders().containsKey("if-match") || exchange.getRequestHeaders().containsKey("if-none-match")) {
64-
final var exception = new AssertionError(
65-
Strings.format(
66-
"unsupported conditional write: [%s] with headers [%s]",
67-
delegateHandler.parseRequest(exchange),
68-
exchange.getRequestHeaders()
69-
)
70-
);
71-
ExceptionsHelper.maybeDieOnAnotherThread(exception);
72-
throw exception;
73-
}
74-
delegateHandler.handle(exchange);
75-
};
66+
return new AssertNoConditionalWritesHandler(asInstanceOf(S3HttpHandler.class, super.createHandler()));
7667
}
7768
};
7869

70+
@SuppressForbidden("HttpExchange and Headers are ok here")
71+
private static class AssertNoConditionalWritesHandler implements HttpHandler {
72+
73+
private final S3HttpHandler delegateHandler;
74+
75+
private AssertNoConditionalWritesHandler(S3HttpHandler delegateHandler) {
76+
this.delegateHandler = delegateHandler;
77+
}
78+
79+
@Override
80+
public void handle(HttpExchange exchange) throws IOException {
81+
if (exchange.getRequestHeaders().containsKey("if-match") || exchange.getRequestHeaders().containsKey("if-none-match")) {
82+
final var exception = new AssertionError(
83+
Strings.format(
84+
"unsupported conditional write: [%s] with headers [%s]",
85+
delegateHandler.parseRequest(exchange),
86+
exchange.getRequestHeaders()
87+
)
88+
);
89+
ExceptionsHelper.maybeDieOnAnotherThread(exception);
90+
throw exception;
91+
}
92+
delegateHandler.handle(exchange);
93+
}
94+
}
95+
7996
@Override
8097
protected Settings extraRepositorySettings() {
8198
return Settings.builder()

modules/repository-s3/src/test/java/org/elasticsearch/repositories/s3/S3BlobContainerRetriesTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ protected BlobContainer createBlobContainer(
249249
S3Repository.MAX_COPY_SIZE_BEFORE_MULTIPART.getDefault(Settings.EMPTY),
250250
S3Repository.CANNED_ACL_SETTING.getDefault(Settings.EMPTY),
251251
S3Repository.STORAGE_CLASS_SETTING.getDefault(Settings.EMPTY),
252+
S3Repository.UNSAFELY_INCOMPATIBLE_WITH_S3_WRITES.getDefault(Settings.EMPTY),
252253
repositoryMetadata,
253254
BigArrays.NON_RECYCLING_INSTANCE,
254255
new DeterministicTaskQueue().getThreadPool(),

0 commit comments

Comments
 (0)