[fix][broker] Revert : Forbid uploading BYTES schema with admin API (#18995) (#20123)
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 91a8140..0bab772 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 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 e8e582f..b37114f 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 @@
}
- @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 0ec72b2..7ba4529 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 @@
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 @@
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());