diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java index 1cab8e6bd5f2c..f0361944d0a47 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/ServerCnx.java @@ -80,6 +80,7 @@ import org.apache.pulsar.common.api.proto.PulsarApi.CommandFlow; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetLastMessageId; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetSchema; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetTopicsOfNamespace; import org.apache.pulsar.common.api.proto.PulsarApi.CommandLookupTopic; import org.apache.pulsar.common.api.proto.PulsarApi.CommandPartitionedTopicMetadata; @@ -103,6 +104,7 @@ import org.apache.pulsar.common.protocol.schema.SchemaData; import org.apache.pulsar.common.protocol.schema.SchemaInfoUtil; import org.apache.pulsar.common.protocol.schema.SchemaVersion; +import org.apache.pulsar.common.schema.SchemaType; import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.common.util.collections.ConcurrentLongHashMap; import org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite; @@ -908,23 +910,7 @@ protected void handleProducer(final CommandProducer cmdProducer) { disableTcpNoDelayIfNeeded(topicName.toString(), producerName); - CompletableFuture schemaVersionFuture; - if (schema != null) { - schemaVersionFuture = topic.addSchema(schema); - } else { - schemaVersionFuture = topic.hasSchema().thenCompose((hasSchema) -> { - log.info("[{}]-{} {} configured with schema {}", remoteAddress, producerId, - topicName, hasSchema); - CompletableFuture result = new CompletableFuture<>(); - if (hasSchema && (schemaValidationEnforced || topic.getSchemaValidationEnforced())) { - result.completeExceptionally(new IncompatibleSchemaException( - "Producers cannot connect without a schema to topics with a schema")); - } else { - result.complete(SchemaVersion.Empty); - } - return result; - }); - } + CompletableFuture schemaVersionFuture = tryAddSchema(topic, schema); schemaVersionFuture.exceptionally(exception -> { ctx.writeAndFlush(Commands.newError(requestId, @@ -1356,6 +1342,58 @@ protected void handleGetSchema(CommandGetSchema commandGetSchema) { }); } + @Override + protected void handleGetOrCreateSchema(CommandGetOrCreateSchema commandGetOrCreateSchema) { + if (log.isDebugEnabled()) { + log.debug("Received CommandGetOrCreateSchema call from {}", remoteAddress); + } + long requestId = commandGetOrCreateSchema.getRequestId(); + String topicName = commandGetOrCreateSchema.getTopic(); + SchemaData schemaData = getSchema(commandGetOrCreateSchema.getSchema()); + SchemaData schema = schemaData.getType() == SchemaType.NONE ? null : schemaData; + service.getTopicIfExists(topicName).thenAccept(topicOpt -> { + if (topicOpt.isPresent()) { + Topic topic = topicOpt.get(); + CompletableFuture schemaVersionFuture = tryAddSchema(topic, schema); + schemaVersionFuture.exceptionally(ex -> { + ServerError errorCode = BrokerServiceException.getClientErrorCode(ex); + ctx.writeAndFlush(Commands.newGetOrCreateSchemaResponseError( + requestId, errorCode, ex.getMessage())); + return null; + }).thenAccept(schemaVersion -> { + ctx.writeAndFlush(Commands.newGetOrCreateSchemaResponse( + requestId, schemaVersion)); + }); + } else { + ctx.writeAndFlush(Commands.newGetOrCreateSchemaResponseError( + requestId, ServerError.TopicNotFound, "Topic not found")); + } + }).exceptionally(ex -> { + ServerError errorCode = BrokerServiceException.getClientErrorCode(ex); + ctx.writeAndFlush(Commands.newGetOrCreateSchemaResponseError( + requestId, errorCode, ex.getMessage())); + return null; + }); + } + + private CompletableFuture tryAddSchema(Topic topic, SchemaData schema) { + if (schema != null) { + return topic.addSchema(schema); + } else { + return topic.hasSchema().thenCompose((hasSchema) -> { + log.info("[{}] {} configured with schema {}", + remoteAddress, topic.getName(), hasSchema); + CompletableFuture result = new CompletableFuture<>(); + if (hasSchema && (schemaValidationEnforced || topic.getSchemaValidationEnforced())) { + result.completeExceptionally(new IncompatibleSchemaException( + "Producers cannot connect or send message without a schema to topics with a schema")); + } else { + result.complete(SchemaVersion.Empty); + } + return result; + }); + } + } @Override protected boolean isHandshakeCompleted() { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleSchemaTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleSchemaTest.java index 2e1d5f82e031e..392c553d5826e 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleSchemaTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/SimpleSchemaTest.java @@ -18,15 +18,28 @@ */ package org.apache.pulsar.client.api; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + import static java.nio.charset.StandardCharsets.UTF_8; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; import static org.testng.Assert.assertTrue; +import org.apache.avro.reflect.ReflectData; +import org.apache.avro.Schema.Parser; +import org.apache.pulsar.broker.service.schema.LongSchemaVersion; import org.apache.pulsar.client.api.PulsarClientException.IncompatibleSchemaException; +import org.apache.pulsar.client.api.PulsarClientException.InvalidMessageException; import org.apache.pulsar.client.api.schema.GenericRecord; +import org.apache.pulsar.client.impl.ProducerBase; +import org.apache.pulsar.client.impl.schema.writer.AvroWriter; +import org.apache.pulsar.common.protocol.schema.SchemaVersion; import org.apache.pulsar.common.schema.KeyValue; import org.apache.pulsar.common.schema.KeyValueEncodingType; +import org.apache.pulsar.common.schema.SchemaInfo; import org.testng.Assert; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -34,6 +47,11 @@ import org.testng.annotations.Factory; import org.testng.annotations.Test; +import java.io.ByteArrayInputStream; +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.TimeUnit; + public class SimpleSchemaTest extends ProducerConsumerBase { @DataProvider(name = "batchingModes") @@ -94,26 +112,30 @@ public void testString() throws Exception { } } + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor static class V1Data { int i; + } - V1Data() { - this.i = 0; - } - - V1Data(int i) { - this.i = i; - } - - @Override - public int hashCode() { - return i; - } + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + static class V2Data { + int i; + Integer j; + } - @Override - public boolean equals(Object other) { - return (other instanceof V1Data) && i == ((V1Data)other).i; - } + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + static class IncompatibleData { + int i; + int j; } @Test @@ -185,6 +207,172 @@ public void newProducerWithoutSchemaOnTopicWithSchema() throws Exception { } } + @Test + public void newProducerForMessageSchemaOnTopicWithMultiVersionSchema() throws Exception { + String topic = "my-property/my-ns/schema-test"; + Schema v1Schema = Schema.AVRO(V1Data.class); + byte[] v1SchemaBytes = v1Schema.getSchemaInfo().getSchema(); + AvroWriter v1Writer = new AvroWriter<>( + new Parser().parse(new ByteArrayInputStream(v1SchemaBytes))); + Schema v2Schema = Schema.AVRO(V2Data.class); + byte[] v2SchemaBytes = v2Schema.getSchemaInfo().getSchema(); + AvroWriter v2Writer = new AvroWriter<>( + new Parser().parse(new ByteArrayInputStream(v2SchemaBytes))); + try (Producer ignored = pulsarClient.newProducer(v1Schema) + .topic(topic).create()) { + } + try (Producer p = pulsarClient.newProducer(Schema.AVRO(V2Data.class)) + .topic(topic).create()) { + p.send(new V2Data(-1, -1)); + } + V1Data dataV1 = new V1Data(2); + V2Data dataV2 = new V2Data(3, 5); + byte[] contentV1 = v1Writer.write(dataV1); + byte[] contentV2 = v2Writer.write(dataV2); + try (Producer p = pulsarClient.newProducer(Schema.AUTO_PRODUCE_BYTES()) + .topic(topic).create(); + Consumer c = pulsarClient.newConsumer(v2Schema) + .topic(topic) + .subscriptionName("sub1").subscribe()) { + Assert.expectThrows(SchemaSerializationException.class, () -> p.send(contentV1)); + + ((ProducerBase)p).newMessage(Schema.AUTO_PRODUCE_BYTES(Schema.AVRO(V1Data.class))) + .value(contentV1).send(); + p.send(contentV2); + Message msg1 = c.receive(); + V2Data msg1Value = msg1.getValue(); + Assert.assertEquals(dataV1.i, msg1Value.i); + Assert.assertNull(msg1Value.j); + Assert.assertEquals(msg1.getSchemaVersion(), new LongSchemaVersion(0).bytes()); + + Message msg2 = c.receive(); + Assert.assertEquals(dataV2, msg2.getValue()); + Assert.assertEquals(msg2.getSchemaVersion(), new LongSchemaVersion(1).bytes()); + + try { + ((ProducerBase)p).newMessage(Schema.BYTES).value(contentV1).send(); + if (schemaValidationEnforced) { + Assert.fail("Shouldn't be able to send to a schema'd topic with no schema" + + " if SchemaValidationEnabled is enabled"); + } + Message msg3 = c.receive(); + Assert.assertEquals(msg3.getSchemaVersion(), SchemaVersion.Empty.bytes()); + } catch (PulsarClientException e) { + if (schemaValidationEnforced) { + Assert.assertTrue(e instanceof IncompatibleSchemaException); + } else { + Assert.fail("Shouldn't throw IncompatibleSchemaException" + + " if SchemaValidationEnforced is disabled"); + } + } + } + } + + @Test + public void newProducerForMessageSchemaOnTopicInitialWithNoSchema() throws Exception { + String topic = "my-property/my-ns/schema-test"; + Schema v1Schema = Schema.AVRO(V1Data.class); + byte[] v1SchemaBytes = v1Schema.getSchemaInfo().getSchema(); + AvroWriter v1Writer = new AvroWriter<>( + new Parser().parse(new ByteArrayInputStream(v1SchemaBytes))); + Schema v2Schema = Schema.AVRO(V2Data.class); + byte[] v2SchemaBytes = v2Schema.getSchemaInfo().getSchema(); + AvroWriter v2Writer = new AvroWriter<>( + new Parser().parse(new ByteArrayInputStream(v2SchemaBytes))); + try (Producer p = pulsarClient.newProducer() + .topic(topic).create(); + Consumer c = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("sub1").subscribe()) { + for (int i = 0; i < 2; ++i) { + V1Data dataV1 = new V1Data(i); + V2Data dataV2 = new V2Data(i, -i); + byte[] contentV1 = v1Writer.write(dataV1); + byte[] contentV2 = v2Writer.write(dataV2); + ((ProducerBase) p).newMessage(Schema.AUTO_PRODUCE_BYTES(v1Schema)) + .value(contentV1).send(); + Message msg1 = c.receive(); + Assert.assertEquals(msg1.getSchemaVersion(), new LongSchemaVersion(0).bytes()); + Assert.assertEquals(msg1.getData(), contentV1); + ((ProducerBase) p).newMessage(Schema.AUTO_PRODUCE_BYTES(v2Schema)) + .value(contentV2).send(); + Message msg2 = c.receive(); + Assert.assertEquals(msg2.getSchemaVersion(), new LongSchemaVersion(1).bytes()); + Assert.assertEquals(msg2.getData(), contentV2); + } + } + + List allSchemas = admin.schemas().getAllSchemas(topic); + Assert.assertEquals(allSchemas, Arrays.asList(v1Schema.getSchemaInfo(), + v2Schema.getSchemaInfo())); + } + + @Test + public void newProducerForMessageSchemaWithBatch() throws Exception { + String topic = "my-property/my-ns/schema-test"; + Consumer c = pulsarClient.newConsumer(Schema.AVRO(V2Data.class)) + .topic(topic) + .subscriptionName("sub1").subscribe(); + Producer p = pulsarClient.newProducer(Schema.AUTO_PRODUCE_BYTES()) + .topic(topic) + .enableBatching(true) + .batchingMaxPublishDelay(10, TimeUnit.SECONDS).create(); + AvroWriter v1DataAvroWriter = new AvroWriter<>( + ReflectData.AllowNull.get().getSchema(V1Data.class)); + AvroWriter v2DataAvroWriter = new AvroWriter<>( + ReflectData.AllowNull.get().getSchema(V2Data.class)); + AvroWriter incompatibleDataAvroWriter = new AvroWriter<>( + ReflectData.AllowNull.get().getSchema(IncompatibleData.class)); + int total = 20; + int batch = 5; + int incompatible = 3; + for (int i = 0; i < total; ++i) { + if (i / batch % 2 == 0) { + byte[] content = v1DataAvroWriter.write(new V1Data(i)); + ((ProducerBase)p).newMessage(Schema.AUTO_PRODUCE_BYTES(Schema.AVRO(V1Data.class))) + .value(content).sendAsync(); + } else { + byte[] content = v2DataAvroWriter.write(new V2Data(i, i + total)); + ((ProducerBase)p).newMessage(Schema.AUTO_PRODUCE_BYTES(Schema.AVRO(V2Data.class))) + .value(content).sendAsync(); + } + if ((i + 1) % incompatible == 0) { + byte[] content = incompatibleDataAvroWriter.write(new IncompatibleData(-i, -i)); + try { + ((ProducerBase)p).newMessage(Schema.AUTO_PRODUCE_BYTES(Schema.AVRO(IncompatibleData.class))) + .value(content).send(); + } catch (Exception e) { + Assert.assertTrue(e instanceof IncompatibleSchemaException, e.getMessage()); + } + } + } + p.flush(); + for (int i = 0; i < total; ++i) { + V2Data value = c.receive().getValue(); + if (i / batch % 2 == 0) { + Assert.assertNull(value.j); + Assert.assertEquals(value.i, i); + } else { + Assert.assertEquals(value, new V2Data(i, i + total)); + } + } + c.close(); + } + + @Test + public void newProducerWithMultipleSchemaDisabled() throws Exception { + String topic = "my-property/my-ns/schema-test"; + AvroWriter v1DataAvroWriter = new AvroWriter<>( + ReflectData.AllowNull.get().getSchema(V1Data.class)); + try (Producer p = pulsarClient.newProducer() + .topic(topic) + .enableMultiSchema(false).create()) { + Assert.assertThrows(InvalidMessageException.class, + () -> ((ProducerBase)p).newMessage(Schema.AUTO_PRODUCE_BYTES(Schema.AVRO(V1Data.class))) + .value(v1DataAvroWriter.write(new V1Data(0))).send()); + } + } + @Test public void newConsumerWithSchemaOnNewTopic() throws Exception { String topic = "my-property/my-ns/schema-test"; diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ProducerBuilder.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ProducerBuilder.java index d2720e64b8179..8f3bfd7ff02fd 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ProducerBuilder.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/ProducerBuilder.java @@ -431,4 +431,19 @@ public interface ProducerBuilder extends Cloneable { * @return the producer builder instance */ ProducerBuilder autoUpdatePartitions(boolean autoUpdate); + + /** + * Control whether enable the multiple schema mode for producer. + * If enabled, producer can send a message with different schema from that specified just when it is created, + * otherwise a invalid message exception would be threw + * if the producer want to send a message with different schema. + * + *

Enabled by default. + * + * @param multiSchema + * indicates to enable or disable multiple schema mode + * @return the producer builder instance + * @since 2.5.0 + */ + ProducerBuilder enableMultiSchema(boolean multiSchema); } diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Schema.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Schema.java index 3230aedacbbed..bb0e85a33c754 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Schema.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Schema.java @@ -333,6 +333,18 @@ static Schema AUTO_PRODUCE_BYTES() { return DefaultImplementation.newAutoProduceSchema(); } + /** + * Create a schema instance that accepts a serialized payload + * and validates it against the schema specified. + * + * @return the auto schema instance + * @since 2.5.0 + * @see #AUTO_PRODUCE_BYTES() + */ + static Schema AUTO_PRODUCE_BYTES(Schema schema) { + return DefaultImplementation.newAutoProduceSchema(schema); + } + // CHECKSTYLE.ON: MethodName static Schema getSchema(SchemaInfo schemaInfo) { diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/internal/DefaultImplementation.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/internal/DefaultImplementation.java index 29c32a294a39a..79d95e6aee119 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/internal/DefaultImplementation.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/internal/DefaultImplementation.java @@ -256,6 +256,13 @@ public static Schema newAutoProduceSchema() { .newInstance()); } + public static Schema newAutoProduceSchema(Schema schema) { + return catchExceptions( + () -> (Schema) getConstructor( + "org.apache.pulsar.client.impl.schema.AutoProduceBytesSchema", Schema.class) + .newInstance(schema)); + } + public static Schema> newKeyValueBytesSchema() { return catchExceptions( () -> (Schema>) getStaticMethod( diff --git a/pulsar-client-cpp/lib/Commands.cc b/pulsar-client-cpp/lib/Commands.cc index 34552c53b6c40..7778a87607d2a 100644 --- a/pulsar-client-cpp/lib/Commands.cc +++ b/pulsar-client-cpp/lib/Commands.cc @@ -530,6 +530,10 @@ std::string Commands::messageType(BaseCommand_Type type) { case BaseCommand::ACK_RESPONSE: return "ACK_RESPONSE"; break; + case BaseCommand::GET_OR_CREATE_SCHEMA: + return "GET_OR_CREATE_SCHEMA"; + case BaseCommand::GET_OR_CREATE_SCHEMA_RESPONSE: + return "GET_OR_CREATE_SCHEMA_RESPONSE"; case BaseCommand::NEW_TXN: return "NEW_TXN"; break; diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerBase.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerBase.java index 5f930bde580e8..2a34316aeb732 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerBase.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerBase.java @@ -43,6 +43,15 @@ public interface BatchMessageContainerBase extends BatchMessageContainer { */ boolean haveEnoughSpace(MessageImpl msg); + /** + * Check the batch message container has same schema with the message want to add. + * + * @param msg the message want to add + * @return return true if the container has same schema with the specific message, + * otherwise return false. + */ + boolean hasSameSchema(MessageImpl msg); + /** * Set producer of the message batch container. * diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerImpl.java index b293572b6f1ca..85b76250caffd 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageContainerImpl.java @@ -23,6 +23,7 @@ import io.netty.buffer.ByteBuf; import java.io.IOException; +import java.util.Arrays; import java.util.List; import io.netty.util.ReferenceCountUtil; @@ -161,5 +162,17 @@ public OpSendMsg createOpSendMsg() throws IOException { return op; } + @Override + public boolean hasSameSchema(MessageImpl msg) { + if (numMessagesInBatch == 0) { + return true; + } + if (!messageMetadata.hasSchemaVersion()) { + return msg.getSchemaVersion() == null; + } + return Arrays.equals(msg.getSchemaVersion(), + messageMetadata.getSchemaVersion().toByteArray()); + } + private static final Logger log = LoggerFactory.getLogger(BatchMessageContainerImpl.class); } diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageKeyBasedContainer.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageKeyBasedContainer.java index a43afdac66f64..73e4f96a2545b 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageKeyBasedContainer.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/BatchMessageKeyBasedContainer.java @@ -34,6 +34,7 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Base64; import java.util.HashMap; import java.util.List; @@ -146,6 +147,20 @@ public List createOpSendMsgs() throws IOException { return result; } + @Override + public boolean hasSameSchema(MessageImpl msg) { + String key = getKey(msg); + KeyedBatch part = batches.get(key); + if (part == null || part.messages.isEmpty()) { + return true; + } + if (!part.messageMetadata.hasSchemaVersion()) { + return msg.getSchemaVersion() == null; + } + return Arrays.equals(msg.getSchemaVersion(), + part.messageMetadata.getSchemaVersion().toByteArray()); + } + private String getKey(MessageImpl msg) { if (msg.hasOrderingKey()) { return Base64.getEncoder().encodeToString(msg.getOrderingKey()); diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientCnx.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientCnx.java index 32f73c993a11c..e7884272ce548 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientCnx.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ClientCnx.java @@ -70,6 +70,7 @@ import org.apache.pulsar.common.api.proto.PulsarApi.CommandError; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetLastMessageIdResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetSchemaResponse; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetTopicsOfNamespaceResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandLookupTopicResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandMessage; @@ -81,6 +82,7 @@ import org.apache.pulsar.common.api.proto.PulsarApi.CommandSuccess; import org.apache.pulsar.common.api.proto.PulsarApi.MessageIdData; import org.apache.pulsar.common.api.proto.PulsarApi.ServerError; +import org.apache.pulsar.common.protocol.schema.SchemaVersion; import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.protocol.schema.SchemaInfoUtil; import org.apache.pulsar.common.util.FutureUtil; @@ -106,6 +108,8 @@ public class ClientCnx extends PulsarHandler { private final ConcurrentLongHashMap> pendingGetSchemaRequests = new ConcurrentLongHashMap<>( 16, 1); + private final ConcurrentLongHashMap> pendingGetOrCreateSchemaRequests = + new ConcurrentLongHashMap<>(16, 1); private final ConcurrentLongHashMap> producers = new ConcurrentLongHashMap<>(16, 1); private final ConcurrentLongHashMap> consumers = new ConcurrentLongHashMap<>(16, 1); @@ -713,6 +717,18 @@ protected void handleGetSchemaResponse(CommandGetSchemaResponse commandGetSchema future.complete(commandGetSchemaResponse); } + @Override + protected void handleGetOrCreateSchemaResponse(CommandGetOrCreateSchemaResponse commandGetOrCreateSchemaResponse) { + checkArgument(state == State.Ready); + long requestId = commandGetOrCreateSchemaResponse.getRequestId(); + CompletableFuture future = pendingGetOrCreateSchemaRequests.remove(requestId); + if (future == null) { + log.warn("{} Received unknown request id from server: {}", ctx.channel(), requestId); + return; + } + future.complete(commandGetOrCreateSchemaResponse); + } + Promise newPromise() { return ctx.newPromise(); } @@ -798,6 +814,33 @@ public CompletableFuture sendGetRawSchema(ByteBuf requ return future; } + public CompletableFuture sendGetOrCreateSchema(ByteBuf request, long requestId) { + CompletableFuture future = new CompletableFuture<>(); + pendingGetOrCreateSchemaRequests.put(requestId, future); + ctx.writeAndFlush(request).addListener(writeFuture -> { + if (!writeFuture.isSuccess()) { + log.warn("{} Failed to send GetOrCreateSchema request to broker: {}", ctx.channel(), + writeFuture.cause().getMessage()); + pendingGetOrCreateSchemaRequests.remove(requestId); + future.completeExceptionally(writeFuture.cause()); + } + }); + return future.thenCompose(response -> { + if (response.hasErrorCode()) { + // Request has failed + ServerError rc = response.getErrorCode(); + if (rc == ServerError.TopicNotFound) { + return CompletableFuture.completedFuture(SchemaVersion.Empty.bytes()); + } else { + return FutureUtil.failedFuture(getPulsarClientException( + rc, response.getErrorMessage())); + } + } else { + return CompletableFuture.completedFuture(response.getSchemaVersion().toByteArray()); + } + }); + } + /** * check serverError and take appropriate action *

    diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/HandlerState.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/HandlerState.java index b48e7022b6101..187d28d92c0b0 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/HandlerState.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/HandlerState.java @@ -38,7 +38,8 @@ enum State { Closed, // Broker acked the close Terminated, // Topic associated with this handler // has been terminated - Failed // Handler is failed + Failed, // Handler is failed + RegisteringSchema // Handler is registering schema }; public HandlerState(PulsarClientImpl client, String topic) { @@ -50,7 +51,12 @@ public HandlerState(PulsarClientImpl client, String topic) { // moves the state to ready if it wasn't closed protected boolean changeToReadyState() { return (STATE_UPDATER.compareAndSet(this, State.Uninitialized, State.Ready) - || STATE_UPDATER.compareAndSet(this, State.Connecting, State.Ready)); + || STATE_UPDATER.compareAndSet(this, State.Connecting, State.Ready) + || STATE_UPDATER.compareAndSet(this, State.RegisteringSchema, State.Ready)); + } + + protected boolean changeToRegisteringSchemaState() { + return STATE_UPDATER.compareAndSet(this, State.Ready, State.RegisteringSchema); } protected State getState() { diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MessageImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MessageImpl.java index f8054bb894c3a..a268f6c0aed37 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MessageImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/MessageImpl.java @@ -57,6 +57,7 @@ public class MessageImpl implements Message { private ClientCnx cnx; private ByteBuf payload; private Schema schema; + private SchemaState schemaState = SchemaState.None; private Optional encryptionCtx = Optional.empty(); private String topic; // only set for incoming messages @@ -242,6 +243,10 @@ public byte[] getData() { } } + public Schema getSchema() { + return this.schema; + } + @Override public byte[] getSchemaVersion() { if (msgMetadataBuilder != null && msgMetadataBuilder.hasSchemaVersion()) { @@ -403,6 +408,8 @@ public void recycle() { topic = null; payload = null; properties = null; + schema = null; + schemaState = SchemaState.None; if (recyclerHandle != null) { recyclerHandle.recycle(this); @@ -446,4 +453,16 @@ public Optional getEncryptionCtx() { public int getRedeliveryCount() { return redeliveryCount; } + + SchemaState getSchemaState() { + return schemaState; + } + + void setSchemaState(SchemaState schemaState) { + this.schemaState = schemaState; + } + + enum SchemaState { + None, Ready, Broken + } } diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBase.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBase.java index 9cfe017f9c89f..7dc4e49114cdb 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBase.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBase.java @@ -31,8 +31,10 @@ import org.apache.pulsar.client.api.TypedMessageBuilder; import org.apache.pulsar.client.api.transaction.Transaction; import org.apache.pulsar.client.impl.conf.ProducerConfigurationData; +import org.apache.pulsar.client.impl.schema.SchemaHash; import org.apache.pulsar.client.impl.transaction.TransactionImpl; import org.apache.pulsar.common.util.FutureUtil; +import org.apache.pulsar.common.util.collections.ConcurrentOpenHashMap; public abstract class ProducerBase extends HandlerState implements Producer { @@ -40,6 +42,8 @@ public abstract class ProducerBase extends HandlerState implements Producer schema; protected final ProducerInterceptors interceptors; + protected final ConcurrentOpenHashMap schemaCache; + protected volatile MultiSchemaMode multiSchemaMode = MultiSchemaMode.Auto; protected ProducerBase(PulsarClientImpl client, String topic, ProducerConfigurationData conf, CompletableFuture> producerCreatedFuture, Schema schema, ProducerInterceptors interceptors) { @@ -48,6 +52,10 @@ protected ProducerBase(PulsarClientImpl client, String topic, ProducerConfigurat this.conf = conf; this.schema = schema; this.interceptors = interceptors; + this.schemaCache = new ConcurrentOpenHashMap<>(); + if (!conf.isMultiSchema()) { + multiSchemaMode = MultiSchemaMode.Disabled; + } } @Override @@ -73,6 +81,14 @@ public TypedMessageBuilder newMessage() { return new TypedMessageBuilderImpl<>(this, schema); } + // TODO: same parameterized type `T` with producer for the moment, + // it should provide a signature with different parameterized type. + // then expose it to `Producer` interface. + public TypedMessageBuilder newMessage(Schema schema) { + checkArgument(schema != null); + return new TypedMessageBuilderImpl<>(this, schema); + } + // TODO: add this method to the Producer interface // @Override public TypedMessageBuilder newMessage(Transaction txn) { @@ -159,4 +175,8 @@ protected void onSendAcknowledgement(Message message, MessageId msgId, Throwa public String toString() { return "ProducerBase{" + "topic='" + topic + '\'' + '}'; } + + public enum MultiSchemaMode { + Auto, Enabled, Disabled + } } diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBuilderImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBuilderImpl.java index 7976a0417b0f3..647beb7eedcd3 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBuilderImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerBuilderImpl.java @@ -257,6 +257,12 @@ public ProducerBuilder autoUpdatePartitions(boolean autoUpdate) { return this; } + @Override + public ProducerBuilder enableMultiSchema(boolean multiSchema) { + conf.setMultiSchema(multiSchema); + return this; + } + private void setMessageRoutingMode() throws PulsarClientException { if(conf.getMessageRoutingMode() == null && conf.getCustomMessageRouter() == null) { messageRoutingMode(MessageRoutingMode.RoundRobinPartition); @@ -270,7 +276,7 @@ private void setMessageRoutingMode() throws PulsarClientException { "should be set as " + MessageRoutingMode.CustomPartition); } } - + @Override public String toString() { return conf != null ? conf.toString() : null; diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java index 7d446a055d016..1441827702b54 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ProducerImpl.java @@ -19,9 +19,14 @@ package org.apache.pulsar.client.impl; import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkState; import static com.scurrilous.circe.checksum.Crc32cIntChecksum.computeChecksum; import static com.scurrilous.circe.checksum.Crc32cIntChecksum.resumeChecksum; import static java.lang.String.format; +import static org.apache.pulsar.client.impl.MessageImpl.SchemaState.Broken; +import static org.apache.pulsar.client.impl.MessageImpl.SchemaState.None; +import static org.apache.pulsar.client.impl.ProducerBase.MultiSchemaMode.Auto; +import static org.apache.pulsar.client.impl.ProducerBase.MultiSchemaMode.Enabled; import static org.apache.pulsar.common.protocol.Commands.hasChecksum; import static org.apache.pulsar.common.protocol.Commands.readChecksum; @@ -35,9 +40,9 @@ import io.netty.util.TimerTask; import io.netty.util.concurrent.ScheduledFuture; -import java.io.IOException; import java.util.Collections; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Optional; @@ -59,6 +64,7 @@ import org.apache.pulsar.client.api.Schema; import org.apache.pulsar.client.impl.conf.ProducerConfigurationData; import org.apache.pulsar.client.impl.schema.JSONSchema; +import org.apache.pulsar.client.impl.schema.SchemaHash; import org.apache.pulsar.common.protocol.ByteBufPair; import org.apache.pulsar.common.protocol.Commands; import org.apache.pulsar.common.protocol.Commands.ChecksumType; @@ -69,6 +75,7 @@ import org.apache.pulsar.common.schema.SchemaInfo; import org.apache.pulsar.common.schema.SchemaType; import org.apache.pulsar.common.util.DateFormatter; +import org.apache.pulsar.common.util.FutureUtil; import org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -207,6 +214,17 @@ private boolean isBatchMessagingEnabled() { return conf.isBatchingEnabled(); } + private boolean isMultiSchemaEnabled(boolean autoEnable) { + if (multiSchemaMode != Auto) { + return multiSchemaMode == Enabled; + } + if (autoEnable) { + multiSchemaMode = Enabled; + return true; + } + return false; + } + @Override public long getLastSequenceId() { return lastSequenceIdPublished; @@ -338,8 +356,9 @@ public void sendAsync(Message message, SendCallback callback) { return; } - if (schemaVersion.isPresent()) { - msgMetadataBuilder.setSchemaVersion(ByteString.copyFrom(schemaVersion.get())); + if (!populateMessageSchema(msg, callback)) { + compressedPayload.release(); + return; } try { @@ -364,11 +383,10 @@ public void sendAsync(Message message, SendCallback callback) { } msgMetadataBuilder.setUncompressedSize(uncompressedSize); } - - if (isBatchMessagingEnabled() && !msgMetadataBuilder.hasDeliverAtTime()) { + if (canAddToBatch(msg)) { // handle boundary cases where message being added would exceed // batch size and/or max message size - if (batchMessageContainer.haveEnoughSpace(msg)) { + if (canAddToCurrentBatch(msg)) { batchMessageContainer.add(msg, callback); lastSendFuture = callback.getFuture(); payload.release(); @@ -381,46 +399,33 @@ public void sendAsync(Message message, SendCallback callback) { } } else { ByteBuf encryptedPayload = encryptMessage(msgMetadataBuilder, compressedPayload); - - MessageMetadata msgMetadata = msgMetadataBuilder.build(); - // When publishing during replication, we need to set the correct number of message in batch // This is only used in tracking the publish rate stats int numMessages = msg.getMessageBuilder().hasNumMessagesInBatch() ? msg.getMessageBuilder().getNumMessagesInBatch() : 1; - ByteBufPair cmd = sendMessage(producerId, sequenceId, numMessages, msgMetadata, encryptedPayload); - msgMetadataBuilder.recycle(); - msgMetadata.recycle(); - - final OpSendMsg op = OpSendMsg.create(msg, cmd, sequenceId, callback); + final OpSendMsg op; + if (msg.getSchemaState() == MessageImpl.SchemaState.Ready) { + MessageMetadata msgMetadata = msgMetadataBuilder.build(); + ByteBufPair cmd = sendMessage(producerId, sequenceId, numMessages, msgMetadata, encryptedPayload); + op = OpSendMsg.create(msg, cmd, sequenceId, callback); + msgMetadataBuilder.recycle(); + msgMetadata.recycle(); + } else { + op = OpSendMsg.create(msg, null, sequenceId, callback); + op.rePopulate = () -> { + MessageMetadata msgMetadata = msgMetadataBuilder.build(); + op.cmd = sendMessage(producerId, sequenceId, numMessages, msgMetadata, encryptedPayload); + msgMetadataBuilder.recycle(); + msgMetadata.recycle(); + }; + } op.setNumMessagesInBatch(numMessages); op.setBatchSizeByte(encryptedPayload.readableBytes()); - pendingMessages.put(op); lastSendFuture = callback.getFuture(); - - // Read the connection before validating if it's still connected, so that we avoid reading a null - // value - ClientCnx cnx = cnx(); - if (isConnected()) { - // If we do have a connection, the message is sent immediately, otherwise we'll try again once a - // new - // connection is established - cmd.retain(); - cnx.ctx().channel().eventLoop().execute(WriteInEventLoopCallback.create(this, cnx, op)); - stats.updateNumMsgsSent(op.numMessagesInBatch, op.batchSizeByte); - } else { - if (log.isDebugEnabled()) { - log.debug("[{}] [{}] Connection is not ready -- sequenceId {}", topic, producerName, - sequenceId); - } - } + processOpSendMsg(op); } } - } catch (InterruptedException ie) { - Thread.currentThread().interrupt(); - semaphore.release(); - callback.sendComplete(new PulsarClientException(ie)); } catch (PulsarClientException e) { semaphore.release(); callback.sendComplete(e); @@ -430,6 +435,83 @@ public void sendAsync(Message message, SendCallback callback) { } } + private boolean populateMessageSchema(MessageImpl msg, SendCallback callback) { + MessageMetadata.Builder msgMetadataBuilder = msg.getMessageBuilder(); + if (msg.getSchema() == schema) { + schemaVersion.ifPresent(v -> msgMetadataBuilder.setSchemaVersion(ByteString.copyFrom(v))); + msg.setSchemaState(MessageImpl.SchemaState.Ready); + return true; + } + if (!isMultiSchemaEnabled(true)) { + callback.sendComplete(new PulsarClientException.InvalidMessageException( + "Multiple schema disabled")); + return false; + } + SchemaHash schemaHash = SchemaHash.of(msg.getSchema()); + byte[] schemaVersion = schemaCache.get(schemaHash); + if (schemaVersion != null) { + msgMetadataBuilder.setSchemaVersion(ByteString.copyFrom(schemaVersion)); + msg.setSchemaState(MessageImpl.SchemaState.Ready); + } + return true; + } + + private boolean rePopulateMessageSchema(MessageImpl msg) { + SchemaHash schemaHash = SchemaHash.of(msg.getSchema()); + byte[] schemaVersion = schemaCache.get(schemaHash); + if (schemaVersion == null) { + return false; + } + msg.getMessageBuilder().setSchemaVersion(ByteString.copyFrom(schemaVersion)); + msg.setSchemaState(MessageImpl.SchemaState.Ready); + return true; + } + + private void tryRegisterSchema(ClientCnx cnx, MessageImpl msg, SendCallback callback) { + if (!changeToRegisteringSchemaState()) { + return; + } + SchemaInfo schemaInfo = Optional.ofNullable(msg.getSchema()) + .map(Schema::getSchemaInfo) + .filter(si -> si.getType().getValue() > 0) + .orElse(Schema.BYTES.getSchemaInfo()); + getOrCreateSchemaAsync(cnx, schemaInfo).handle((v, ex) -> { + if (ex != null) { + Throwable t = FutureUtil.unwrapCompletionException(ex); + log.warn("[{}] [{}] GetOrCreateSchema error", topic, producerName, t); + if (t instanceof PulsarClientException.IncompatibleSchemaException) { + msg.setSchemaState(MessageImpl.SchemaState.Broken); + callback.sendComplete((PulsarClientException.IncompatibleSchemaException) t); + } + } else { + log.warn("[{}] [{}] GetOrCreateSchema succeed", topic, producerName); + SchemaHash schemaHash = SchemaHash.of(msg.getSchema()); + schemaCache.putIfAbsent(schemaHash, v); + msg.getMessageBuilder().setSchemaVersion(ByteString.copyFrom(v)); + msg.setSchemaState(MessageImpl.SchemaState.Ready); + } + cnx.ctx().channel().eventLoop().execute(() -> { + synchronized (ProducerImpl.this) { + recoverProcessOpSendMsgFrom(cnx, msg); + } + }); + return null; + }); + } + + private CompletableFuture getOrCreateSchemaAsync(ClientCnx cnx, SchemaInfo schemaInfo) { + if (!Commands.peerSupportsGetOrCreateSchema(cnx.getRemoteEndpointProtocolVersion())) { + return FutureUtil.failedFuture( + new PulsarClientException.NotSupportedException( + "GetOrCreateSchema Not supported for ProtocolVersion: " + + cnx.getRemoteEndpointProtocolVersion())); + } + long requestId = client.newRequestId(); + ByteBuf request = Commands.newGetOrCreateSchema(requestId, topic, schemaInfo); + log.info("[{}] [{}] GetOrCreateSchema request", topic, producerName); + return cnx.sendGetOrCreateSchema(request, requestId); + } + protected ByteBuf encryptMessage(MessageMetadata.Builder msgMetadata, ByteBuf compressedPayload) throws PulsarClientException { @@ -453,7 +535,7 @@ protected ByteBuf encryptMessage(MessageMetadata.Builder msgMetadata, ByteBuf co } protected ByteBufPair sendMessage(long producerId, long sequenceId, int numMessages, MessageMetadata msgMetadata, - ByteBuf compressedPayload) throws IOException { + ByteBuf compressedPayload) { ChecksumType checksumType; if (connectionHandler.getClientCnx() == null @@ -465,6 +547,16 @@ protected ByteBufPair sendMessage(long producerId, long sequenceId, int numMessa return Commands.newSend(producerId, sequenceId, numMessages, checksumType, msgMetadata, compressedPayload); } + private boolean canAddToBatch(MessageImpl msg) { + return msg.getSchemaState() == MessageImpl.SchemaState.Ready + && isBatchMessagingEnabled() && !msg.getMessageBuilder().hasDeliverAtTime(); + } + + private boolean canAddToCurrentBatch(MessageImpl msg) { + return batchMessageContainer.haveEnoughSpace(msg) + && (!isMultiSchemaEnabled(false) || batchMessageContainer.hasSameSchema(msg)); + } + private void doBatchSendAndAdd(MessageImpl msg, SendCallback callback, ByteBuf payload) { if (log.isDebugEnabled()) { log.debug("[{}] [{}] Closing out batch to accommodate large message with size {}", topic, producerName, @@ -482,6 +574,8 @@ private boolean isValidProducerState(SendCallback callback) { // OK case Connecting: // We are OK to queue the messages on the client, it will be sent to the broker once we get the connection + case RegisteringSchema: + // registering schema return true; case Closing: case Closed: @@ -823,6 +917,7 @@ protected static final class OpSendMsg { List> msgs; ByteBufPair cmd; SendCallback callback; + Runnable rePopulate; long sequenceId; long createdAt; long batchSizeByte = 0; @@ -853,6 +948,7 @@ void recycle() { msgs = null; cmd = null; callback = null; + rePopulate = null; sequenceId = -1; createdAt = -1; recyclerHandle.recycle(this); @@ -933,6 +1029,7 @@ public void connectionOpened(final ClientCnx cnx) { String producerName = response.getProducerName(); long lastSequenceId = response.getLastSequenceId(); schemaVersion = Optional.ofNullable(response.getSchemaVersion()); + schemaVersion.ifPresent(v -> schemaCache.put(SchemaHash.of(schema), v)); // We are now reconnected to broker and clear to send messages. Re-send all pending messages and // set the cnx pointer so that new messages will be sent immediately @@ -1057,29 +1154,7 @@ private void resendMessages(ClientCnx cnx) { } log.info("[{}] [{}] Re-Sending {} messages to server", topic, producerName, messagesToResend); - - final boolean stripChecksum = cnx.getRemoteEndpointProtocolVersion() < brokerChecksumSupportedVersion(); - for (OpSendMsg op : pendingMessages) { - - if (stripChecksum) { - stripChecksum(op); - } - op.cmd.retain(); - if (log.isDebugEnabled()) { - log.debug("[{}] [{}] Re-Sending message in cnx {}, sequenceId {}", topic, producerName, - cnx.channel(), op.sequenceId); - } - cnx.ctx().write(op.cmd, cnx.ctx().voidPromise()); - stats.updateNumMsgsSent(op.numMessagesInBatch, op.batchSizeByte); - } - - cnx.ctx().flush(); - if (!changeToReadyState()) { - // Producer was closed while reconnecting, close the connection to make sure the broker - // drops the producer on its side - cnx.channel().close(); - return; - } + recoverProcessOpSendMsgFrom(cnx, null); } }); } @@ -1289,16 +1364,15 @@ private void batchMessageAndSend() { } if (!batchMessageContainer.isEmpty()) { try { + List opSendMsgs; if (batchMessageContainer.isMultiBatches()) { - List opSendMsgs = batchMessageContainer.createOpSendMsgs(); - for (OpSendMsg opSendMsg : opSendMsgs) { - processOpSendMsg(opSendMsg); - } + opSendMsgs = batchMessageContainer.createOpSendMsgs(); } else { - OpSendMsg opSendMsg = batchMessageContainer.createOpSendMsg(); - if (opSendMsg != null) { - processOpSendMsg(opSendMsg); - } + opSendMsgs = Collections.singletonList(batchMessageContainer.createOpSendMsg()); + } + batchMessageContainer.clear(); + for (OpSendMsg opSendMsg : opSendMsgs) { + processOpSendMsg(opSendMsg); } } catch (PulsarClientException e) { Thread.currentThread().interrupt(); @@ -1312,10 +1386,16 @@ private void batchMessageAndSend() { private void processOpSendMsg(OpSendMsg op) { try { - batchMessageContainer.clear(); + if (op.msg != null && isBatchMessagingEnabled()) { + batchMessageAndSend(); + } pendingMessages.put(op); ClientCnx cnx = cnx(); if (isConnected()) { + if (op.msg != null && op.msg.getSchemaState() == None) { + tryRegisterSchema(cnx, op.msg, op.callback); + return; + } // If we do have a connection, the message is sent immediately, otherwise we'll try again once a new // connection is established op.cmd.retain(); @@ -1342,6 +1422,58 @@ private void processOpSendMsg(OpSendMsg op) { } } + private void recoverProcessOpSendMsgFrom(ClientCnx cnx, MessageImpl from) { + final boolean stripChecksum = cnx.getRemoteEndpointProtocolVersion() < brokerChecksumSupportedVersion(); + Iterator msgIterator = pendingMessages.iterator(); + OpSendMsg pendingRegisteringOp = null; + while (msgIterator.hasNext()) { + OpSendMsg op = msgIterator.next(); + if (from != null) { + if (op.msg == from) { + from = null; + } else { + continue; + } + } + if (op.msg != null) { + if (op.msg.getSchemaState() == None) { + if (!rePopulateMessageSchema(op.msg)) { + pendingRegisteringOp = op; + break; + } + } else if (op.msg.getSchemaState() == Broken) { + op.recycle(); + msgIterator.remove(); + continue; + } + } + if (op.cmd == null) { + checkState(op.rePopulate != null); + op.rePopulate.run(); + } + if (stripChecksum) { + stripChecksum(op); + } + op.cmd.retain(); + if (log.isDebugEnabled()) { + log.debug("[{}] [{}] Re-Sending message in cnx {}, sequenceId {}", topic, producerName, + cnx.channel(), op.sequenceId); + } + cnx.ctx().write(op.cmd, cnx.ctx().voidPromise()); + stats.updateNumMsgsSent(op.numMessagesInBatch, op.batchSizeByte); + } + cnx.ctx().flush(); + if (!changeToReadyState()) { + // Producer was closed while reconnecting, close the connection to make sure the broker + // drops the producer on its side + cnx.channel().close(); + return; + } + if (pendingRegisteringOp != null) { + tryRegisterSchema(cnx, pendingRegisteringOp.msg, pendingRegisteringOp.callback); + } + } + public long getDelayInMillis() { OpSendMsg firstMsg = pendingMessages.peek(); if (firstMsg != null) { diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PulsarClientImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PulsarClientImpl.java index 4a8b487e736ee..69f2b14397704 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PulsarClientImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/PulsarClientImpl.java @@ -231,6 +231,9 @@ public CompletableFuture> createProducerAsync(ProducerConfigurat if (schema instanceof AutoProduceBytesSchema) { AutoProduceBytesSchema autoProduceBytesSchema = (AutoProduceBytesSchema) schema; + if (autoProduceBytesSchema.schemaInitialized()) { + return createProducerAsync(topic, conf, schema, interceptors); + } return lookup.getSchema(TopicName.get(conf.getTopicName())) .thenCompose(schemaInfoOptional -> { if (schemaInfoOptional.isPresent()) { diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ProducerConfigurationData.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ProducerConfigurationData.java index e5318b776297e..2c4bf46e08498 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ProducerConfigurationData.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/conf/ProducerConfigurationData.java @@ -84,6 +84,8 @@ public class ProducerConfigurationData implements Serializable, Cloneable { private boolean autoUpdatePartitions = true; + private boolean multiSchema = true; + private SortedMap properties = new TreeMap<>(); /** diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoProduceBytesSchema.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoProduceBytesSchema.java index e7ba98a7848c7..dd5193f7a3519 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoProduceBytesSchema.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/AutoProduceBytesSchema.java @@ -32,6 +32,17 @@ public class AutoProduceBytesSchema implements Schema { private boolean requireSchemaValidation = true; private Schema schema; + public AutoProduceBytesSchema() { + } + + public AutoProduceBytesSchema(Schema schema) { + this.schema = schema; + SchemaInfo schemaInfo = schema.getSchemaInfo(); + this.requireSchemaValidation = schemaInfo != null + && schemaInfo.getType() != SchemaType.BYTES + && schemaInfo.getType() != SchemaType.NONE; + } + public void setSchema(Schema schema) { this.schema = schema; this.requireSchemaValidation = schema.getSchemaInfo() != null @@ -40,7 +51,11 @@ public void setSchema(Schema schema) { } private void ensureSchemaInitialized() { - checkState(null != schema, "Schema is not initialized before used"); + checkState(schemaInitialized(), "Schema is not initialized before used"); + } + + public boolean schemaInitialized() { + return schema != null; } @Override diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/SchemaHash.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/SchemaHash.java new file mode 100644 index 0000000000000..7310405ef6ffb --- /dev/null +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/schema/SchemaHash.java @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.pulsar.client.impl.schema; + +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hashing; + +import lombok.EqualsAndHashCode; + +import org.apache.pulsar.client.api.Schema; +import org.apache.pulsar.common.schema.SchemaInfo; + +import java.util.Optional; + +// TODO(yittg): use same hash function with broker, +// move it to pulsar-common and provide it to broker also. +@EqualsAndHashCode +public class SchemaHash { + private static HashFunction hashFunction = Hashing.sha256(); + + private final byte[] value; + + private SchemaHash(byte[] value) { + this.value = value; + } + + public static SchemaHash of(Schema schema) { + byte[] schemaBytes = Optional.ofNullable(schema) + .map(Schema::getSchemaInfo) + .map(SchemaInfo::getSchema).orElse(new byte[0]); + return new SchemaHash(hashFunction.hashBytes(schemaBytes).asBytes()); + } +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/api/proto/PulsarApi.java b/pulsar-common/src/main/java/org/apache/pulsar/common/api/proto/PulsarApi.java index d6a5bc62ab2ac..dfdb52093ab68 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/api/proto/PulsarApi.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/api/proto/PulsarApi.java @@ -214,6 +214,7 @@ public enum ProtocolVersion v12(12, 12), v13(13, 13), v14(14, 14), + v15(15, 15), ; public static final int v0_VALUE = 0; @@ -231,6 +232,7 @@ public enum ProtocolVersion public static final int v12_VALUE = 12; public static final int v13_VALUE = 13; public static final int v14_VALUE = 14; + public static final int v15_VALUE = 15; public final int getNumber() { return value; } @@ -252,6 +254,7 @@ public static ProtocolVersion valueOf(int value) { case 12: return v12; case 13: return v13; case 14: return v14; + case 15: return v15; default: return null; } } @@ -27802,29 +27805,33 @@ public Builder clearSchemaVersion() { // @@protoc_insertion_point(class_scope:pulsar.proto.CommandGetSchemaResponse) } - public interface CommandNewTxnOrBuilder + public interface CommandGetOrCreateSchemaOrBuilder extends org.apache.pulsar.shaded.com.google.protobuf.v241.MessageLiteOrBuilder { // required uint64 request_id = 1; boolean hasRequestId(); long getRequestId(); - // optional uint64 txn_ttl_seconds = 2 [default = 0]; - boolean hasTxnTtlSeconds(); - long getTxnTtlSeconds(); + // required string topic = 2; + boolean hasTopic(); + String getTopic(); + + // required .pulsar.proto.Schema schema = 3; + boolean hasSchema(); + org.apache.pulsar.common.api.proto.PulsarApi.Schema getSchema(); } - public static final class CommandNewTxn extends + public static final class CommandGetOrCreateSchema extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite - implements CommandNewTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { - // Use CommandNewTxn.newBuilder() to construct. + implements CommandGetOrCreateSchemaOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { + // Use CommandGetOrCreateSchema.newBuilder() to construct. private io.netty.util.Recycler.Handle handle; - private CommandNewTxn(io.netty.util.Recycler.Handle handle) { + private CommandGetOrCreateSchema(io.netty.util.Recycler.Handle handle) { this.handle = handle; } - private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { - protected CommandNewTxn newObject(Handle handle) { - return new CommandNewTxn(handle); + private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected CommandGetOrCreateSchema newObject(Handle handle) { + return new CommandGetOrCreateSchema(handle); } }; @@ -27836,14 +27843,14 @@ public void recycle() { if (handle != null) { RECYCLER.recycle(this, handle); } } - private CommandNewTxn(boolean noInit) {} + private CommandGetOrCreateSchema(boolean noInit) {} - private static final CommandNewTxn defaultInstance; - public static CommandNewTxn getDefaultInstance() { + private static final CommandGetOrCreateSchema defaultInstance; + public static CommandGetOrCreateSchema getDefaultInstance() { return defaultInstance; } - public CommandNewTxn getDefaultInstanceForType() { + public CommandGetOrCreateSchema getDefaultInstanceForType() { return defaultInstance; } @@ -27858,19 +27865,52 @@ public long getRequestId() { return requestId_; } - // optional uint64 txn_ttl_seconds = 2 [default = 0]; - public static final int TXN_TTL_SECONDS_FIELD_NUMBER = 2; - private long txnTtlSeconds_; - public boolean hasTxnTtlSeconds() { + // required string topic = 2; + public static final int TOPIC_FIELD_NUMBER = 2; + private java.lang.Object topic_; + public boolean hasTopic() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public long getTxnTtlSeconds() { - return txnTtlSeconds_; + public String getTopic() { + java.lang.Object ref = topic_; + if (ref instanceof String) { + return (String) ref; + } else { + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString bs = + (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; + String s = bs.toStringUtf8(); + if (org.apache.pulsar.shaded.com.google.protobuf.v241.Internal.isValidUtf8(bs)) { + topic_ = s; + } + return s; + } + } + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getTopicBytes() { + java.lang.Object ref = topic_; + if (ref instanceof String) { + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString b = + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.copyFromUtf8((String) ref); + topic_ = b; + return b; + } else { + return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; + } + } + + // required .pulsar.proto.Schema schema = 3; + public static final int SCHEMA_FIELD_NUMBER = 3; + private org.apache.pulsar.common.api.proto.PulsarApi.Schema schema_; + public boolean hasSchema() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public org.apache.pulsar.common.api.proto.PulsarApi.Schema getSchema() { + return schema_; } private void initFields() { requestId_ = 0L; - txnTtlSeconds_ = 0L; + topic_ = ""; + schema_ = org.apache.pulsar.common.api.proto.PulsarApi.Schema.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -27881,6 +27921,18 @@ public final boolean isInitialized() { memoizedIsInitialized = 0; return false; } + if (!hasTopic()) { + memoizedIsInitialized = 0; + return false; + } + if (!hasSchema()) { + memoizedIsInitialized = 0; + return false; + } + if (!getSchema().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } memoizedIsInitialized = 1; return true; } @@ -27897,7 +27949,10 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr output.writeUInt64(1, requestId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt64(2, txnTtlSeconds_); + output.writeBytes(2, getTopicBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeMessage(3, schema_); } } @@ -27913,7 +27968,11 @@ public int getSerializedSize() { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeUInt64Size(2, txnTtlSeconds_); + .computeBytesSize(2, getTopicBytes()); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeMessageSize(3, schema_); } memoizedSerializedSize = size; return size; @@ -27926,40 +27985,40 @@ protected java.lang.Object writeReplace() return super.writeReplace(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom(byte[] data) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom(byte[] data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom( byte[] data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseDelimitedFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -27968,7 +28027,7 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseDe return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseDelimitedFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseDelimitedFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -27979,12 +28038,12 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseDe return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -27994,16 +28053,16 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFr public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn prototype) { + public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } public static final class Builder extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite.Builder< - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn, Builder> - implements org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { - // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.newBuilder() + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema, Builder> + implements org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { + // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.newBuilder() private final io.netty.util.Recycler.Handle handle; private Builder(io.netty.util.Recycler.Handle handle) { this.handle = handle; @@ -28030,8 +28089,10 @@ public Builder clear() { super.clear(); requestId_ = 0L; bitField0_ = (bitField0_ & ~0x00000001); - txnTtlSeconds_ = 0L; + topic_ = ""; bitField0_ = (bitField0_ & ~0x00000002); + schema_ = org.apache.pulsar.common.api.proto.PulsarApi.Schema.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000004); return this; } @@ -28039,21 +28100,21 @@ public Builder clone() { return create().mergeFrom(buildPartial()); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn getDefaultInstanceForType() { - return org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema getDefaultInstanceForType() { + return org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance(); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn build() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn result = buildPartial(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema build() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn buildParsed() + private org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema buildParsed() throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn result = buildPartial(); + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -28061,8 +28122,8 @@ private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn buildParsed() return result; } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn buildPartial() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn result = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.RECYCLER.get(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema buildPartial() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema result = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.RECYCLER.get(); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -28072,18 +28133,25 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn buildPartial() if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.txnTtlSeconds_ = txnTtlSeconds_; + result.topic_ = topic_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.schema_ = schema_; result.bitField0_ = to_bitField0_; return result; } - public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn other) { - if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance()) return this; + public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema other) { + if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance()) return this; if (other.hasRequestId()) { setRequestId(other.getRequestId()); } - if (other.hasTxnTtlSeconds()) { - setTxnTtlSeconds(other.getTxnTtlSeconds()); + if (other.hasTopic()) { + setTopic(other.getTopic()); + } + if (other.hasSchema()) { + mergeSchema(other.getSchema()); } return this; } @@ -28093,6 +28161,18 @@ public final boolean isInitialized() { return false; } + if (!hasTopic()) { + + return false; + } + if (!hasSchema()) { + + return false; + } + if (!getSchema().isInitialized()) { + + return false; + } return true; } @@ -28123,9 +28203,19 @@ public Builder mergeFrom( requestId_ = input.readUInt64(); break; } - case 16: { + case 18: { bitField0_ |= 0x00000002; - txnTtlSeconds_ = input.readUInt64(); + topic_ = input.readBytes(); + break; + } + case 26: { + org.apache.pulsar.common.api.proto.PulsarApi.Schema.Builder subBuilder = org.apache.pulsar.common.api.proto.PulsarApi.Schema.newBuilder(); + if (hasSchema()) { + subBuilder.mergeFrom(getSchema()); + } + input.readMessage(subBuilder, extensionRegistry); + setSchema(subBuilder.buildPartial()); + subBuilder.recycle(); break; } } @@ -28155,73 +28245,127 @@ public Builder clearRequestId() { return this; } - // optional uint64 txn_ttl_seconds = 2 [default = 0]; - private long txnTtlSeconds_ ; - public boolean hasTxnTtlSeconds() { + // required string topic = 2; + private java.lang.Object topic_ = ""; + public boolean hasTopic() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public long getTxnTtlSeconds() { - return txnTtlSeconds_; + public String getTopic() { + java.lang.Object ref = topic_; + if (!(ref instanceof String)) { + String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); + topic_ = s; + return s; + } else { + return (String) ref; + } } - public Builder setTxnTtlSeconds(long value) { - bitField0_ |= 0x00000002; - txnTtlSeconds_ = value; + public Builder setTopic(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + topic_ = value; return this; } - public Builder clearTxnTtlSeconds() { + public Builder clearTopic() { bitField0_ = (bitField0_ & ~0x00000002); - txnTtlSeconds_ = 0L; + topic_ = getDefaultInstance().getTopic(); return this; } + void setTopic(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { + bitField0_ |= 0x00000002; + topic_ = value; + + } - // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandNewTxn) + // required .pulsar.proto.Schema schema = 3; + private org.apache.pulsar.common.api.proto.PulsarApi.Schema schema_ = org.apache.pulsar.common.api.proto.PulsarApi.Schema.getDefaultInstance(); + public boolean hasSchema() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public org.apache.pulsar.common.api.proto.PulsarApi.Schema getSchema() { + return schema_; + } + public Builder setSchema(org.apache.pulsar.common.api.proto.PulsarApi.Schema value) { + if (value == null) { + throw new NullPointerException(); + } + schema_ = value; + + bitField0_ |= 0x00000004; + return this; + } + public Builder setSchema( + org.apache.pulsar.common.api.proto.PulsarApi.Schema.Builder builderForValue) { + schema_ = builderForValue.build(); + + bitField0_ |= 0x00000004; + return this; + } + public Builder mergeSchema(org.apache.pulsar.common.api.proto.PulsarApi.Schema value) { + if (((bitField0_ & 0x00000004) == 0x00000004) && + schema_ != org.apache.pulsar.common.api.proto.PulsarApi.Schema.getDefaultInstance()) { + schema_ = + org.apache.pulsar.common.api.proto.PulsarApi.Schema.newBuilder(schema_).mergeFrom(value).buildPartial(); + } else { + schema_ = value; + } + + bitField0_ |= 0x00000004; + return this; + } + public Builder clearSchema() { + schema_ = org.apache.pulsar.common.api.proto.PulsarApi.Schema.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000004); + return this; + } + + // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandGetOrCreateSchema) } static { - defaultInstance = new CommandNewTxn(true); + defaultInstance = new CommandGetOrCreateSchema(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:pulsar.proto.CommandNewTxn) + // @@protoc_insertion_point(class_scope:pulsar.proto.CommandGetOrCreateSchema) } - public interface CommandNewTxnResponseOrBuilder + public interface CommandGetOrCreateSchemaResponseOrBuilder extends org.apache.pulsar.shaded.com.google.protobuf.v241.MessageLiteOrBuilder { // required uint64 request_id = 1; boolean hasRequestId(); long getRequestId(); - // optional uint64 txnid_least_bits = 2 [default = 0]; - boolean hasTxnidLeastBits(); - long getTxnidLeastBits(); - - // optional uint64 txnid_most_bits = 3 [default = 0]; - boolean hasTxnidMostBits(); - long getTxnidMostBits(); + // optional .pulsar.proto.ServerError error_code = 2; + boolean hasErrorCode(); + org.apache.pulsar.common.api.proto.PulsarApi.ServerError getErrorCode(); - // optional .pulsar.proto.ServerError error = 4; - boolean hasError(); - org.apache.pulsar.common.api.proto.PulsarApi.ServerError getError(); + // optional string error_message = 3; + boolean hasErrorMessage(); + String getErrorMessage(); - // optional string message = 5; - boolean hasMessage(); - String getMessage(); + // optional bytes schema_version = 4; + boolean hasSchemaVersion(); + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getSchemaVersion(); } - public static final class CommandNewTxnResponse extends + public static final class CommandGetOrCreateSchemaResponse extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite - implements CommandNewTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { - // Use CommandNewTxnResponse.newBuilder() to construct. + implements CommandGetOrCreateSchemaResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { + // Use CommandGetOrCreateSchemaResponse.newBuilder() to construct. private io.netty.util.Recycler.Handle handle; - private CommandNewTxnResponse(io.netty.util.Recycler.Handle handle) { + private CommandGetOrCreateSchemaResponse(io.netty.util.Recycler.Handle handle) { this.handle = handle; } - private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { - protected CommandNewTxnResponse newObject(Handle handle) { - return new CommandNewTxnResponse(handle); + private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected CommandGetOrCreateSchemaResponse newObject(Handle handle) { + return new CommandGetOrCreateSchemaResponse(handle); } }; @@ -28233,14 +28377,14 @@ public void recycle() { if (handle != null) { RECYCLER.recycle(this, handle); } } - private CommandNewTxnResponse(boolean noInit) {} + private CommandGetOrCreateSchemaResponse(boolean noInit) {} - private static final CommandNewTxnResponse defaultInstance; - public static CommandNewTxnResponse getDefaultInstance() { + private static final CommandGetOrCreateSchemaResponse defaultInstance; + public static CommandGetOrCreateSchemaResponse getDefaultInstance() { return defaultInstance; } - public CommandNewTxnResponse getDefaultInstanceForType() { + public CommandGetOrCreateSchemaResponse getDefaultInstanceForType() { return defaultInstance; } @@ -28255,44 +28399,24 @@ public long getRequestId() { return requestId_; } - // optional uint64 txnid_least_bits = 2 [default = 0]; - public static final int TXNID_LEAST_BITS_FIELD_NUMBER = 2; - private long txnidLeastBits_; - public boolean hasTxnidLeastBits() { + // optional .pulsar.proto.ServerError error_code = 2; + public static final int ERROR_CODE_FIELD_NUMBER = 2; + private org.apache.pulsar.common.api.proto.PulsarApi.ServerError errorCode_; + public boolean hasErrorCode() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public long getTxnidLeastBits() { - return txnidLeastBits_; + public org.apache.pulsar.common.api.proto.PulsarApi.ServerError getErrorCode() { + return errorCode_; } - // optional uint64 txnid_most_bits = 3 [default = 0]; - public static final int TXNID_MOST_BITS_FIELD_NUMBER = 3; - private long txnidMostBits_; - public boolean hasTxnidMostBits() { + // optional string error_message = 3; + public static final int ERROR_MESSAGE_FIELD_NUMBER = 3; + private java.lang.Object errorMessage_; + public boolean hasErrorMessage() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public long getTxnidMostBits() { - return txnidMostBits_; - } - - // optional .pulsar.proto.ServerError error = 4; - public static final int ERROR_FIELD_NUMBER = 4; - private org.apache.pulsar.common.api.proto.PulsarApi.ServerError error_; - public boolean hasError() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public org.apache.pulsar.common.api.proto.PulsarApi.ServerError getError() { - return error_; - } - - // optional string message = 5; - public static final int MESSAGE_FIELD_NUMBER = 5; - private java.lang.Object message_; - public boolean hasMessage() { - return ((bitField0_ & 0x00000010) == 0x00000010); - } - public String getMessage() { - java.lang.Object ref = message_; + public String getErrorMessage() { + java.lang.Object ref = errorMessage_; if (ref instanceof String) { return (String) ref; } else { @@ -28300,29 +28424,38 @@ public String getMessage() { (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; String s = bs.toStringUtf8(); if (org.apache.pulsar.shaded.com.google.protobuf.v241.Internal.isValidUtf8(bs)) { - message_ = s; + errorMessage_ = s; } return s; } } - private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getMessageBytes() { - java.lang.Object ref = message_; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getErrorMessageBytes() { + java.lang.Object ref = errorMessage_; if (ref instanceof String) { org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString b = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.copyFromUtf8((String) ref); - message_ = b; + errorMessage_ = b; return b; } else { return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; } } + // optional bytes schema_version = 4; + public static final int SCHEMA_VERSION_FIELD_NUMBER = 4; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString schemaVersion_; + public boolean hasSchemaVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + public org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getSchemaVersion() { + return schemaVersion_; + } + private void initFields() { requestId_ = 0L; - txnidLeastBits_ = 0L; - txnidMostBits_ = 0L; - error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; - message_ = ""; + errorCode_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + errorMessage_ = ""; + schemaVersion_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -28349,16 +28482,13 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr output.writeUInt64(1, requestId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt64(2, txnidLeastBits_); + output.writeEnum(2, errorCode_.getNumber()); } if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt64(3, txnidMostBits_); + output.writeBytes(3, getErrorMessageBytes()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeEnum(4, error_.getNumber()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - output.writeBytes(5, getMessageBytes()); + output.writeBytes(4, schemaVersion_); } } @@ -28374,19 +28504,15 @@ public int getSerializedSize() { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeUInt64Size(2, txnidLeastBits_); + .computeEnumSize(2, errorCode_.getNumber()); } if (((bitField0_ & 0x00000004) == 0x00000004)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeUInt64Size(3, txnidMostBits_); + .computeBytesSize(3, getErrorMessageBytes()); } if (((bitField0_ & 0x00000008) == 0x00000008)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeEnumSize(4, error_.getNumber()); - } - if (((bitField0_ & 0x00000010) == 0x00000010)) { - size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeBytesSize(5, getMessageBytes()); + .computeBytesSize(4, schemaVersion_); } memoizedSerializedSize = size; return size; @@ -28399,40 +28525,40 @@ protected java.lang.Object writeReplace() return super.writeReplace(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom(byte[] data) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom(byte[] data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom( byte[] data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseDelimitedFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -28441,7 +28567,7 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseDelimitedFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseDelimitedFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -28452,12 +28578,12 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -28467,16 +28593,16 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse prototype) { + public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } public static final class Builder extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite.Builder< - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse, Builder> - implements org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { - // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.newBuilder() + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse, Builder> + implements org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { + // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.newBuilder() private final io.netty.util.Recycler.Handle handle; private Builder(io.netty.util.Recycler.Handle handle) { this.handle = handle; @@ -28503,14 +28629,12 @@ public Builder clear() { super.clear(); requestId_ = 0L; bitField0_ = (bitField0_ & ~0x00000001); - txnidLeastBits_ = 0L; + errorCode_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; bitField0_ = (bitField0_ & ~0x00000002); - txnidMostBits_ = 0L; + errorMessage_ = ""; bitField0_ = (bitField0_ & ~0x00000004); - error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + schemaVersion_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000008); - message_ = ""; - bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -28518,21 +28642,21 @@ public Builder clone() { return create().mergeFrom(buildPartial()); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse getDefaultInstanceForType() { - return org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse getDefaultInstanceForType() { + return org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance(); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse build() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse result = buildPartial(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse build() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse buildParsed() + private org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse buildParsed() throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse result = buildPartial(); + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -28540,8 +28664,8 @@ private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse build return result; } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse buildPartial() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse result = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.RECYCLER.get(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse buildPartial() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse result = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.RECYCLER.get(); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -28551,39 +28675,32 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse buildP if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.txnidLeastBits_ = txnidLeastBits_; + result.errorCode_ = errorCode_; if (((from_bitField0_ & 0x00000004) == 0x00000004)) { to_bitField0_ |= 0x00000004; } - result.txnidMostBits_ = txnidMostBits_; + result.errorMessage_ = errorMessage_; if (((from_bitField0_ & 0x00000008) == 0x00000008)) { to_bitField0_ |= 0x00000008; } - result.error_ = error_; - if (((from_bitField0_ & 0x00000010) == 0x00000010)) { - to_bitField0_ |= 0x00000010; - } - result.message_ = message_; + result.schemaVersion_ = schemaVersion_; result.bitField0_ = to_bitField0_; return result; } - public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse other) { - if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance()) return this; + public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse other) { + if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance()) return this; if (other.hasRequestId()) { setRequestId(other.getRequestId()); } - if (other.hasTxnidLeastBits()) { - setTxnidLeastBits(other.getTxnidLeastBits()); - } - if (other.hasTxnidMostBits()) { - setTxnidMostBits(other.getTxnidMostBits()); + if (other.hasErrorCode()) { + setErrorCode(other.getErrorCode()); } - if (other.hasError()) { - setError(other.getError()); + if (other.hasErrorMessage()) { + setErrorMessage(other.getErrorMessage()); } - if (other.hasMessage()) { - setMessage(other.getMessage()); + if (other.hasSchemaVersion()) { + setSchemaVersion(other.getSchemaVersion()); } return this; } @@ -28624,27 +28741,22 @@ public Builder mergeFrom( break; } case 16: { - bitField0_ |= 0x00000002; - txnidLeastBits_ = input.readUInt64(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - txnidMostBits_ = input.readUInt64(); - break; - } - case 32: { int rawValue = input.readEnum(); org.apache.pulsar.common.api.proto.PulsarApi.ServerError value = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.valueOf(rawValue); if (value != null) { - bitField0_ |= 0x00000008; - error_ = value; + bitField0_ |= 0x00000002; + errorCode_ = value; } break; } - case 42: { - bitField0_ |= 0x00000010; - message_ = input.readBytes(); + case 26: { + bitField0_ |= 0x00000004; + errorMessage_ = input.readBytes(); + break; + } + case 34: { + bitField0_ |= 0x00000008; + schemaVersion_ = input.readBytes(); break; } } @@ -28674,151 +28786,124 @@ public Builder clearRequestId() { return this; } - // optional uint64 txnid_least_bits = 2 [default = 0]; - private long txnidLeastBits_ ; - public boolean hasTxnidLeastBits() { + // optional .pulsar.proto.ServerError error_code = 2; + private org.apache.pulsar.common.api.proto.PulsarApi.ServerError errorCode_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + public boolean hasErrorCode() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public long getTxnidLeastBits() { - return txnidLeastBits_; + public org.apache.pulsar.common.api.proto.PulsarApi.ServerError getErrorCode() { + return errorCode_; } - public Builder setTxnidLeastBits(long value) { + public Builder setErrorCode(org.apache.pulsar.common.api.proto.PulsarApi.ServerError value) { + if (value == null) { + throw new NullPointerException(); + } bitField0_ |= 0x00000002; - txnidLeastBits_ = value; + errorCode_ = value; return this; } - public Builder clearTxnidLeastBits() { + public Builder clearErrorCode() { bitField0_ = (bitField0_ & ~0x00000002); - txnidLeastBits_ = 0L; + errorCode_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; return this; } - // optional uint64 txnid_most_bits = 3 [default = 0]; - private long txnidMostBits_ ; - public boolean hasTxnidMostBits() { + // optional string error_message = 3; + private java.lang.Object errorMessage_ = ""; + public boolean hasErrorMessage() { return ((bitField0_ & 0x00000004) == 0x00000004); } - public long getTxnidMostBits() { - return txnidMostBits_; + public String getErrorMessage() { + java.lang.Object ref = errorMessage_; + if (!(ref instanceof String)) { + String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); + errorMessage_ = s; + return s; + } else { + return (String) ref; + } } - public Builder setTxnidMostBits(long value) { - bitField0_ |= 0x00000004; - txnidMostBits_ = value; + public Builder setErrorMessage(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + errorMessage_ = value; return this; } - public Builder clearTxnidMostBits() { + public Builder clearErrorMessage() { bitField0_ = (bitField0_ & ~0x00000004); - txnidMostBits_ = 0L; - - return this; - } - - // optional .pulsar.proto.ServerError error = 4; - private org.apache.pulsar.common.api.proto.PulsarApi.ServerError error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; - public boolean hasError() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public org.apache.pulsar.common.api.proto.PulsarApi.ServerError getError() { - return error_; - } - public Builder setError(org.apache.pulsar.common.api.proto.PulsarApi.ServerError value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000008; - error_ = value; + errorMessage_ = getDefaultInstance().getErrorMessage(); return this; } - public Builder clearError() { - bitField0_ = (bitField0_ & ~0x00000008); - error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + void setErrorMessage(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { + bitField0_ |= 0x00000004; + errorMessage_ = value; - return this; } - // optional string message = 5; - private java.lang.Object message_ = ""; - public boolean hasMessage() { - return ((bitField0_ & 0x00000010) == 0x00000010); + // optional bytes schema_version = 4; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString schemaVersion_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; + public boolean hasSchemaVersion() { + return ((bitField0_ & 0x00000008) == 0x00000008); } - public String getMessage() { - java.lang.Object ref = message_; - if (!(ref instanceof String)) { - String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); - message_ = s; - return s; - } else { - return (String) ref; - } + public org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getSchemaVersion() { + return schemaVersion_; } - public Builder setMessage(String value) { + public Builder setSchemaVersion(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { if (value == null) { throw new NullPointerException(); } - bitField0_ |= 0x00000010; - message_ = value; + bitField0_ |= 0x00000008; + schemaVersion_ = value; return this; } - public Builder clearMessage() { - bitField0_ = (bitField0_ & ~0x00000010); - message_ = getDefaultInstance().getMessage(); + public Builder clearSchemaVersion() { + bitField0_ = (bitField0_ & ~0x00000008); + schemaVersion_ = getDefaultInstance().getSchemaVersion(); return this; } - void setMessage(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { - bitField0_ |= 0x00000010; - message_ = value; - - } - // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandNewTxnResponse) + // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandGetOrCreateSchemaResponse) } static { - defaultInstance = new CommandNewTxnResponse(true); + defaultInstance = new CommandGetOrCreateSchemaResponse(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:pulsar.proto.CommandNewTxnResponse) + // @@protoc_insertion_point(class_scope:pulsar.proto.CommandGetOrCreateSchemaResponse) } - public interface CommandAddPartitionToTxnOrBuilder + public interface CommandNewTxnOrBuilder extends org.apache.pulsar.shaded.com.google.protobuf.v241.MessageLiteOrBuilder { // required uint64 request_id = 1; boolean hasRequestId(); long getRequestId(); - // optional uint64 txnid_least_bits = 2 [default = 0]; - boolean hasTxnidLeastBits(); - long getTxnidLeastBits(); - - // optional uint64 txnid_most_bits = 3 [default = 0]; - boolean hasTxnidMostBits(); - long getTxnidMostBits(); - - // repeated string partitions = 4; - java.util.List getPartitionsList(); - int getPartitionsCount(); - String getPartitions(int index); + // optional uint64 txn_ttl_seconds = 2 [default = 0]; + boolean hasTxnTtlSeconds(); + long getTxnTtlSeconds(); } - public static final class CommandAddPartitionToTxn extends + public static final class CommandNewTxn extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite - implements CommandAddPartitionToTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { - // Use CommandAddPartitionToTxn.newBuilder() to construct. + implements CommandNewTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { + // Use CommandNewTxn.newBuilder() to construct. private io.netty.util.Recycler.Handle handle; - private CommandAddPartitionToTxn(io.netty.util.Recycler.Handle handle) { + private CommandNewTxn(io.netty.util.Recycler.Handle handle) { this.handle = handle; } - private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { - protected CommandAddPartitionToTxn newObject(Handle handle) { - return new CommandAddPartitionToTxn(handle); + private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected CommandNewTxn newObject(Handle handle) { + return new CommandNewTxn(handle); } }; @@ -28830,14 +28915,14 @@ public void recycle() { if (handle != null) { RECYCLER.recycle(this, handle); } } - private CommandAddPartitionToTxn(boolean noInit) {} + private CommandNewTxn(boolean noInit) {} - private static final CommandAddPartitionToTxn defaultInstance; - public static CommandAddPartitionToTxn getDefaultInstance() { + private static final CommandNewTxn defaultInstance; + public static CommandNewTxn getDefaultInstance() { return defaultInstance; } - public CommandAddPartitionToTxn getDefaultInstanceForType() { + public CommandNewTxn getDefaultInstanceForType() { return defaultInstance; } @@ -28852,45 +28937,19 @@ public long getRequestId() { return requestId_; } - // optional uint64 txnid_least_bits = 2 [default = 0]; - public static final int TXNID_LEAST_BITS_FIELD_NUMBER = 2; - private long txnidLeastBits_; - public boolean hasTxnidLeastBits() { + // optional uint64 txn_ttl_seconds = 2 [default = 0]; + public static final int TXN_TTL_SECONDS_FIELD_NUMBER = 2; + private long txnTtlSeconds_; + public boolean hasTxnTtlSeconds() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public long getTxnidLeastBits() { - return txnidLeastBits_; - } - - // optional uint64 txnid_most_bits = 3 [default = 0]; - public static final int TXNID_MOST_BITS_FIELD_NUMBER = 3; - private long txnidMostBits_; - public boolean hasTxnidMostBits() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public long getTxnidMostBits() { - return txnidMostBits_; - } - - // repeated string partitions = 4; - public static final int PARTITIONS_FIELD_NUMBER = 4; - private org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringList partitions_; - public java.util.List - getPartitionsList() { - return partitions_; - } - public int getPartitionsCount() { - return partitions_.size(); - } - public String getPartitions(int index) { - return partitions_.get(index); + public long getTxnTtlSeconds() { + return txnTtlSeconds_; } private void initFields() { requestId_ = 0L; - txnidLeastBits_ = 0L; - txnidMostBits_ = 0L; - partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; + txnTtlSeconds_ = 0L; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -28917,13 +28976,7 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr output.writeUInt64(1, requestId_); } if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeUInt64(2, txnidLeastBits_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeUInt64(3, txnidMostBits_); - } - for (int i = 0; i < partitions_.size(); i++) { - output.writeBytes(4, partitions_.getByteString(i)); + output.writeUInt64(2, txnTtlSeconds_); } } @@ -28939,20 +28992,7 @@ public int getSerializedSize() { } if (((bitField0_ & 0x00000002) == 0x00000002)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeUInt64Size(2, txnidLeastBits_); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeUInt64Size(3, txnidMostBits_); - } - { - int dataSize = 0; - for (int i = 0; i < partitions_.size(); i++) { - dataSize += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeBytesSizeNoTag(partitions_.getByteString(i)); - } - size += dataSize; - size += 1 * getPartitionsList().size(); + .computeUInt64Size(2, txnTtlSeconds_); } memoizedSerializedSize = size; return size; @@ -28965,40 +29005,40 @@ protected java.lang.Object writeReplace() return super.writeReplace(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom(byte[] data) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom(byte[] data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( byte[] data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseDelimitedFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -29007,7 +29047,7 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionTo return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseDelimitedFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseDelimitedFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -29018,12 +29058,12 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionTo return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -29033,16 +29073,16 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionTo public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn prototype) { + public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } public static final class Builder extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite.Builder< - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn, Builder> - implements org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { - // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.newBuilder() + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn, Builder> + implements org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { + // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.newBuilder() private final io.netty.util.Recycler.Handle handle; private Builder(io.netty.util.Recycler.Handle handle) { this.handle = handle; @@ -29069,12 +29109,8 @@ public Builder clear() { super.clear(); requestId_ = 0L; bitField0_ = (bitField0_ & ~0x00000001); - txnidLeastBits_ = 0L; + txnTtlSeconds_ = 0L; bitField0_ = (bitField0_ & ~0x00000002); - txnidMostBits_ = 0L; - bitField0_ = (bitField0_ & ~0x00000004); - partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000008); return this; } @@ -29082,21 +29118,21 @@ public Builder clone() { return create().mergeFrom(buildPartial()); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn getDefaultInstanceForType() { - return org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn getDefaultInstanceForType() { + return org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn build() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn result = buildPartial(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn build() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn buildParsed() + private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn buildParsed() throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn result = buildPartial(); + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -29104,8 +29140,8 @@ private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn bu return result; } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn buildPartial() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn result = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.RECYCLER.get(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn buildPartial() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn result = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.RECYCLER.get(); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -29115,41 +29151,18 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn bui if (((from_bitField0_ & 0x00000002) == 0x00000002)) { to_bitField0_ |= 0x00000002; } - result.txnidLeastBits_ = txnidLeastBits_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.txnidMostBits_ = txnidMostBits_; - if (((bitField0_ & 0x00000008) == 0x00000008)) { - partitions_ = new org.apache.pulsar.shaded.com.google.protobuf.v241.UnmodifiableLazyStringList( - partitions_); - bitField0_ = (bitField0_ & ~0x00000008); - } - result.partitions_ = partitions_; + result.txnTtlSeconds_ = txnTtlSeconds_; result.bitField0_ = to_bitField0_; return result; } - public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn other) { - if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance()) return this; + public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn other) { + if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance()) return this; if (other.hasRequestId()) { setRequestId(other.getRequestId()); } - if (other.hasTxnidLeastBits()) { - setTxnidLeastBits(other.getTxnidLeastBits()); - } - if (other.hasTxnidMostBits()) { - setTxnidMostBits(other.getTxnidMostBits()); - } - if (!other.partitions_.isEmpty()) { - if (partitions_.isEmpty()) { - partitions_ = other.partitions_; - bitField0_ = (bitField0_ & ~0x00000008); - } else { - ensurePartitionsIsMutable(); - partitions_.addAll(other.partitions_); - } - + if (other.hasTxnTtlSeconds()) { + setTxnTtlSeconds(other.getTxnTtlSeconds()); } return this; } @@ -29191,17 +29204,7 @@ public Builder mergeFrom( } case 16: { bitField0_ |= 0x00000002; - txnidLeastBits_ = input.readUInt64(); - break; - } - case 24: { - bitField0_ |= 0x00000004; - txnidMostBits_ = input.readUInt64(); - break; - } - case 34: { - ensurePartitionsIsMutable(); - partitions_.add(input.readBytes()); + txnTtlSeconds_ = input.readUInt64(); break; } } @@ -29231,116 +29234,39 @@ public Builder clearRequestId() { return this; } - // optional uint64 txnid_least_bits = 2 [default = 0]; - private long txnidLeastBits_ ; - public boolean hasTxnidLeastBits() { + // optional uint64 txn_ttl_seconds = 2 [default = 0]; + private long txnTtlSeconds_ ; + public boolean hasTxnTtlSeconds() { return ((bitField0_ & 0x00000002) == 0x00000002); } - public long getTxnidLeastBits() { - return txnidLeastBits_; + public long getTxnTtlSeconds() { + return txnTtlSeconds_; } - public Builder setTxnidLeastBits(long value) { + public Builder setTxnTtlSeconds(long value) { bitField0_ |= 0x00000002; - txnidLeastBits_ = value; + txnTtlSeconds_ = value; return this; } - public Builder clearTxnidLeastBits() { + public Builder clearTxnTtlSeconds() { bitField0_ = (bitField0_ & ~0x00000002); - txnidLeastBits_ = 0L; - - return this; - } - - // optional uint64 txnid_most_bits = 3 [default = 0]; - private long txnidMostBits_ ; - public boolean hasTxnidMostBits() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public long getTxnidMostBits() { - return txnidMostBits_; - } - public Builder setTxnidMostBits(long value) { - bitField0_ |= 0x00000004; - txnidMostBits_ = value; - - return this; - } - public Builder clearTxnidMostBits() { - bitField0_ = (bitField0_ & ~0x00000004); - txnidMostBits_ = 0L; - - return this; - } - - // repeated string partitions = 4; - private org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringList partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; - private void ensurePartitionsIsMutable() { - if (!((bitField0_ & 0x00000008) == 0x00000008)) { - partitions_ = new org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList(partitions_); - bitField0_ |= 0x00000008; - } - } - public java.util.List - getPartitionsList() { - return java.util.Collections.unmodifiableList(partitions_); - } - public int getPartitionsCount() { - return partitions_.size(); - } - public String getPartitions(int index) { - return partitions_.get(index); - } - public Builder setPartitions( - int index, String value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePartitionsIsMutable(); - partitions_.set(index, value); - - return this; - } - public Builder addPartitions(String value) { - if (value == null) { - throw new NullPointerException(); - } - ensurePartitionsIsMutable(); - partitions_.add(value); - - return this; - } - public Builder addAllPartitions( - java.lang.Iterable values) { - ensurePartitionsIsMutable(); - super.addAll(values, partitions_); - - return this; - } - public Builder clearPartitions() { - partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; - bitField0_ = (bitField0_ & ~0x00000008); + txnTtlSeconds_ = 0L; return this; } - void addPartitions(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { - ensurePartitionsIsMutable(); - partitions_.add(value); - - } - // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandAddPartitionToTxn) + // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandNewTxn) } static { - defaultInstance = new CommandAddPartitionToTxn(true); + defaultInstance = new CommandNewTxn(true); defaultInstance.initFields(); } - // @@protoc_insertion_point(class_scope:pulsar.proto.CommandAddPartitionToTxn) + // @@protoc_insertion_point(class_scope:pulsar.proto.CommandNewTxn) } - public interface CommandAddPartitionToTxnResponseOrBuilder + public interface CommandNewTxnResponseOrBuilder extends org.apache.pulsar.shaded.com.google.protobuf.v241.MessageLiteOrBuilder { // required uint64 request_id = 1; @@ -29363,18 +29289,18 @@ public interface CommandAddPartitionToTxnResponseOrBuilder boolean hasMessage(); String getMessage(); } - public static final class CommandAddPartitionToTxnResponse extends + public static final class CommandNewTxnResponse extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite - implements CommandAddPartitionToTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { - // Use CommandAddPartitionToTxnResponse.newBuilder() to construct. + implements CommandNewTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { + // Use CommandNewTxnResponse.newBuilder() to construct. private io.netty.util.Recycler.Handle handle; - private CommandAddPartitionToTxnResponse(io.netty.util.Recycler.Handle handle) { + private CommandNewTxnResponse(io.netty.util.Recycler.Handle handle) { this.handle = handle; } - private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { - protected CommandAddPartitionToTxnResponse newObject(Handle handle) { - return new CommandAddPartitionToTxnResponse(handle); + private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected CommandNewTxnResponse newObject(Handle handle) { + return new CommandNewTxnResponse(handle); } }; @@ -29386,14 +29312,14 @@ public void recycle() { if (handle != null) { RECYCLER.recycle(this, handle); } } - private CommandAddPartitionToTxnResponse(boolean noInit) {} + private CommandNewTxnResponse(boolean noInit) {} - private static final CommandAddPartitionToTxnResponse defaultInstance; - public static CommandAddPartitionToTxnResponse getDefaultInstance() { + private static final CommandNewTxnResponse defaultInstance; + public static CommandNewTxnResponse getDefaultInstance() { return defaultInstance; } - public CommandAddPartitionToTxnResponse getDefaultInstanceForType() { + public CommandNewTxnResponse getDefaultInstanceForType() { return defaultInstance; } @@ -29552,40 +29478,40 @@ protected java.lang.Object writeReplace() return super.writeReplace(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { throw new RuntimeException("Disabled"); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom(byte[] data) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom(byte[] data) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( byte[] data, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { return newBuilder().mergeFrom(data, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom(java.io.InputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return newBuilder().mergeFrom(input, extensionRegistry) .buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseDelimitedFrom(java.io.InputStream input) + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { Builder builder = newBuilder(); if (builder.mergeDelimitedFrom(input)) { @@ -29594,7 +29520,7 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionTo return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseDelimitedFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseDelimitedFrom( java.io.InputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -29605,12 +29531,12 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionTo return null; } } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input) throws java.io.IOException { return newBuilder().mergeFrom(input).buildParsed(); } - public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse parseFrom( org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -29620,16 +29546,16 @@ public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionTo public static Builder newBuilder() { return Builder.create(); } public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse prototype) { + public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse prototype) { return newBuilder().mergeFrom(prototype); } public Builder toBuilder() { return newBuilder(this); } public static final class Builder extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite.Builder< - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse, Builder> - implements org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { - // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.newBuilder() + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse, Builder> + implements org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { + // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.newBuilder() private final io.netty.util.Recycler.Handle handle; private Builder(io.netty.util.Recycler.Handle handle) { this.handle = handle; @@ -29671,21 +29597,21 @@ public Builder clone() { return create().mergeFrom(buildPartial()); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse getDefaultInstanceForType() { - return org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse getDefaultInstanceForType() { + return org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse build() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse result = buildPartial(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse build() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } return result; } - private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse buildParsed() + private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse buildParsed() throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse result = buildPartial(); + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException( result).asInvalidProtocolBufferException(); @@ -29693,8 +29619,8 @@ private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnRes return result; } - public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse buildPartial() { - org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse result = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.RECYCLER.get(); + public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse buildPartial() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse result = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.RECYCLER.get(); int from_bitField0_ = bitField0_; int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000001) == 0x00000001)) { @@ -29721,8 +29647,1161 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResp return result; } - public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse other) { - if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance()) return this; + public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse other) { + if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance()) return this; + if (other.hasRequestId()) { + setRequestId(other.getRequestId()); + } + if (other.hasTxnidLeastBits()) { + setTxnidLeastBits(other.getTxnidLeastBits()); + } + if (other.hasTxnidMostBits()) { + setTxnidMostBits(other.getTxnidMostBits()); + } + if (other.hasError()) { + setError(other.getError()); + } + if (other.hasMessage()) { + setMessage(other.getMessage()); + } + return this; + } + + public final boolean isInitialized() { + if (!hasRequestId()) { + + return false; + } + return true; + } + + public Builder mergeFrom(org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + throw new java.io.IOException("Merge from CodedInputStream is disabled"); + } + public Builder mergeFrom( + org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + + return this; + default: { + if (!input.skipField(tag)) { + + return this; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + requestId_ = input.readUInt64(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + txnidLeastBits_ = input.readUInt64(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + txnidMostBits_ = input.readUInt64(); + break; + } + case 32: { + int rawValue = input.readEnum(); + org.apache.pulsar.common.api.proto.PulsarApi.ServerError value = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.valueOf(rawValue); + if (value != null) { + bitField0_ |= 0x00000008; + error_ = value; + } + break; + } + case 42: { + bitField0_ |= 0x00000010; + message_ = input.readBytes(); + break; + } + } + } + } + + private int bitField0_; + + // required uint64 request_id = 1; + private long requestId_ ; + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public long getRequestId() { + return requestId_; + } + public Builder setRequestId(long value) { + bitField0_ |= 0x00000001; + requestId_ = value; + + return this; + } + public Builder clearRequestId() { + bitField0_ = (bitField0_ & ~0x00000001); + requestId_ = 0L; + + return this; + } + + // optional uint64 txnid_least_bits = 2 [default = 0]; + private long txnidLeastBits_ ; + public boolean hasTxnidLeastBits() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public long getTxnidLeastBits() { + return txnidLeastBits_; + } + public Builder setTxnidLeastBits(long value) { + bitField0_ |= 0x00000002; + txnidLeastBits_ = value; + + return this; + } + public Builder clearTxnidLeastBits() { + bitField0_ = (bitField0_ & ~0x00000002); + txnidLeastBits_ = 0L; + + return this; + } + + // optional uint64 txnid_most_bits = 3 [default = 0]; + private long txnidMostBits_ ; + public boolean hasTxnidMostBits() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public long getTxnidMostBits() { + return txnidMostBits_; + } + public Builder setTxnidMostBits(long value) { + bitField0_ |= 0x00000004; + txnidMostBits_ = value; + + return this; + } + public Builder clearTxnidMostBits() { + bitField0_ = (bitField0_ & ~0x00000004); + txnidMostBits_ = 0L; + + return this; + } + + // optional .pulsar.proto.ServerError error = 4; + private org.apache.pulsar.common.api.proto.PulsarApi.ServerError error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + public boolean hasError() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + public org.apache.pulsar.common.api.proto.PulsarApi.ServerError getError() { + return error_; + } + public Builder setError(org.apache.pulsar.common.api.proto.PulsarApi.ServerError value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000008; + error_ = value; + + return this; + } + public Builder clearError() { + bitField0_ = (bitField0_ & ~0x00000008); + error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + + return this; + } + + // optional string message = 5; + private java.lang.Object message_ = ""; + public boolean hasMessage() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + public String getMessage() { + java.lang.Object ref = message_; + if (!(ref instanceof String)) { + String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); + message_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setMessage(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000010; + message_ = value; + + return this; + } + public Builder clearMessage() { + bitField0_ = (bitField0_ & ~0x00000010); + message_ = getDefaultInstance().getMessage(); + + return this; + } + void setMessage(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { + bitField0_ |= 0x00000010; + message_ = value; + + } + + // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandNewTxnResponse) + } + + static { + defaultInstance = new CommandNewTxnResponse(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:pulsar.proto.CommandNewTxnResponse) + } + + public interface CommandAddPartitionToTxnOrBuilder + extends org.apache.pulsar.shaded.com.google.protobuf.v241.MessageLiteOrBuilder { + + // required uint64 request_id = 1; + boolean hasRequestId(); + long getRequestId(); + + // optional uint64 txnid_least_bits = 2 [default = 0]; + boolean hasTxnidLeastBits(); + long getTxnidLeastBits(); + + // optional uint64 txnid_most_bits = 3 [default = 0]; + boolean hasTxnidMostBits(); + long getTxnidMostBits(); + + // repeated string partitions = 4; + java.util.List getPartitionsList(); + int getPartitionsCount(); + String getPartitions(int index); + } + public static final class CommandAddPartitionToTxn extends + org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite + implements CommandAddPartitionToTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { + // Use CommandAddPartitionToTxn.newBuilder() to construct. + private io.netty.util.Recycler.Handle handle; + private CommandAddPartitionToTxn(io.netty.util.Recycler.Handle handle) { + this.handle = handle; + } + + private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected CommandAddPartitionToTxn newObject(Handle handle) { + return new CommandAddPartitionToTxn(handle); + } + }; + + public void recycle() { + this.initFields(); + this.memoizedIsInitialized = -1; + this.bitField0_ = 0; + this.memoizedSerializedSize = -1; + if (handle != null) { RECYCLER.recycle(this, handle); } + } + + private CommandAddPartitionToTxn(boolean noInit) {} + + private static final CommandAddPartitionToTxn defaultInstance; + public static CommandAddPartitionToTxn getDefaultInstance() { + return defaultInstance; + } + + public CommandAddPartitionToTxn getDefaultInstanceForType() { + return defaultInstance; + } + + private int bitField0_; + // required uint64 request_id = 1; + public static final int REQUEST_ID_FIELD_NUMBER = 1; + private long requestId_; + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public long getRequestId() { + return requestId_; + } + + // optional uint64 txnid_least_bits = 2 [default = 0]; + public static final int TXNID_LEAST_BITS_FIELD_NUMBER = 2; + private long txnidLeastBits_; + public boolean hasTxnidLeastBits() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public long getTxnidLeastBits() { + return txnidLeastBits_; + } + + // optional uint64 txnid_most_bits = 3 [default = 0]; + public static final int TXNID_MOST_BITS_FIELD_NUMBER = 3; + private long txnidMostBits_; + public boolean hasTxnidMostBits() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public long getTxnidMostBits() { + return txnidMostBits_; + } + + // repeated string partitions = 4; + public static final int PARTITIONS_FIELD_NUMBER = 4; + private org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringList partitions_; + public java.util.List + getPartitionsList() { + return partitions_; + } + public int getPartitionsCount() { + return partitions_.size(); + } + public String getPartitions(int index) { + return partitions_.get(index); + } + + private void initFields() { + requestId_ = 0L; + txnidLeastBits_ = 0L; + txnidMostBits_ = 0L; + partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasRequestId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream output) + throws java.io.IOException { + throw new RuntimeException("Cannot use CodedOutputStream"); + } + + public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt64(1, requestId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt64(2, txnidLeastBits_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt64(3, txnidMostBits_); + } + for (int i = 0; i < partitions_.size(); i++) { + output.writeBytes(4, partitions_.getByteString(i)); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeUInt64Size(1, requestId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeUInt64Size(2, txnidLeastBits_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeUInt64Size(3, txnidMostBits_); + } + { + int dataSize = 0; + for (int i = 0; i < partitions_.size(); i++) { + dataSize += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeBytesSizeNoTag(partitions_.getByteString(i)); + } + size += dataSize; + size += 1 * getPartitionsList().size(); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + throw new RuntimeException("Disabled"); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + throw new RuntimeException("Disabled"); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom(byte[] data) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + byte[] data, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + java.io.InputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseDelimitedFrom( + java.io.InputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + public static final class Builder extends + org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite.Builder< + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn, Builder> + implements org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { + // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.newBuilder() + private final io.netty.util.Recycler.Handle handle; + private Builder(io.netty.util.Recycler.Handle handle) { + this.handle = handle; + maybeForceBuilderInitialization(); + } + private final static io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected Builder newObject(io.netty.util.Recycler.Handle handle) { + return new Builder(handle); + } + }; + + public void recycle() { + clear(); + if (handle != null) {RECYCLER.recycle(this, handle);} + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return RECYCLER.get(); + } + + public Builder clear() { + super.clear(); + requestId_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + txnidLeastBits_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + txnidMostBits_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000008); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn getDefaultInstanceForType() { + return org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); + } + + public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn build() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn buildParsed() + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return result; + } + + public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn buildPartial() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn result = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.RECYCLER.get(); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.requestId_ = requestId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.txnidLeastBits_ = txnidLeastBits_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.txnidMostBits_ = txnidMostBits_; + if (((bitField0_ & 0x00000008) == 0x00000008)) { + partitions_ = new org.apache.pulsar.shaded.com.google.protobuf.v241.UnmodifiableLazyStringList( + partitions_); + bitField0_ = (bitField0_ & ~0x00000008); + } + result.partitions_ = partitions_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn other) { + if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance()) return this; + if (other.hasRequestId()) { + setRequestId(other.getRequestId()); + } + if (other.hasTxnidLeastBits()) { + setTxnidLeastBits(other.getTxnidLeastBits()); + } + if (other.hasTxnidMostBits()) { + setTxnidMostBits(other.getTxnidMostBits()); + } + if (!other.partitions_.isEmpty()) { + if (partitions_.isEmpty()) { + partitions_ = other.partitions_; + bitField0_ = (bitField0_ & ~0x00000008); + } else { + ensurePartitionsIsMutable(); + partitions_.addAll(other.partitions_); + } + + } + return this; + } + + public final boolean isInitialized() { + if (!hasRequestId()) { + + return false; + } + return true; + } + + public Builder mergeFrom(org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + throw new java.io.IOException("Merge from CodedInputStream is disabled"); + } + public Builder mergeFrom( + org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + while (true) { + int tag = input.readTag(); + switch (tag) { + case 0: + + return this; + default: { + if (!input.skipField(tag)) { + + return this; + } + break; + } + case 8: { + bitField0_ |= 0x00000001; + requestId_ = input.readUInt64(); + break; + } + case 16: { + bitField0_ |= 0x00000002; + txnidLeastBits_ = input.readUInt64(); + break; + } + case 24: { + bitField0_ |= 0x00000004; + txnidMostBits_ = input.readUInt64(); + break; + } + case 34: { + ensurePartitionsIsMutable(); + partitions_.add(input.readBytes()); + break; + } + } + } + } + + private int bitField0_; + + // required uint64 request_id = 1; + private long requestId_ ; + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public long getRequestId() { + return requestId_; + } + public Builder setRequestId(long value) { + bitField0_ |= 0x00000001; + requestId_ = value; + + return this; + } + public Builder clearRequestId() { + bitField0_ = (bitField0_ & ~0x00000001); + requestId_ = 0L; + + return this; + } + + // optional uint64 txnid_least_bits = 2 [default = 0]; + private long txnidLeastBits_ ; + public boolean hasTxnidLeastBits() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public long getTxnidLeastBits() { + return txnidLeastBits_; + } + public Builder setTxnidLeastBits(long value) { + bitField0_ |= 0x00000002; + txnidLeastBits_ = value; + + return this; + } + public Builder clearTxnidLeastBits() { + bitField0_ = (bitField0_ & ~0x00000002); + txnidLeastBits_ = 0L; + + return this; + } + + // optional uint64 txnid_most_bits = 3 [default = 0]; + private long txnidMostBits_ ; + public boolean hasTxnidMostBits() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public long getTxnidMostBits() { + return txnidMostBits_; + } + public Builder setTxnidMostBits(long value) { + bitField0_ |= 0x00000004; + txnidMostBits_ = value; + + return this; + } + public Builder clearTxnidMostBits() { + bitField0_ = (bitField0_ & ~0x00000004); + txnidMostBits_ = 0L; + + return this; + } + + // repeated string partitions = 4; + private org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringList partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; + private void ensurePartitionsIsMutable() { + if (!((bitField0_ & 0x00000008) == 0x00000008)) { + partitions_ = new org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList(partitions_); + bitField0_ |= 0x00000008; + } + } + public java.util.List + getPartitionsList() { + return java.util.Collections.unmodifiableList(partitions_); + } + public int getPartitionsCount() { + return partitions_.size(); + } + public String getPartitions(int index) { + return partitions_.get(index); + } + public Builder setPartitions( + int index, String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePartitionsIsMutable(); + partitions_.set(index, value); + + return this; + } + public Builder addPartitions(String value) { + if (value == null) { + throw new NullPointerException(); + } + ensurePartitionsIsMutable(); + partitions_.add(value); + + return this; + } + public Builder addAllPartitions( + java.lang.Iterable values) { + ensurePartitionsIsMutable(); + super.addAll(values, partitions_); + + return this; + } + public Builder clearPartitions() { + partitions_ = org.apache.pulsar.shaded.com.google.protobuf.v241.LazyStringArrayList.EMPTY; + bitField0_ = (bitField0_ & ~0x00000008); + + return this; + } + void addPartitions(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { + ensurePartitionsIsMutable(); + partitions_.add(value); + + } + + // @@protoc_insertion_point(builder_scope:pulsar.proto.CommandAddPartitionToTxn) + } + + static { + defaultInstance = new CommandAddPartitionToTxn(true); + defaultInstance.initFields(); + } + + // @@protoc_insertion_point(class_scope:pulsar.proto.CommandAddPartitionToTxn) + } + + public interface CommandAddPartitionToTxnResponseOrBuilder + extends org.apache.pulsar.shaded.com.google.protobuf.v241.MessageLiteOrBuilder { + + // required uint64 request_id = 1; + boolean hasRequestId(); + long getRequestId(); + + // optional uint64 txnid_least_bits = 2 [default = 0]; + boolean hasTxnidLeastBits(); + long getTxnidLeastBits(); + + // optional uint64 txnid_most_bits = 3 [default = 0]; + boolean hasTxnidMostBits(); + long getTxnidMostBits(); + + // optional .pulsar.proto.ServerError error = 4; + boolean hasError(); + org.apache.pulsar.common.api.proto.PulsarApi.ServerError getError(); + + // optional string message = 5; + boolean hasMessage(); + String getMessage(); + } + public static final class CommandAddPartitionToTxnResponse extends + org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite + implements CommandAddPartitionToTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream.ByteBufGeneratedMessage { + // Use CommandAddPartitionToTxnResponse.newBuilder() to construct. + private io.netty.util.Recycler.Handle handle; + private CommandAddPartitionToTxnResponse(io.netty.util.Recycler.Handle handle) { + this.handle = handle; + } + + private static final io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected CommandAddPartitionToTxnResponse newObject(Handle handle) { + return new CommandAddPartitionToTxnResponse(handle); + } + }; + + public void recycle() { + this.initFields(); + this.memoizedIsInitialized = -1; + this.bitField0_ = 0; + this.memoizedSerializedSize = -1; + if (handle != null) { RECYCLER.recycle(this, handle); } + } + + private CommandAddPartitionToTxnResponse(boolean noInit) {} + + private static final CommandAddPartitionToTxnResponse defaultInstance; + public static CommandAddPartitionToTxnResponse getDefaultInstance() { + return defaultInstance; + } + + public CommandAddPartitionToTxnResponse getDefaultInstanceForType() { + return defaultInstance; + } + + private int bitField0_; + // required uint64 request_id = 1; + public static final int REQUEST_ID_FIELD_NUMBER = 1; + private long requestId_; + public boolean hasRequestId() { + return ((bitField0_ & 0x00000001) == 0x00000001); + } + public long getRequestId() { + return requestId_; + } + + // optional uint64 txnid_least_bits = 2 [default = 0]; + public static final int TXNID_LEAST_BITS_FIELD_NUMBER = 2; + private long txnidLeastBits_; + public boolean hasTxnidLeastBits() { + return ((bitField0_ & 0x00000002) == 0x00000002); + } + public long getTxnidLeastBits() { + return txnidLeastBits_; + } + + // optional uint64 txnid_most_bits = 3 [default = 0]; + public static final int TXNID_MOST_BITS_FIELD_NUMBER = 3; + private long txnidMostBits_; + public boolean hasTxnidMostBits() { + return ((bitField0_ & 0x00000004) == 0x00000004); + } + public long getTxnidMostBits() { + return txnidMostBits_; + } + + // optional .pulsar.proto.ServerError error = 4; + public static final int ERROR_FIELD_NUMBER = 4; + private org.apache.pulsar.common.api.proto.PulsarApi.ServerError error_; + public boolean hasError() { + return ((bitField0_ & 0x00000008) == 0x00000008); + } + public org.apache.pulsar.common.api.proto.PulsarApi.ServerError getError() { + return error_; + } + + // optional string message = 5; + public static final int MESSAGE_FIELD_NUMBER = 5; + private java.lang.Object message_; + public boolean hasMessage() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + public String getMessage() { + java.lang.Object ref = message_; + if (ref instanceof String) { + return (String) ref; + } else { + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString bs = + (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; + String s = bs.toStringUtf8(); + if (org.apache.pulsar.shaded.com.google.protobuf.v241.Internal.isValidUtf8(bs)) { + message_ = s; + } + return s; + } + } + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getMessageBytes() { + java.lang.Object ref = message_; + if (ref instanceof String) { + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString b = + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.copyFromUtf8((String) ref); + message_ = b; + return b; + } else { + return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; + } + } + + private void initFields() { + requestId_ = 0L; + txnidLeastBits_ = 0L; + txnidMostBits_ = 0L; + error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + message_ = ""; + } + private byte memoizedIsInitialized = -1; + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized != -1) return isInitialized == 1; + + if (!hasRequestId()) { + memoizedIsInitialized = 0; + return false; + } + memoizedIsInitialized = 1; + return true; + } + + public void writeTo(org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream output) + throws java.io.IOException { + throw new RuntimeException("Cannot use CodedOutputStream"); + } + + public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStream output) + throws java.io.IOException { + getSerializedSize(); + if (((bitField0_ & 0x00000001) == 0x00000001)) { + output.writeUInt64(1, requestId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + output.writeUInt64(2, txnidLeastBits_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + output.writeUInt64(3, txnidMostBits_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + output.writeEnum(4, error_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeBytes(5, getMessageBytes()); + } + } + + private int memoizedSerializedSize = -1; + public int getSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) == 0x00000001)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeUInt64Size(1, requestId_); + } + if (((bitField0_ & 0x00000002) == 0x00000002)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeUInt64Size(2, txnidLeastBits_); + } + if (((bitField0_ & 0x00000004) == 0x00000004)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeUInt64Size(3, txnidMostBits_); + } + if (((bitField0_ & 0x00000008) == 0x00000008)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeEnumSize(4, error_.getNumber()); + } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeBytesSize(5, getMessageBytes()); + } + memoizedSerializedSize = size; + return size; + } + + private static final long serialVersionUID = 0L; + @java.lang.Override + protected java.lang.Object writeReplace() + throws java.io.ObjectStreamException { + return super.writeReplace(); + } + + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + throw new RuntimeException("Disabled"); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString data, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + throw new RuntimeException("Disabled"); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom(byte[] data) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data).buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + byte[] data, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + return newBuilder().mergeFrom(data, extensionRegistry) + .buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + java.io.InputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseDelimitedFrom( + java.io.InputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + Builder builder = newBuilder(); + if (builder.mergeDelimitedFrom(input, extensionRegistry)) { + return builder.buildParsed(); + } else { + return null; + } + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input) + throws java.io.IOException { + return newBuilder().mergeFrom(input).buildParsed(); + } + public static org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse parseFrom( + org.apache.pulsar.shaded.com.google.protobuf.v241.CodedInputStream input, + org.apache.pulsar.shaded.com.google.protobuf.v241.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return newBuilder().mergeFrom(input, extensionRegistry) + .buildParsed(); + } + + public static Builder newBuilder() { return Builder.create(); } + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse prototype) { + return newBuilder().mergeFrom(prototype); + } + public Builder toBuilder() { return newBuilder(this); } + + public static final class Builder extends + org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite.Builder< + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse, Builder> + implements org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponseOrBuilder, org.apache.pulsar.common.util.protobuf.ByteBufCodedInputStream.ByteBufMessageBuilder { + // Construct using org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.newBuilder() + private final io.netty.util.Recycler.Handle handle; + private Builder(io.netty.util.Recycler.Handle handle) { + this.handle = handle; + maybeForceBuilderInitialization(); + } + private final static io.netty.util.Recycler RECYCLER = new io.netty.util.Recycler() { + protected Builder newObject(io.netty.util.Recycler.Handle handle) { + return new Builder(handle); + } + }; + + public void recycle() { + clear(); + if (handle != null) {RECYCLER.recycle(this, handle);} + } + + private void maybeForceBuilderInitialization() { + } + private static Builder create() { + return RECYCLER.get(); + } + + public Builder clear() { + super.clear(); + requestId_ = 0L; + bitField0_ = (bitField0_ & ~0x00000001); + txnidLeastBits_ = 0L; + bitField0_ = (bitField0_ & ~0x00000002); + txnidMostBits_ = 0L; + bitField0_ = (bitField0_ & ~0x00000004); + error_ = org.apache.pulsar.common.api.proto.PulsarApi.ServerError.UnknownError; + bitField0_ = (bitField0_ & ~0x00000008); + message_ = ""; + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + + public Builder clone() { + return create().mergeFrom(buildPartial()); + } + + public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse getDefaultInstanceForType() { + return org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance(); + } + + public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse build() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse buildParsed() + throws org.apache.pulsar.shaded.com.google.protobuf.v241.InvalidProtocolBufferException { + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException( + result).asInvalidProtocolBufferException(); + } + return result; + } + + public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse buildPartial() { + org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse result = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.RECYCLER.get(); + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) == 0x00000001)) { + to_bitField0_ |= 0x00000001; + } + result.requestId_ = requestId_; + if (((from_bitField0_ & 0x00000002) == 0x00000002)) { + to_bitField0_ |= 0x00000002; + } + result.txnidLeastBits_ = txnidLeastBits_; + if (((from_bitField0_ & 0x00000004) == 0x00000004)) { + to_bitField0_ |= 0x00000004; + } + result.txnidMostBits_ = txnidMostBits_; + if (((from_bitField0_ & 0x00000008) == 0x00000008)) { + to_bitField0_ |= 0x00000008; + } + result.error_ = error_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.message_ = message_; + result.bitField0_ = to_bitField0_; + return result; + } + + public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse other) { + if (other == org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance()) return this; if (other.hasRequestId()) { setRequestId(other.getRequestId()); } @@ -35271,6 +36350,14 @@ public interface BaseCommandOrBuilder boolean hasAckResponse(); org.apache.pulsar.common.api.proto.PulsarApi.CommandAckResponse getAckResponse(); + // optional .pulsar.proto.CommandGetOrCreateSchema getOrCreateSchema = 39; + boolean hasGetOrCreateSchema(); + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema getGetOrCreateSchema(); + + // optional .pulsar.proto.CommandGetOrCreateSchemaResponse getOrCreateSchemaResponse = 40; + boolean hasGetOrCreateSchemaResponse(); + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse getGetOrCreateSchemaResponse(); + // optional .pulsar.proto.CommandNewTxn newTxn = 50; boolean hasNewTxn(); org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn getNewTxn(); @@ -35393,18 +36480,20 @@ public enum Type AUTH_CHALLENGE(34, 36), AUTH_RESPONSE(35, 37), ACK_RESPONSE(36, 38), - NEW_TXN(37, 50), - NEW_TXN_RESPONSE(38, 51), - ADD_PARTITION_TO_TXN(39, 52), - ADD_PARTITION_TO_TXN_RESPONSE(40, 53), - ADD_SUBSCRIPTION_TO_TXN(41, 54), - ADD_SUBSCRIPTION_TO_TXN_RESPONSE(42, 55), - END_TXN(43, 56), - END_TXN_RESPONSE(44, 57), - END_TXN_ON_PARTITION(45, 58), - END_TXN_ON_PARTITION_RESPONSE(46, 59), - END_TXN_ON_SUBSCRIPTION(47, 60), - END_TXN_ON_SUBSCRIPTION_RESPONSE(48, 61), + GET_OR_CREATE_SCHEMA(37, 39), + GET_OR_CREATE_SCHEMA_RESPONSE(38, 40), + NEW_TXN(39, 50), + NEW_TXN_RESPONSE(40, 51), + ADD_PARTITION_TO_TXN(41, 52), + ADD_PARTITION_TO_TXN_RESPONSE(42, 53), + ADD_SUBSCRIPTION_TO_TXN(43, 54), + ADD_SUBSCRIPTION_TO_TXN_RESPONSE(44, 55), + END_TXN(45, 56), + END_TXN_RESPONSE(46, 57), + END_TXN_ON_PARTITION(47, 58), + END_TXN_ON_PARTITION_RESPONSE(48, 59), + END_TXN_ON_SUBSCRIPTION(49, 60), + END_TXN_ON_SUBSCRIPTION_RESPONSE(50, 61), ; public static final int CONNECT_VALUE = 2; @@ -35444,6 +36533,8 @@ public enum Type public static final int AUTH_CHALLENGE_VALUE = 36; public static final int AUTH_RESPONSE_VALUE = 37; public static final int ACK_RESPONSE_VALUE = 38; + public static final int GET_OR_CREATE_SCHEMA_VALUE = 39; + public static final int GET_OR_CREATE_SCHEMA_RESPONSE_VALUE = 40; public static final int NEW_TXN_VALUE = 50; public static final int NEW_TXN_RESPONSE_VALUE = 51; public static final int ADD_PARTITION_TO_TXN_VALUE = 52; @@ -35499,6 +36590,8 @@ public static Type valueOf(int value) { case 36: return AUTH_CHALLENGE; case 37: return AUTH_RESPONSE; case 38: return ACK_RESPONSE; + case 39: return GET_OR_CREATE_SCHEMA; + case 40: return GET_OR_CREATE_SCHEMA_RESPONSE; case 50: return NEW_TXN; case 51: return NEW_TXN_RESPONSE; case 52: return ADD_PARTITION_TO_TXN; @@ -35918,11 +37011,31 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAckResponse getAckRes return ackResponse_; } + // optional .pulsar.proto.CommandGetOrCreateSchema getOrCreateSchema = 39; + public static final int GETORCREATESCHEMA_FIELD_NUMBER = 39; + private org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema getOrCreateSchema_; + public boolean hasGetOrCreateSchema() { + return ((bitField1_ & 0x00000040) == 0x00000040); + } + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema getGetOrCreateSchema() { + return getOrCreateSchema_; + } + + // optional .pulsar.proto.CommandGetOrCreateSchemaResponse getOrCreateSchemaResponse = 40; + public static final int GETORCREATESCHEMARESPONSE_FIELD_NUMBER = 40; + private org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse getOrCreateSchemaResponse_; + public boolean hasGetOrCreateSchemaResponse() { + return ((bitField1_ & 0x00000080) == 0x00000080); + } + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse getGetOrCreateSchemaResponse() { + return getOrCreateSchemaResponse_; + } + // optional .pulsar.proto.CommandNewTxn newTxn = 50; public static final int NEWTXN_FIELD_NUMBER = 50; private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn newTxn_; public boolean hasNewTxn() { - return ((bitField1_ & 0x00000040) == 0x00000040); + return ((bitField1_ & 0x00000100) == 0x00000100); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn getNewTxn() { return newTxn_; @@ -35932,7 +37045,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn getNewTxn() { public static final int NEWTXNRESPONSE_FIELD_NUMBER = 51; private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse newTxnResponse_; public boolean hasNewTxnResponse() { - return ((bitField1_ & 0x00000080) == 0x00000080); + return ((bitField1_ & 0x00000200) == 0x00000200); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse getNewTxnResponse() { return newTxnResponse_; @@ -35942,7 +37055,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse getNew public static final int ADDPARTITIONTOTXN_FIELD_NUMBER = 52; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn addPartitionToTxn_; public boolean hasAddPartitionToTxn() { - return ((bitField1_ & 0x00000100) == 0x00000100); + return ((bitField1_ & 0x00000400) == 0x00000400); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn getAddPartitionToTxn() { return addPartitionToTxn_; @@ -35952,7 +37065,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn get public static final int ADDPARTITIONTOTXNRESPONSE_FIELD_NUMBER = 53; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse addPartitionToTxnResponse_; public boolean hasAddPartitionToTxnResponse() { - return ((bitField1_ & 0x00000200) == 0x00000200); + return ((bitField1_ & 0x00000800) == 0x00000800); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse getAddPartitionToTxnResponse() { return addPartitionToTxnResponse_; @@ -35962,7 +37075,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResp public static final int ADDSUBSCRIPTIONTOTXN_FIELD_NUMBER = 54; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn addSubscriptionToTxn_; public boolean hasAddSubscriptionToTxn() { - return ((bitField1_ & 0x00000400) == 0x00000400); + return ((bitField1_ & 0x00001000) == 0x00001000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn getAddSubscriptionToTxn() { return addSubscriptionToTxn_; @@ -35972,7 +37085,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn public static final int ADDSUBSCRIPTIONTOTXNRESPONSE_FIELD_NUMBER = 55; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse addSubscriptionToTxnResponse_; public boolean hasAddSubscriptionToTxnResponse() { - return ((bitField1_ & 0x00000800) == 0x00000800); + return ((bitField1_ & 0x00002000) == 0x00002000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse getAddSubscriptionToTxnResponse() { return addSubscriptionToTxnResponse_; @@ -35982,7 +37095,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnR public static final int ENDTXN_FIELD_NUMBER = 56; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn endTxn_; public boolean hasEndTxn() { - return ((bitField1_ & 0x00001000) == 0x00001000); + return ((bitField1_ & 0x00004000) == 0x00004000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn getEndTxn() { return endTxn_; @@ -35992,7 +37105,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn getEndTxn() { public static final int ENDTXNRESPONSE_FIELD_NUMBER = 57; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse endTxnResponse_; public boolean hasEndTxnResponse() { - return ((bitField1_ & 0x00002000) == 0x00002000); + return ((bitField1_ & 0x00008000) == 0x00008000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse getEndTxnResponse() { return endTxnResponse_; @@ -36002,7 +37115,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse getEnd public static final int ENDTXNONPARTITION_FIELD_NUMBER = 58; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition endTxnOnPartition_; public boolean hasEndTxnOnPartition() { - return ((bitField1_ & 0x00004000) == 0x00004000); + return ((bitField1_ & 0x00010000) == 0x00010000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition getEndTxnOnPartition() { return endTxnOnPartition_; @@ -36012,7 +37125,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition get public static final int ENDTXNONPARTITIONRESPONSE_FIELD_NUMBER = 59; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse endTxnOnPartitionResponse_; public boolean hasEndTxnOnPartitionResponse() { - return ((bitField1_ & 0x00008000) == 0x00008000); + return ((bitField1_ & 0x00020000) == 0x00020000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse getEndTxnOnPartitionResponse() { return endTxnOnPartitionResponse_; @@ -36022,7 +37135,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResp public static final int ENDTXNONSUBSCRIPTION_FIELD_NUMBER = 60; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription endTxnOnSubscription_; public boolean hasEndTxnOnSubscription() { - return ((bitField1_ & 0x00010000) == 0x00010000); + return ((bitField1_ & 0x00040000) == 0x00040000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription getEndTxnOnSubscription() { return endTxnOnSubscription_; @@ -36032,7 +37145,7 @@ public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription public static final int ENDTXNONSUBSCRIPTIONRESPONSE_FIELD_NUMBER = 61; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse endTxnOnSubscriptionResponse_; public boolean hasEndTxnOnSubscriptionResponse() { - return ((bitField1_ & 0x00020000) == 0x00020000); + return ((bitField1_ & 0x00080000) == 0x00080000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse getEndTxnOnSubscriptionResponse() { return endTxnOnSubscriptionResponse_; @@ -36077,6 +37190,8 @@ private void initFields() { authChallenge_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAuthChallenge.getDefaultInstance(); authResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAuthResponse.getDefaultInstance(); ackResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAckResponse.getDefaultInstance(); + getOrCreateSchema_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance(); + getOrCreateSchemaResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance(); newTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); newTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); addPartitionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); @@ -36297,6 +37412,18 @@ public final boolean isInitialized() { return false; } } + if (hasGetOrCreateSchema()) { + if (!getGetOrCreateSchema().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } + if (hasGetOrCreateSchemaResponse()) { + if (!getGetOrCreateSchemaResponse().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } + } if (hasNewTxn()) { if (!getNewTxn().isInitialized()) { memoizedIsInitialized = 0; @@ -36496,39 +37623,45 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr output.writeMessage(38, ackResponse_); } if (((bitField1_ & 0x00000040) == 0x00000040)) { - output.writeMessage(50, newTxn_); + output.writeMessage(39, getOrCreateSchema_); } if (((bitField1_ & 0x00000080) == 0x00000080)) { - output.writeMessage(51, newTxnResponse_); + output.writeMessage(40, getOrCreateSchemaResponse_); } if (((bitField1_ & 0x00000100) == 0x00000100)) { - output.writeMessage(52, addPartitionToTxn_); + output.writeMessage(50, newTxn_); } if (((bitField1_ & 0x00000200) == 0x00000200)) { - output.writeMessage(53, addPartitionToTxnResponse_); + output.writeMessage(51, newTxnResponse_); } if (((bitField1_ & 0x00000400) == 0x00000400)) { - output.writeMessage(54, addSubscriptionToTxn_); + output.writeMessage(52, addPartitionToTxn_); } if (((bitField1_ & 0x00000800) == 0x00000800)) { - output.writeMessage(55, addSubscriptionToTxnResponse_); + output.writeMessage(53, addPartitionToTxnResponse_); } if (((bitField1_ & 0x00001000) == 0x00001000)) { - output.writeMessage(56, endTxn_); + output.writeMessage(54, addSubscriptionToTxn_); } if (((bitField1_ & 0x00002000) == 0x00002000)) { - output.writeMessage(57, endTxnResponse_); + output.writeMessage(55, addSubscriptionToTxnResponse_); } if (((bitField1_ & 0x00004000) == 0x00004000)) { - output.writeMessage(58, endTxnOnPartition_); + output.writeMessage(56, endTxn_); } if (((bitField1_ & 0x00008000) == 0x00008000)) { - output.writeMessage(59, endTxnOnPartitionResponse_); + output.writeMessage(57, endTxnResponse_); } if (((bitField1_ & 0x00010000) == 0x00010000)) { - output.writeMessage(60, endTxnOnSubscription_); + output.writeMessage(58, endTxnOnPartition_); } if (((bitField1_ & 0x00020000) == 0x00020000)) { + output.writeMessage(59, endTxnOnPartitionResponse_); + } + if (((bitField1_ & 0x00040000) == 0x00040000)) { + output.writeMessage(60, endTxnOnSubscription_); + } + if (((bitField1_ & 0x00080000) == 0x00080000)) { output.writeMessage(61, endTxnOnSubscriptionResponse_); } } @@ -36693,49 +37826,57 @@ public int getSerializedSize() { } if (((bitField1_ & 0x00000040) == 0x00000040)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(50, newTxn_); + .computeMessageSize(39, getOrCreateSchema_); } if (((bitField1_ & 0x00000080) == 0x00000080)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(51, newTxnResponse_); + .computeMessageSize(40, getOrCreateSchemaResponse_); } if (((bitField1_ & 0x00000100) == 0x00000100)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(52, addPartitionToTxn_); + .computeMessageSize(50, newTxn_); } if (((bitField1_ & 0x00000200) == 0x00000200)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(53, addPartitionToTxnResponse_); + .computeMessageSize(51, newTxnResponse_); } if (((bitField1_ & 0x00000400) == 0x00000400)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(54, addSubscriptionToTxn_); + .computeMessageSize(52, addPartitionToTxn_); } if (((bitField1_ & 0x00000800) == 0x00000800)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(55, addSubscriptionToTxnResponse_); + .computeMessageSize(53, addPartitionToTxnResponse_); } if (((bitField1_ & 0x00001000) == 0x00001000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(56, endTxn_); + .computeMessageSize(54, addSubscriptionToTxn_); } if (((bitField1_ & 0x00002000) == 0x00002000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(57, endTxnResponse_); + .computeMessageSize(55, addSubscriptionToTxnResponse_); } if (((bitField1_ & 0x00004000) == 0x00004000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(58, endTxnOnPartition_); + .computeMessageSize(56, endTxn_); } if (((bitField1_ & 0x00008000) == 0x00008000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(59, endTxnOnPartitionResponse_); + .computeMessageSize(57, endTxnResponse_); } if (((bitField1_ & 0x00010000) == 0x00010000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeMessageSize(60, endTxnOnSubscription_); + .computeMessageSize(58, endTxnOnPartition_); } if (((bitField1_ & 0x00020000) == 0x00020000)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeMessageSize(59, endTxnOnPartitionResponse_); + } + if (((bitField1_ & 0x00040000) == 0x00040000)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeMessageSize(60, endTxnOnSubscription_); + } + if (((bitField1_ & 0x00080000) == 0x00080000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream .computeMessageSize(61, endTxnOnSubscriptionResponse_); } @@ -36928,30 +38069,34 @@ public Builder clear() { bitField1_ = (bitField1_ & ~0x00000010); ackResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAckResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000020); - newTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); + getOrCreateSchema_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000040); - newTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); + getOrCreateSchemaResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000080); - addPartitionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); + newTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000100); - addPartitionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance(); + newTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000200); - addSubscriptionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.getDefaultInstance(); + addPartitionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000400); - addSubscriptionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.getDefaultInstance(); + addPartitionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00000800); - endTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.getDefaultInstance(); + addSubscriptionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00001000); - endTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.getDefaultInstance(); + addSubscriptionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00002000); - endTxnOnPartition_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.getDefaultInstance(); + endTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00004000); - endTxnOnPartitionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.getDefaultInstance(); + endTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00008000); - endTxnOnSubscription_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.getDefaultInstance(); + endTxnOnPartition_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00010000); - endTxnOnSubscriptionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.getDefaultInstance(); + endTxnOnPartitionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.getDefaultInstance(); bitField1_ = (bitField1_ & ~0x00020000); + endTxnOnSubscription_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.getDefaultInstance(); + bitField1_ = (bitField1_ & ~0x00040000); + endTxnOnSubscriptionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.getDefaultInstance(); + bitField1_ = (bitField1_ & ~0x00080000); return this; } @@ -37142,50 +38287,58 @@ public org.apache.pulsar.common.api.proto.PulsarApi.BaseCommand buildPartial() { if (((from_bitField1_ & 0x00000040) == 0x00000040)) { to_bitField1_ |= 0x00000040; } - result.newTxn_ = newTxn_; + result.getOrCreateSchema_ = getOrCreateSchema_; if (((from_bitField1_ & 0x00000080) == 0x00000080)) { to_bitField1_ |= 0x00000080; } - result.newTxnResponse_ = newTxnResponse_; + result.getOrCreateSchemaResponse_ = getOrCreateSchemaResponse_; if (((from_bitField1_ & 0x00000100) == 0x00000100)) { to_bitField1_ |= 0x00000100; } - result.addPartitionToTxn_ = addPartitionToTxn_; + result.newTxn_ = newTxn_; if (((from_bitField1_ & 0x00000200) == 0x00000200)) { to_bitField1_ |= 0x00000200; } - result.addPartitionToTxnResponse_ = addPartitionToTxnResponse_; + result.newTxnResponse_ = newTxnResponse_; if (((from_bitField1_ & 0x00000400) == 0x00000400)) { to_bitField1_ |= 0x00000400; } - result.addSubscriptionToTxn_ = addSubscriptionToTxn_; + result.addPartitionToTxn_ = addPartitionToTxn_; if (((from_bitField1_ & 0x00000800) == 0x00000800)) { to_bitField1_ |= 0x00000800; } - result.addSubscriptionToTxnResponse_ = addSubscriptionToTxnResponse_; + result.addPartitionToTxnResponse_ = addPartitionToTxnResponse_; if (((from_bitField1_ & 0x00001000) == 0x00001000)) { to_bitField1_ |= 0x00001000; } - result.endTxn_ = endTxn_; + result.addSubscriptionToTxn_ = addSubscriptionToTxn_; if (((from_bitField1_ & 0x00002000) == 0x00002000)) { to_bitField1_ |= 0x00002000; } - result.endTxnResponse_ = endTxnResponse_; + result.addSubscriptionToTxnResponse_ = addSubscriptionToTxnResponse_; if (((from_bitField1_ & 0x00004000) == 0x00004000)) { to_bitField1_ |= 0x00004000; } - result.endTxnOnPartition_ = endTxnOnPartition_; + result.endTxn_ = endTxn_; if (((from_bitField1_ & 0x00008000) == 0x00008000)) { to_bitField1_ |= 0x00008000; } - result.endTxnOnPartitionResponse_ = endTxnOnPartitionResponse_; + result.endTxnResponse_ = endTxnResponse_; if (((from_bitField1_ & 0x00010000) == 0x00010000)) { to_bitField1_ |= 0x00010000; } - result.endTxnOnSubscription_ = endTxnOnSubscription_; + result.endTxnOnPartition_ = endTxnOnPartition_; if (((from_bitField1_ & 0x00020000) == 0x00020000)) { to_bitField1_ |= 0x00020000; } + result.endTxnOnPartitionResponse_ = endTxnOnPartitionResponse_; + if (((from_bitField1_ & 0x00040000) == 0x00040000)) { + to_bitField1_ |= 0x00040000; + } + result.endTxnOnSubscription_ = endTxnOnSubscription_; + if (((from_bitField1_ & 0x00080000) == 0x00080000)) { + to_bitField1_ |= 0x00080000; + } result.endTxnOnSubscriptionResponse_ = endTxnOnSubscriptionResponse_; result.bitField0_ = to_bitField0_; result.bitField1_ = to_bitField1_; @@ -37308,6 +38461,12 @@ public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.BaseComman if (other.hasAckResponse()) { mergeAckResponse(other.getAckResponse()); } + if (other.hasGetOrCreateSchema()) { + mergeGetOrCreateSchema(other.getGetOrCreateSchema()); + } + if (other.hasGetOrCreateSchemaResponse()) { + mergeGetOrCreateSchemaResponse(other.getGetOrCreateSchemaResponse()); + } if (other.hasNewTxn()) { mergeNewTxn(other.getNewTxn()); } @@ -37550,6 +38709,18 @@ public final boolean isInitialized() { return false; } } + if (hasGetOrCreateSchema()) { + if (!getGetOrCreateSchema().isInitialized()) { + + return false; + } + } + if (hasGetOrCreateSchemaResponse()) { + if (!getGetOrCreateSchemaResponse().isInitialized()) { + + return false; + } + } if (hasNewTxn()) { if (!getNewTxn().isInitialized()) { @@ -38026,6 +39197,26 @@ public Builder mergeFrom( subBuilder.recycle(); break; } + case 314: { + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.Builder subBuilder = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.newBuilder(); + if (hasGetOrCreateSchema()) { + subBuilder.mergeFrom(getGetOrCreateSchema()); + } + input.readMessage(subBuilder, extensionRegistry); + setGetOrCreateSchema(subBuilder.buildPartial()); + subBuilder.recycle(); + break; + } + case 322: { + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.Builder subBuilder = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.newBuilder(); + if (hasGetOrCreateSchemaResponse()) { + subBuilder.mergeFrom(getGetOrCreateSchemaResponse()); + } + input.readMessage(subBuilder, extensionRegistry); + setGetOrCreateSchemaResponse(subBuilder.buildPartial()); + subBuilder.recycle(); + break; + } case 402: { org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.Builder subBuilder = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.newBuilder(); if (hasNewTxn()) { @@ -39768,10 +40959,96 @@ public Builder clearAckResponse() { return this; } + // optional .pulsar.proto.CommandGetOrCreateSchema getOrCreateSchema = 39; + private org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema getOrCreateSchema_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance(); + public boolean hasGetOrCreateSchema() { + return ((bitField1_ & 0x00000040) == 0x00000040); + } + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema getGetOrCreateSchema() { + return getOrCreateSchema_; + } + public Builder setGetOrCreateSchema(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema value) { + if (value == null) { + throw new NullPointerException(); + } + getOrCreateSchema_ = value; + + bitField1_ |= 0x00000040; + return this; + } + public Builder setGetOrCreateSchema( + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.Builder builderForValue) { + getOrCreateSchema_ = builderForValue.build(); + + bitField1_ |= 0x00000040; + return this; + } + public Builder mergeGetOrCreateSchema(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema value) { + if (((bitField1_ & 0x00000040) == 0x00000040) && + getOrCreateSchema_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance()) { + getOrCreateSchema_ = + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.newBuilder(getOrCreateSchema_).mergeFrom(value).buildPartial(); + } else { + getOrCreateSchema_ = value; + } + + bitField1_ |= 0x00000040; + return this; + } + public Builder clearGetOrCreateSchema() { + getOrCreateSchema_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema.getDefaultInstance(); + + bitField1_ = (bitField1_ & ~0x00000040); + return this; + } + + // optional .pulsar.proto.CommandGetOrCreateSchemaResponse getOrCreateSchemaResponse = 40; + private org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse getOrCreateSchemaResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance(); + public boolean hasGetOrCreateSchemaResponse() { + return ((bitField1_ & 0x00000080) == 0x00000080); + } + public org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse getGetOrCreateSchemaResponse() { + return getOrCreateSchemaResponse_; + } + public Builder setGetOrCreateSchemaResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse value) { + if (value == null) { + throw new NullPointerException(); + } + getOrCreateSchemaResponse_ = value; + + bitField1_ |= 0x00000080; + return this; + } + public Builder setGetOrCreateSchemaResponse( + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.Builder builderForValue) { + getOrCreateSchemaResponse_ = builderForValue.build(); + + bitField1_ |= 0x00000080; + return this; + } + public Builder mergeGetOrCreateSchemaResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse value) { + if (((bitField1_ & 0x00000080) == 0x00000080) && + getOrCreateSchemaResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance()) { + getOrCreateSchemaResponse_ = + org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.newBuilder(getOrCreateSchemaResponse_).mergeFrom(value).buildPartial(); + } else { + getOrCreateSchemaResponse_ = value; + } + + bitField1_ |= 0x00000080; + return this; + } + public Builder clearGetOrCreateSchemaResponse() { + getOrCreateSchemaResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse.getDefaultInstance(); + + bitField1_ = (bitField1_ & ~0x00000080); + return this; + } + // optional .pulsar.proto.CommandNewTxn newTxn = 50; private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn newTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); public boolean hasNewTxn() { - return ((bitField1_ & 0x00000040) == 0x00000040); + return ((bitField1_ & 0x00000100) == 0x00000100); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn getNewTxn() { return newTxn_; @@ -39782,18 +41059,18 @@ public Builder setNewTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandNew } newTxn_ = value; - bitField1_ |= 0x00000040; + bitField1_ |= 0x00000100; return this; } public Builder setNewTxn( org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.Builder builderForValue) { newTxn_ = builderForValue.build(); - bitField1_ |= 0x00000040; + bitField1_ |= 0x00000100; return this; } public Builder mergeNewTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn value) { - if (((bitField1_ & 0x00000040) == 0x00000040) && + if (((bitField1_ & 0x00000100) == 0x00000100) && newTxn_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance()) { newTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.newBuilder(newTxn_).mergeFrom(value).buildPartial(); @@ -39801,20 +41078,20 @@ public Builder mergeNewTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandN newTxn_ = value; } - bitField1_ |= 0x00000040; + bitField1_ |= 0x00000100; return this; } public Builder clearNewTxn() { newTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxn.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00000040); + bitField1_ = (bitField1_ & ~0x00000100); return this; } // optional .pulsar.proto.CommandNewTxnResponse newTxnResponse = 51; private org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse newTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); public boolean hasNewTxnResponse() { - return ((bitField1_ & 0x00000080) == 0x00000080); + return ((bitField1_ & 0x00000200) == 0x00000200); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse getNewTxnResponse() { return newTxnResponse_; @@ -39825,18 +41102,18 @@ public Builder setNewTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi.Co } newTxnResponse_ = value; - bitField1_ |= 0x00000080; + bitField1_ |= 0x00000200; return this; } public Builder setNewTxnResponse( org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.Builder builderForValue) { newTxnResponse_ = builderForValue.build(); - bitField1_ |= 0x00000080; + bitField1_ |= 0x00000200; return this; } public Builder mergeNewTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse value) { - if (((bitField1_ & 0x00000080) == 0x00000080) && + if (((bitField1_ & 0x00000200) == 0x00000200) && newTxnResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance()) { newTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.newBuilder(newTxnResponse_).mergeFrom(value).buildPartial(); @@ -39844,20 +41121,20 @@ public Builder mergeNewTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi. newTxnResponse_ = value; } - bitField1_ |= 0x00000080; + bitField1_ |= 0x00000200; return this; } public Builder clearNewTxnResponse() { newTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandNewTxnResponse.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00000080); + bitField1_ = (bitField1_ & ~0x00000200); return this; } // optional .pulsar.proto.CommandAddPartitionToTxn addPartitionToTxn = 52; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn addPartitionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); public boolean hasAddPartitionToTxn() { - return ((bitField1_ & 0x00000100) == 0x00000100); + return ((bitField1_ & 0x00000400) == 0x00000400); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn getAddPartitionToTxn() { return addPartitionToTxn_; @@ -39868,18 +41145,18 @@ public Builder setAddPartitionToTxn(org.apache.pulsar.common.api.proto.PulsarApi } addPartitionToTxn_ = value; - bitField1_ |= 0x00000100; + bitField1_ |= 0x00000400; return this; } public Builder setAddPartitionToTxn( org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.Builder builderForValue) { addPartitionToTxn_ = builderForValue.build(); - bitField1_ |= 0x00000100; + bitField1_ |= 0x00000400; return this; } public Builder mergeAddPartitionToTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn value) { - if (((bitField1_ & 0x00000100) == 0x00000100) && + if (((bitField1_ & 0x00000400) == 0x00000400) && addPartitionToTxn_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance()) { addPartitionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.newBuilder(addPartitionToTxn_).mergeFrom(value).buildPartial(); @@ -39887,20 +41164,20 @@ public Builder mergeAddPartitionToTxn(org.apache.pulsar.common.api.proto.PulsarA addPartitionToTxn_ = value; } - bitField1_ |= 0x00000100; + bitField1_ |= 0x00000400; return this; } public Builder clearAddPartitionToTxn() { addPartitionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxn.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00000100); + bitField1_ = (bitField1_ & ~0x00000400); return this; } // optional .pulsar.proto.CommandAddPartitionToTxnResponse addPartitionToTxnResponse = 53; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse addPartitionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance(); public boolean hasAddPartitionToTxnResponse() { - return ((bitField1_ & 0x00000200) == 0x00000200); + return ((bitField1_ & 0x00000800) == 0x00000800); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse getAddPartitionToTxnResponse() { return addPartitionToTxnResponse_; @@ -39911,18 +41188,18 @@ public Builder setAddPartitionToTxnResponse(org.apache.pulsar.common.api.proto.P } addPartitionToTxnResponse_ = value; - bitField1_ |= 0x00000200; + bitField1_ |= 0x00000800; return this; } public Builder setAddPartitionToTxnResponse( org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.Builder builderForValue) { addPartitionToTxnResponse_ = builderForValue.build(); - bitField1_ |= 0x00000200; + bitField1_ |= 0x00000800; return this; } public Builder mergeAddPartitionToTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse value) { - if (((bitField1_ & 0x00000200) == 0x00000200) && + if (((bitField1_ & 0x00000800) == 0x00000800) && addPartitionToTxnResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance()) { addPartitionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.newBuilder(addPartitionToTxnResponse_).mergeFrom(value).buildPartial(); @@ -39930,20 +41207,20 @@ public Builder mergeAddPartitionToTxnResponse(org.apache.pulsar.common.api.proto addPartitionToTxnResponse_ = value; } - bitField1_ |= 0x00000200; + bitField1_ |= 0x00000800; return this; } public Builder clearAddPartitionToTxnResponse() { addPartitionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddPartitionToTxnResponse.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00000200); + bitField1_ = (bitField1_ & ~0x00000800); return this; } // optional .pulsar.proto.CommandAddSubscriptionToTxn addSubscriptionToTxn = 54; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn addSubscriptionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.getDefaultInstance(); public boolean hasAddSubscriptionToTxn() { - return ((bitField1_ & 0x00000400) == 0x00000400); + return ((bitField1_ & 0x00001000) == 0x00001000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn getAddSubscriptionToTxn() { return addSubscriptionToTxn_; @@ -39954,18 +41231,18 @@ public Builder setAddSubscriptionToTxn(org.apache.pulsar.common.api.proto.Pulsar } addSubscriptionToTxn_ = value; - bitField1_ |= 0x00000400; + bitField1_ |= 0x00001000; return this; } public Builder setAddSubscriptionToTxn( org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.Builder builderForValue) { addSubscriptionToTxn_ = builderForValue.build(); - bitField1_ |= 0x00000400; + bitField1_ |= 0x00001000; return this; } public Builder mergeAddSubscriptionToTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn value) { - if (((bitField1_ & 0x00000400) == 0x00000400) && + if (((bitField1_ & 0x00001000) == 0x00001000) && addSubscriptionToTxn_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.getDefaultInstance()) { addSubscriptionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.newBuilder(addSubscriptionToTxn_).mergeFrom(value).buildPartial(); @@ -39973,20 +41250,20 @@ public Builder mergeAddSubscriptionToTxn(org.apache.pulsar.common.api.proto.Puls addSubscriptionToTxn_ = value; } - bitField1_ |= 0x00000400; + bitField1_ |= 0x00001000; return this; } public Builder clearAddSubscriptionToTxn() { addSubscriptionToTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxn.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00000400); + bitField1_ = (bitField1_ & ~0x00001000); return this; } // optional .pulsar.proto.CommandAddSubscriptionToTxnResponse addSubscriptionToTxnResponse = 55; private org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse addSubscriptionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.getDefaultInstance(); public boolean hasAddSubscriptionToTxnResponse() { - return ((bitField1_ & 0x00000800) == 0x00000800); + return ((bitField1_ & 0x00002000) == 0x00002000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse getAddSubscriptionToTxnResponse() { return addSubscriptionToTxnResponse_; @@ -39997,18 +41274,18 @@ public Builder setAddSubscriptionToTxnResponse(org.apache.pulsar.common.api.prot } addSubscriptionToTxnResponse_ = value; - bitField1_ |= 0x00000800; + bitField1_ |= 0x00002000; return this; } public Builder setAddSubscriptionToTxnResponse( org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.Builder builderForValue) { addSubscriptionToTxnResponse_ = builderForValue.build(); - bitField1_ |= 0x00000800; + bitField1_ |= 0x00002000; return this; } public Builder mergeAddSubscriptionToTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse value) { - if (((bitField1_ & 0x00000800) == 0x00000800) && + if (((bitField1_ & 0x00002000) == 0x00002000) && addSubscriptionToTxnResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.getDefaultInstance()) { addSubscriptionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.newBuilder(addSubscriptionToTxnResponse_).mergeFrom(value).buildPartial(); @@ -40016,20 +41293,20 @@ public Builder mergeAddSubscriptionToTxnResponse(org.apache.pulsar.common.api.pr addSubscriptionToTxnResponse_ = value; } - bitField1_ |= 0x00000800; + bitField1_ |= 0x00002000; return this; } public Builder clearAddSubscriptionToTxnResponse() { addSubscriptionToTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandAddSubscriptionToTxnResponse.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00000800); + bitField1_ = (bitField1_ & ~0x00002000); return this; } // optional .pulsar.proto.CommandEndTxn endTxn = 56; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn endTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.getDefaultInstance(); public boolean hasEndTxn() { - return ((bitField1_ & 0x00001000) == 0x00001000); + return ((bitField1_ & 0x00004000) == 0x00004000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn getEndTxn() { return endTxn_; @@ -40040,18 +41317,18 @@ public Builder setEndTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandEnd } endTxn_ = value; - bitField1_ |= 0x00001000; + bitField1_ |= 0x00004000; return this; } public Builder setEndTxn( org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.Builder builderForValue) { endTxn_ = builderForValue.build(); - bitField1_ |= 0x00001000; + bitField1_ |= 0x00004000; return this; } public Builder mergeEndTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn value) { - if (((bitField1_ & 0x00001000) == 0x00001000) && + if (((bitField1_ & 0x00004000) == 0x00004000) && endTxn_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.getDefaultInstance()) { endTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.newBuilder(endTxn_).mergeFrom(value).buildPartial(); @@ -40059,20 +41336,20 @@ public Builder mergeEndTxn(org.apache.pulsar.common.api.proto.PulsarApi.CommandE endTxn_ = value; } - bitField1_ |= 0x00001000; + bitField1_ |= 0x00004000; return this; } public Builder clearEndTxn() { endTxn_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxn.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00001000); + bitField1_ = (bitField1_ & ~0x00004000); return this; } // optional .pulsar.proto.CommandEndTxnResponse endTxnResponse = 57; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse endTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.getDefaultInstance(); public boolean hasEndTxnResponse() { - return ((bitField1_ & 0x00002000) == 0x00002000); + return ((bitField1_ & 0x00008000) == 0x00008000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse getEndTxnResponse() { return endTxnResponse_; @@ -40083,18 +41360,18 @@ public Builder setEndTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi.Co } endTxnResponse_ = value; - bitField1_ |= 0x00002000; + bitField1_ |= 0x00008000; return this; } public Builder setEndTxnResponse( org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.Builder builderForValue) { endTxnResponse_ = builderForValue.build(); - bitField1_ |= 0x00002000; + bitField1_ |= 0x00008000; return this; } public Builder mergeEndTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse value) { - if (((bitField1_ & 0x00002000) == 0x00002000) && + if (((bitField1_ & 0x00008000) == 0x00008000) && endTxnResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.getDefaultInstance()) { endTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.newBuilder(endTxnResponse_).mergeFrom(value).buildPartial(); @@ -40102,20 +41379,20 @@ public Builder mergeEndTxnResponse(org.apache.pulsar.common.api.proto.PulsarApi. endTxnResponse_ = value; } - bitField1_ |= 0x00002000; + bitField1_ |= 0x00008000; return this; } public Builder clearEndTxnResponse() { endTxnResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00002000); + bitField1_ = (bitField1_ & ~0x00008000); return this; } // optional .pulsar.proto.CommandEndTxnOnPartition endTxnOnPartition = 58; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition endTxnOnPartition_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.getDefaultInstance(); public boolean hasEndTxnOnPartition() { - return ((bitField1_ & 0x00004000) == 0x00004000); + return ((bitField1_ & 0x00010000) == 0x00010000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition getEndTxnOnPartition() { return endTxnOnPartition_; @@ -40126,18 +41403,18 @@ public Builder setEndTxnOnPartition(org.apache.pulsar.common.api.proto.PulsarApi } endTxnOnPartition_ = value; - bitField1_ |= 0x00004000; + bitField1_ |= 0x00010000; return this; } public Builder setEndTxnOnPartition( org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.Builder builderForValue) { endTxnOnPartition_ = builderForValue.build(); - bitField1_ |= 0x00004000; + bitField1_ |= 0x00010000; return this; } public Builder mergeEndTxnOnPartition(org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition value) { - if (((bitField1_ & 0x00004000) == 0x00004000) && + if (((bitField1_ & 0x00010000) == 0x00010000) && endTxnOnPartition_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.getDefaultInstance()) { endTxnOnPartition_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.newBuilder(endTxnOnPartition_).mergeFrom(value).buildPartial(); @@ -40145,20 +41422,20 @@ public Builder mergeEndTxnOnPartition(org.apache.pulsar.common.api.proto.PulsarA endTxnOnPartition_ = value; } - bitField1_ |= 0x00004000; + bitField1_ |= 0x00010000; return this; } public Builder clearEndTxnOnPartition() { endTxnOnPartition_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartition.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00004000); + bitField1_ = (bitField1_ & ~0x00010000); return this; } // optional .pulsar.proto.CommandEndTxnOnPartitionResponse endTxnOnPartitionResponse = 59; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse endTxnOnPartitionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.getDefaultInstance(); public boolean hasEndTxnOnPartitionResponse() { - return ((bitField1_ & 0x00008000) == 0x00008000); + return ((bitField1_ & 0x00020000) == 0x00020000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse getEndTxnOnPartitionResponse() { return endTxnOnPartitionResponse_; @@ -40169,18 +41446,18 @@ public Builder setEndTxnOnPartitionResponse(org.apache.pulsar.common.api.proto.P } endTxnOnPartitionResponse_ = value; - bitField1_ |= 0x00008000; + bitField1_ |= 0x00020000; return this; } public Builder setEndTxnOnPartitionResponse( org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.Builder builderForValue) { endTxnOnPartitionResponse_ = builderForValue.build(); - bitField1_ |= 0x00008000; + bitField1_ |= 0x00020000; return this; } public Builder mergeEndTxnOnPartitionResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse value) { - if (((bitField1_ & 0x00008000) == 0x00008000) && + if (((bitField1_ & 0x00020000) == 0x00020000) && endTxnOnPartitionResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.getDefaultInstance()) { endTxnOnPartitionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.newBuilder(endTxnOnPartitionResponse_).mergeFrom(value).buildPartial(); @@ -40188,20 +41465,20 @@ public Builder mergeEndTxnOnPartitionResponse(org.apache.pulsar.common.api.proto endTxnOnPartitionResponse_ = value; } - bitField1_ |= 0x00008000; + bitField1_ |= 0x00020000; return this; } public Builder clearEndTxnOnPartitionResponse() { endTxnOnPartitionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnPartitionResponse.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00008000); + bitField1_ = (bitField1_ & ~0x00020000); return this; } // optional .pulsar.proto.CommandEndTxnOnSubscription endTxnOnSubscription = 60; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription endTxnOnSubscription_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.getDefaultInstance(); public boolean hasEndTxnOnSubscription() { - return ((bitField1_ & 0x00010000) == 0x00010000); + return ((bitField1_ & 0x00040000) == 0x00040000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription getEndTxnOnSubscription() { return endTxnOnSubscription_; @@ -40212,18 +41489,18 @@ public Builder setEndTxnOnSubscription(org.apache.pulsar.common.api.proto.Pulsar } endTxnOnSubscription_ = value; - bitField1_ |= 0x00010000; + bitField1_ |= 0x00040000; return this; } public Builder setEndTxnOnSubscription( org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.Builder builderForValue) { endTxnOnSubscription_ = builderForValue.build(); - bitField1_ |= 0x00010000; + bitField1_ |= 0x00040000; return this; } public Builder mergeEndTxnOnSubscription(org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription value) { - if (((bitField1_ & 0x00010000) == 0x00010000) && + if (((bitField1_ & 0x00040000) == 0x00040000) && endTxnOnSubscription_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.getDefaultInstance()) { endTxnOnSubscription_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.newBuilder(endTxnOnSubscription_).mergeFrom(value).buildPartial(); @@ -40231,20 +41508,20 @@ public Builder mergeEndTxnOnSubscription(org.apache.pulsar.common.api.proto.Puls endTxnOnSubscription_ = value; } - bitField1_ |= 0x00010000; + bitField1_ |= 0x00040000; return this; } public Builder clearEndTxnOnSubscription() { endTxnOnSubscription_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscription.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00010000); + bitField1_ = (bitField1_ & ~0x00040000); return this; } // optional .pulsar.proto.CommandEndTxnOnSubscriptionResponse endTxnOnSubscriptionResponse = 61; private org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse endTxnOnSubscriptionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.getDefaultInstance(); public boolean hasEndTxnOnSubscriptionResponse() { - return ((bitField1_ & 0x00020000) == 0x00020000); + return ((bitField1_ & 0x00080000) == 0x00080000); } public org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse getEndTxnOnSubscriptionResponse() { return endTxnOnSubscriptionResponse_; @@ -40255,18 +41532,18 @@ public Builder setEndTxnOnSubscriptionResponse(org.apache.pulsar.common.api.prot } endTxnOnSubscriptionResponse_ = value; - bitField1_ |= 0x00020000; + bitField1_ |= 0x00080000; return this; } public Builder setEndTxnOnSubscriptionResponse( org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.Builder builderForValue) { endTxnOnSubscriptionResponse_ = builderForValue.build(); - bitField1_ |= 0x00020000; + bitField1_ |= 0x00080000; return this; } public Builder mergeEndTxnOnSubscriptionResponse(org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse value) { - if (((bitField1_ & 0x00020000) == 0x00020000) && + if (((bitField1_ & 0x00080000) == 0x00080000) && endTxnOnSubscriptionResponse_ != org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.getDefaultInstance()) { endTxnOnSubscriptionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.newBuilder(endTxnOnSubscriptionResponse_).mergeFrom(value).buildPartial(); @@ -40274,13 +41551,13 @@ public Builder mergeEndTxnOnSubscriptionResponse(org.apache.pulsar.common.api.pr endTxnOnSubscriptionResponse_ = value; } - bitField1_ |= 0x00020000; + bitField1_ |= 0x00080000; return this; } public Builder clearEndTxnOnSubscriptionResponse() { endTxnOnSubscriptionResponse_ = org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnOnSubscriptionResponse.getDefaultInstance(); - bitField1_ = (bitField1_ & ~0x00020000); + bitField1_ = (bitField1_ & ~0x00080000); return this; } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/Commands.java b/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/Commands.java index 22622259b6e13..b878458773e47 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/Commands.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/Commands.java @@ -67,6 +67,8 @@ import org.apache.pulsar.common.api.proto.PulsarApi.CommandError; import org.apache.pulsar.common.api.proto.PulsarApi.CommandFlow; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetLastMessageId; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetSchema; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetSchemaResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetTopicsOfNamespace; @@ -1064,6 +1066,44 @@ public static ByteBuf newGetSchemaResponseError(long requestId, ServerError erro return res; } + public static ByteBuf newGetOrCreateSchema(long requestId, String topic, SchemaInfo schemaInfo) { + CommandGetOrCreateSchema getOrCreateSchema = + CommandGetOrCreateSchema.newBuilder() + .setRequestId(requestId) + .setTopic(topic) + .setSchema(getSchema(schemaInfo)).build(); + ByteBuf res = serializeWithSize(BaseCommand.newBuilder() + .setType(Type.GET_OR_CREATE_SCHEMA) + .setGetOrCreateSchema(getOrCreateSchema)); + getOrCreateSchema.recycle(); + return res; + } + + public static ByteBuf newGetOrCreateSchemaResponse(long requestId, SchemaVersion schemaVersion) { + CommandGetOrCreateSchemaResponse.Builder schemaResponse = + CommandGetOrCreateSchemaResponse.newBuilder() + .setRequestId(requestId) + .setSchemaVersion(ByteString.copyFrom(schemaVersion.bytes())); + ByteBuf res = serializeWithSize(BaseCommand.newBuilder() + .setType(Type.GET_OR_CREATE_SCHEMA_RESPONSE) + .setGetOrCreateSchemaResponse(schemaResponse.build())); + schemaResponse.recycle(); + return res; + } + + public static ByteBuf newGetOrCreateSchemaResponseError(long requestId, ServerError error, String errorMessage) { + CommandGetOrCreateSchemaResponse.Builder schemaResponse = + CommandGetOrCreateSchemaResponse.newBuilder() + .setRequestId(requestId) + .setErrorCode(error) + .setErrorMessage(errorMessage); + ByteBuf res = serializeWithSize(BaseCommand.newBuilder() + .setType(Type.GET_OR_CREATE_SCHEMA_RESPONSE) + .setGetOrCreateSchemaResponse(schemaResponse.build())); + schemaResponse.recycle(); + return res; + } + // ---- transaction related ---- public static ByteBuf newTxn(long requestId, long ttlSeconds) { @@ -1609,4 +1649,8 @@ public static boolean peerSupportsMultiMessageAcknowledgment(int peerVersion) { public static boolean peerSupportJsonSchemaAvroFormat(int peerVersion) { return peerVersion >= ProtocolVersion.v13.getNumber(); } + + public static boolean peerSupportsGetOrCreateSchema(int peerVersion) { + return peerVersion >= ProtocolVersion.v15.getNumber(); + } } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/PulsarDecoder.java b/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/PulsarDecoder.java index 31c40c4353252..f0f44177b7c33 100644 --- a/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/PulsarDecoder.java +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/protocol/PulsarDecoder.java @@ -48,6 +48,8 @@ import org.apache.pulsar.common.api.proto.PulsarApi.CommandEndTxnResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandError; import org.apache.pulsar.common.api.proto.PulsarApi.CommandFlow; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchema; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetOrCreateSchemaResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetSchema; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetSchemaResponse; import org.apache.pulsar.common.api.proto.PulsarApi.CommandGetTopicsOfNamespace; @@ -316,6 +318,18 @@ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception cmd.getGetSchemaResponse().recycle(); break; + case GET_OR_CREATE_SCHEMA: + checkArgument(cmd.hasGetOrCreateSchema()); + handleGetOrCreateSchema(cmd.getGetOrCreateSchema()); + cmd.getGetOrCreateSchema().recycle(); + break; + + case GET_OR_CREATE_SCHEMA_RESPONSE: + checkArgument(cmd.hasGetOrCreateSchemaResponse()); + handleGetOrCreateSchemaResponse(cmd.getGetOrCreateSchemaResponse()); + cmd.getGetOrCreateSchemaResponse().recycle(); + break; + case AUTH_CHALLENGE: checkArgument(cmd.hasAuthChallenge()); handleAuthChallenge(cmd.getAuthChallenge()); @@ -550,6 +564,14 @@ protected void handleGetSchemaResponse(CommandGetSchemaResponse commandGetSchema throw new UnsupportedOperationException(); } + protected void handleGetOrCreateSchema(CommandGetOrCreateSchema commandGetOrCreateSchema) { + throw new UnsupportedOperationException(); + } + + protected void handleGetOrCreateSchemaResponse(CommandGetOrCreateSchemaResponse commandGetOrCreateSchemaResponse) { + throw new UnsupportedOperationException(); + } + protected void handleAuthResponse(CommandAuthResponse commandAuthResponse) { throw new UnsupportedOperationException(); } diff --git a/pulsar-common/src/main/proto/PulsarApi.proto b/pulsar-common/src/main/proto/PulsarApi.proto index 9cb510d0adf75..bf255f0e81a4b 100644 --- a/pulsar-common/src/main/proto/PulsarApi.proto +++ b/pulsar-common/src/main/proto/PulsarApi.proto @@ -199,6 +199,7 @@ enum ProtocolVersion { v13 = 13; // Schema-registry : added avro schema format for json v14 = 14; // Add CommandAuthChallenge and CommandAuthResponse for mutual auth // Added Key_Shared subscription + v15 = 15; // Add CommandGetOrCreateSchema and CommandGetOrCreateSchemaResponse } message CommandConnect { @@ -612,6 +613,20 @@ message CommandGetSchemaResponse { optional bytes schema_version = 5; } +message CommandGetOrCreateSchema { + required uint64 request_id = 1; + required string topic = 2; + required Schema schema = 3; +} + +message CommandGetOrCreateSchemaResponse { + required uint64 request_id = 1; + optional ServerError error_code = 2; + optional string error_message = 3; + + optional bytes schema_version = 4; +} + /// --- transaction related --- enum TxnAction { @@ -774,6 +789,9 @@ message BaseCommand { ACK_RESPONSE = 38; + GET_OR_CREATE_SCHEMA = 39; + GET_OR_CREATE_SCHEMA_RESPONSE = 40; + // transaction related NEW_TXN = 50; NEW_TXN_RESPONSE = 51; @@ -851,6 +869,9 @@ message BaseCommand { optional CommandAckResponse ackResponse = 38; + optional CommandGetOrCreateSchema getOrCreateSchema = 39; + optional CommandGetOrCreateSchemaResponse getOrCreateSchemaResponse = 40; + // transaction related optional CommandNewTxn newTxn = 50; optional CommandNewTxnResponse newTxnResponse = 51;