This is an automated email from the ASF dual-hosted git repository.
yubiao pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/branch-2.10 by this push:
new 838c0c331f6 [fix] [broker] [branch-2.10] Remove the unnecessary HTTP
response header: Content-Encoding when calling getSchema (#22307)
838c0c331f6 is described below
commit 838c0c331f6c8876c08827ac90adf3eedbf9bf8c
Author: fengyubiao <[email protected]>
AuthorDate: Wed Mar 20 13:50:54 2024 +0800
[fix] [broker] [branch-2.10] Remove the unnecessary HTTP response header:
Content-Encoding when calling getSchema (#22307)
---
.../broker/admin/impl/SchemasResourceBase.java | 5 ++-
.../java/org/apache/pulsar/schema/SchemaTest.java | 41 ++++++++++++++++++++++
2 files changed, 43 insertions(+), 3 deletions(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
index b9533c6f291..5bef4ccd0aa 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
@@ -29,7 +29,6 @@ import java.time.Clock;
import java.util.List;
import java.util.stream.Collectors;
import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.pulsar.broker.admin.AdminResource;
import
org.apache.pulsar.broker.service.schema.SchemaRegistry.SchemaAndMetadata;
@@ -258,7 +257,7 @@ public class SchemasResourceBase extends AdminResource {
response.resume(Response.status(
Response.Status.NOT_FOUND.getStatusCode(), "Schema is
deleted").build());
} else {
-
response.resume(Response.ok().encoding(MediaType.APPLICATION_JSON)
+ response.resume(Response.ok()
.entity(convertSchemaAndMetadataToGetSchemaResponse(schema)).build());
}
} else {
@@ -275,7 +274,7 @@ public class SchemasResourceBase extends AdminResource {
response.resume(Response.status(
Response.Status.NOT_FOUND.getStatusCode(), "Schemas
not found").build());
} else {
-
response.resume(Response.ok().encoding(MediaType.APPLICATION_JSON)
+ response.resume(Response.ok()
.entity(GetAllVersionsSchemaResponse.builder()
.getSchemaResponses(schemas.stream()
.map(SchemasResourceBase::convertSchemaAndMetadataToGetSchemaResponse)
diff --git
a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
index dcd6671780a..c7cbc9b92c5 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.collect.Sets;
import java.io.ByteArrayInputStream;
import java.io.Serializable;
+import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collections;
@@ -44,17 +45,23 @@ import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
+import javax.ws.rs.client.InvocationCallback;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedMap;
import lombok.Cleanup;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.apache.avro.Schema.Parser;
import org.apache.bookkeeper.client.BKException;
import org.apache.bookkeeper.client.BookKeeper;
+import org.apache.pulsar.broker.BrokerTestUtil;
import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
import org.apache.pulsar.broker.service.schema.BookkeeperSchemaStorage;
import org.apache.pulsar.broker.service.schema.SchemaRegistry;
import org.apache.pulsar.broker.service.schema.SchemaRegistryServiceImpl;
import org.apache.pulsar.client.admin.PulsarAdminException;
+import org.apache.pulsar.client.admin.internal.SchemasImpl;
import org.apache.pulsar.client.api.Consumer;
import org.apache.pulsar.client.api.Message;
import org.apache.pulsar.client.api.Producer;
@@ -1257,6 +1264,40 @@ public class SchemaTest extends
MockedPulsarServiceBaseTest {
executor.shutdownNow();
}
+ @Test
+ public void testHTTPGetSchema() throws Exception {
+ final String namespace = "test-namespace-" + randomName(16);
+ String ns = PUBLIC_TENANT + "/" + namespace;
+ admin.namespaces().createNamespace(ns, Sets.newHashSet(CLUSTER_NAME));
+ final String topic = BrokerTestUtil.newUniqueName("persistent://" + ns
+ "/tp");
+ // create a schema.
+ pulsarClient.newProducer(Schema.STRING).topic(topic).create().close();
+
+ // call get schemas.
+ SchemasImpl schemas = (SchemasImpl) admin.schemas();
+ Method methodSchemasPath =
SchemasImpl.class.getDeclaredMethod("schemasPath", new
Class[]{TopicName.class});
+ methodSchemasPath.setAccessible(true);
+ WebTarget path = (WebTarget) methodSchemasPath.invoke(schemas,
TopicName.get(topic));
+ CompletableFuture<javax.ws.rs.core.Response> response = new
CompletableFuture();
+ schemas.asyncGetRequest(path, new
InvocationCallback<javax.ws.rs.core.Response>() {
+
+ @Override
+ public void completed(javax.ws.rs.core.Response getSchemaResponse)
{
+ response.complete(getSchemaResponse);
+ }
+
+ @Override
+ public void failed(Throwable throwable) {
+ response.completeExceptionally(throwable);
+ }
+ });
+ MultivaluedMap<String, Object> responseHeaders =
response.join().getHeaders();
+ assertTrue(!responseHeaders.containsKey(HttpHeaders.CONTENT_ENCODING)
+ ||
!responseHeaders.get(HttpHeaders.CONTENT_ENCODING).toString().contains("application/json"));
+ assertTrue(responseHeaders.containsKey(HttpHeaders.CONTENT_TYPE)
+ &&
responseHeaders.get(HttpHeaders.CONTENT_TYPE).toString().contains("application/json"));
+ }
+
@EqualsAndHashCode
static class User implements Serializable {
private String name;