This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new 7d72df30646 [fix][broker] Revert : Forbid uploading BYTES schema with 
admin API (#18995) (#20123)
7d72df30646 is described below

commit 7d72df306461da76cca2c895064abefcebb456ad
Author: Penghui Li <peng...@apache.org>
AuthorDate: Wed Apr 19 12:31:25 2023 +0800

    [fix][broker] Revert : Forbid uploading BYTES schema with admin API 
(#18995) (#20123)
---
 .../broker/admin/impl/SchemasResourceBase.java      |  4 ----
 .../pulsar/broker/admin/AdminApiSchemaTest.java     | 11 -----------
 .../java/org/apache/pulsar/schema/SchemaTest.java   | 21 ++++++++-------------
 3 files changed, 8 insertions(+), 28 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 91a8140fde1..0bab772044a 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
@@ -114,10 +114,6 @@ public class SchemasResourceBase extends AdminResource {
     }
 
     public CompletableFuture<SchemaVersion> postSchemaAsync(PostSchemaPayload 
payload, boolean authoritative) {
-        if (SchemaType.BYTES.name().equals(payload.getType())) {
-            return CompletableFuture.failedFuture(new 
RestException(Response.Status.NOT_ACCEPTABLE,
-                    "Do not upload a BYTES schema, because it's the default 
schema type"));
-        }
         return validateOwnershipAndOperationAsync(authoritative, 
TopicOperation.PRODUCE)
                 .thenCompose(__ -> 
getSchemaCompatibilityStrategyAsyncWithoutAuth())
                 .thenCompose(schemaCompatibilityStrategy -> {
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java
index e8e582f80b0..b37114f1802 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/admin/AdminApiSchemaTest.java
@@ -185,17 +185,6 @@ public class AdminApiSchemaTest extends 
MockedPulsarServiceBaseTest {
 
     }
 
-    @Test
-    public void testCreateBytesSchema() {
-        // forbid admin api creating BYTES schema to be consistent with client 
side
-        try {
-            testSchemaInfoApi(Schema.BYTES, "schematest/test/test-BYTES");
-            fail("should fail");
-        } catch (Exception e) {
-            assertTrue(e.getMessage().contains("Do not upload a BYTES 
schema"));
-        }
-    }
-
     @Test(dataProvider = "version")
     public void testPostSchemaCompatibilityStrategy(ApiVersion version) throws 
PulsarAdminException {
         String namespace = format("%s%s%s", "schematest", 
(ApiVersion.V1.equals(version) ? "/" + cluster + "/" : "/"),
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 0ec72b2ef47..7ba4529cdbd 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
@@ -513,17 +513,13 @@ public class SchemaTest extends 
MockedPulsarServiceBaseTest {
         admin.topics().createPartitionedTopic(topic, 2);
 
         // set schema
-        if (!schema.equals(SchemaType.BYTES)) {
-            // don't upload bytes schema with admin API
-            // because null schema means the BYTES schema
-            SchemaInfo schemaInfo = SchemaInfoImpl
-                    .builder()
-                    .schema(new byte[0])
-                    .name("dummySchema")
-                    .type(schema)
-                    .build();
-            admin.schemas().createSchema(topic, schemaInfo);
-        }
+        SchemaInfo schemaInfo = SchemaInfoImpl
+                .builder()
+                .schema(new byte[0])
+                .name("dummySchema")
+                .type(schema)
+                .build();
+        admin.schemas().createSchema(topic, schemaInfo);
 
         Producer<byte[]> producer = pulsarClient
                 .newProducer()
@@ -548,8 +544,7 @@ public class SchemaTest extends MockedPulsarServiceBaseTest 
{
         Message<GenericRecord> message2 = consumer2.receive();
         if (schema == SchemaType.BYTES) {
             assertEquals(schema, 
message.getReaderSchema().get().getSchemaInfo().getType());
-            // default schema of AUTO_CONSUME is BYTES
-            
assertTrue(message2.getReaderSchema().get().toString().contains("BYTES"));
+            assertEquals(schema, 
message2.getReaderSchema().get().getSchemaInfo().getType());
         } else if (schema == SchemaType.NONE) {
             // schema NONE is always reported as BYTES
             assertEquals(SchemaType.BYTES, 
message.getReaderSchema().get().getSchemaInfo().getType());

Reply via email to