From df0c5895ce1da53bda7bffe56882d8ea3d87d770 Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Fri, 19 Apr 2019 00:00:34 +0800 Subject: [PATCH 1/9] PIP-34 Key_Shared subscription core implementation. --- .../pulsar/broker/service/Consumer.java | 2 +- .../HashRangeStickyKeyConsumerSelector.java | 109 ++++++++++ .../service/StickyKeyConsumerSelector.java | 43 ++++ ...PersistentDispatcherMultipleConsumers.java | 32 +-- ...tStickyKeyDispatcherMultipleConsumers.java | 159 +++++++++++++++ .../persistent/PersistentSubscription.java | 5 + ...ashRangeStickyKeyConsumerSelectorTest.java | 120 +++++++++++ .../client/api/KeySharedSubscriptionTest.java | 124 ++++++++++++ .../pulsar/client/api/SubscriptionType.java | 11 +- .../client/api/TypedMessageBuilder.java | 9 + .../pulsar/client/impl/ConsumerBase.java | 3 + .../client/impl/TypedMessageBuilderImpl.java | 6 + .../pulsar/common/api/proto/PulsarApi.java | 191 ++++++++++++++++++ pulsar-common/src/main/proto/PulsarApi.proto | 11 +- 14 files changed, 805 insertions(+), 20 deletions(-) create mode 100644 pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java create mode 100644 pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java create mode 100644 pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java create mode 100644 pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java create mode 100644 pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java index ec0ec66f75e53..8934ff4b9368c 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/Consumer.java @@ -145,7 +145,7 @@ public Consumer(Subscription subscription, SubType subType, String topicName, lo stats.setClientVersion(cnx.getClientVersion()); stats.metadata = this.metadata; - if (subType == SubType.Shared) { + if (subType == SubType.Shared || subType == SubType.Key_Shared) { this.pendingAcks = new ConcurrentLongLongPairHashMap(256, 1); } else { // We don't need to keep track of pending acks if the subscription is not shared diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java new file mode 100644 index 0000000000000..4bc00ecf68abb --- /dev/null +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java @@ -0,0 +1,109 @@ +/** + * 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.broker.service; + +import java.util.HashMap; +import java.util.Map; +import java.util.Map.Entry; +import java.util.concurrent.ConcurrentSkipListMap; + +/** + * This is a consumer selector based hash range. + * + * 1.Each consumer serves a fixed range of hash value + * 2.The whole range of hash value could be covered by all the consumers. + * 3.Once a consumer is removed, the left consumers could still serve the whole range. + */ +public class HashRangeStickyKeyConsumerSelector implements StickyKeyConsumerSelector { + + public static final int RANGE_SIZE = 2 << 15; + + private final ConcurrentSkipListMap rangeMap; + private final Map consumerRange; + + public HashRangeStickyKeyConsumerSelector() { + this.rangeMap = new ConcurrentSkipListMap<>(); + this.consumerRange = new HashMap<>(); + } + + @Override + public synchronized void addConsumer(Consumer consumer) { + if (rangeMap.size() == 0) { + rangeMap.put(RANGE_SIZE, consumer); + consumerRange.put(consumer, RANGE_SIZE); + } else { + splitRange(findBiggestRange(), consumer); + } + } + + @Override + public synchronized void removeConsumer(Consumer consumer) { + Integer removeRange = consumerRange.get(consumer); + if (removeRange != null) { + if (removeRange == RANGE_SIZE && rangeMap.size() > 1) { + Consumer lowerConsumer = rangeMap.lowerEntry(removeRange).getValue(); + rangeMap.put(removeRange, lowerConsumer); + consumerRange.put(lowerConsumer, removeRange); + } else { + rangeMap.remove(removeRange); + consumerRange.remove(consumer); + } + } + } + + @Override + public Consumer select(String stickyKey) { + if (rangeMap.size() > 0) { + int slot = Math.abs(stickyKey.hashCode() % RANGE_SIZE); + return rangeMap.ceilingEntry(slot).getValue(); + } else { + return null; + } + } + + private int findBiggestRange() { + int slots = 0; + int busiestRange = RANGE_SIZE; + for (Entry entry : rangeMap.entrySet()) { + Integer lowerKey = rangeMap.lowerKey(entry.getKey()); + if (lowerKey == null) { + lowerKey = 0; + } + if (entry.getKey() - lowerKey > slots) { + slots = entry.getKey() - lowerKey; + busiestRange = entry.getKey(); + } + } + return busiestRange; + } + + private void splitRange(int range, Consumer targetConsumer) { + Integer lowerKey = rangeMap.lowerKey(range); + if (lowerKey == null) { + lowerKey = 0; + } + if (range - lowerKey <= 1) { + throw new RuntimeException("No more range can assigned to new consumer, assigned consumers " + + rangeMap.size()); + } + int splitRange = range - ((range - lowerKey) >> 1); + rangeMap.put(splitRange, targetConsumer); + consumerRange.put(targetConsumer, splitRange); + } +} diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java new file mode 100644 index 0000000000000..8a1b3e12fe996 --- /dev/null +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java @@ -0,0 +1,43 @@ +/** + * 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.broker.service; + +public interface StickyKeyConsumerSelector { + + /** + * Add a new consumer + * @param consumer new consumer + */ + void addConsumer(Consumer consumer); + + /** + * Remove the consumer + * @param consumer consumer to be removed + */ + void removeConsumer(Consumer consumer); + + /** + * Select a consumer by sticky key + * + * @param stickyKey sticky key + * @return consumer + */ + Consumer select(String stickyKey); + +} diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java index 066e2b6bb3d38..b9351c2578a19 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentDispatcherMultipleConsumers.java @@ -65,8 +65,8 @@ */ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMultipleConsumers implements Dispatcher, ReadEntriesCallback { - private final PersistentTopic topic; - private final ManagedCursor cursor; + protected final PersistentTopic topic; + protected final ManagedCursor cursor; private CompletableFuture closeFuture = null; LongPairSet messagesToReplay = new ConcurrentSortedLongPairSet(128, 2); @@ -75,9 +75,9 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMu private boolean havePendingRead = false; private boolean havePendingReplayRead = false; private boolean shouldRewindBeforeReadingOrReplaying = false; - private final String name; + protected final String name; - private int totalAvailablePermits = 0; + protected int totalAvailablePermits = 0; private int readBatchSize; private final Backoff readFailureBackoff = new Backoff(15, TimeUnit.SECONDS, 1, TimeUnit.MINUTES, 0, TimeUnit.MILLISECONDS); private static final AtomicIntegerFieldUpdater TOTAL_UNACKED_MESSAGES_UPDATER = @@ -87,8 +87,8 @@ public class PersistentDispatcherMultipleConsumers extends AbstractDispatcherMu private volatile int blockedDispatcherOnUnackedMsgs = FALSE; private static final AtomicIntegerFieldUpdater BLOCKED_DISPATCHER_ON_UNACKMSG_UPDATER = AtomicIntegerFieldUpdater.newUpdater(PersistentDispatcherMultipleConsumers.class, "blockedDispatcherOnUnackedMsgs"); - private final ServiceConfiguration serviceConfig; - private Optional dispatchRateLimiter = Optional.empty(); + protected final ServiceConfiguration serviceConfig; + protected Optional dispatchRateLimiter = Optional.empty(); enum ReadType { Normal, Replay @@ -374,9 +374,6 @@ public SubType getType() { @Override public synchronized void readEntriesComplete(List entries, Object ctx) { ReadType readType = (ReadType) ctx; - int start = 0; - int entriesToDispatch = entries.size(); - if (readType == ReadType.Normal) { havePendingRead = false; } else { @@ -407,8 +404,17 @@ public synchronized void readEntriesComplete(List entries, Object ctx) { log.debug("[{}] Distributing {} messages to {} consumers", name, entries.size(), consumerList.size()); } + sendMessagesToConsumers(readType, entries); + + readMoreEntries(); + } + + protected void sendMessagesToConsumers(ReadType readType, List entries) { + int start = 0; + int entriesToDispatch = entries.size(); long totalMessagesSent = 0; long totalBytesSent = 0; + while (entriesToDispatch > 0 && totalAvailablePermits > 0 && isAtleastOneConsumerAvailable()) { Consumer c = getNextConsumer(); if (c == null) { @@ -421,8 +427,8 @@ public synchronized void readEntriesComplete(List entries, Object ctx) { // round-robin dispatch batch size for this consumer int messagesForC = Math.min( - Math.min(entriesToDispatch, c.getAvailablePermits()), - serviceConfig.getDispatcherMaxRoundRobinBatchSize()); + Math.min(entriesToDispatch, c.getAvailablePermits()), + serviceConfig.getDispatcherMaxRoundRobinBatchSize()); if (messagesForC > 0) { @@ -465,8 +471,6 @@ public synchronized void readEntriesComplete(List entries, Object ctx) { entry.release(); }); } - - readMoreEntries(); } @Override @@ -531,7 +535,7 @@ public synchronized void readEntriesFailed(ManagedLedgerException exception, Obj * * @return */ - private boolean isAtleastOneConsumerAvailable() { + protected boolean isAtleastOneConsumerAvailable() { if (consumerList.isEmpty() || IS_CLOSED_UPDATER.get(this) == TRUE) { // abort read if no consumers are connected or if disconnect is initiated return false; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java new file mode 100644 index 0000000000000..bc645967cb8ce --- /dev/null +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java @@ -0,0 +1,159 @@ +/** + * 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.broker.service.persistent; + +import io.netty.buffer.ByteBuf; +import org.apache.bookkeeper.mledger.Entry; +import org.apache.bookkeeper.mledger.ManagedCursor; +import org.apache.commons.lang3.StringUtils; +import org.apache.pulsar.broker.service.BrokerServiceException; +import org.apache.pulsar.broker.service.Consumer; +import org.apache.pulsar.broker.service.Consumer.SendMessageInfo; +import org.apache.pulsar.broker.service.HashRangeStickyKeyConsumerSelector; +import org.apache.pulsar.broker.service.StickyKeyConsumerSelector; +import org.apache.pulsar.common.api.Commands; +import org.apache.pulsar.common.api.proto.PulsarApi.CommandSubscribe.SubType; +import org.apache.pulsar.common.api.proto.PulsarApi.MessageMetadata; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDispatcherMultipleConsumers { + + private static final String NONE_KEY = "NONE_KEY"; + + private StickyKeyConsumerSelector selector; + + public PersistentStickyKeyDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor) { + super(topic, cursor); + selector = new HashRangeStickyKeyConsumerSelector(); + } + + @Override + public synchronized void addConsumer(Consumer consumer) throws BrokerServiceException { + super.addConsumer(consumer); + selector.addConsumer(consumer); + } + + @Override + public synchronized void removeConsumer(Consumer consumer) throws BrokerServiceException { + super.removeConsumer(consumer); + selector.removeConsumer(consumer); + } + + @Override + protected void sendMessagesToConsumers(ReadType readType, List entries) { + long totalMessagesSent = 0; + long totalBytesSent = 0; + if (entries.size() > 0) { + final Map> groupedEntries = entries + .stream() + .collect(Collectors.groupingBy(entry -> peekStickyKey(entry.getDataBuffer()), Collectors.toList())); + final Iterator>> iterator = groupedEntries.entrySet().iterator(); + while (iterator.hasNext() && totalAvailablePermits > 0 && isAtleastOneConsumerAvailable()) { + final Map.Entry> entriesWithSameKey = iterator.next(); + final Consumer consumer = selector.select(entriesWithSameKey.getKey()); + + if (consumer == null) { + // Do nothing, cursor will be rewind at reconnection + log.info("[{}] rewind because no available consumer found for key {} from total {}", name, + entriesWithSameKey.getKey(), consumerList.size()); + entriesWithSameKey.getValue().forEach(Entry::release); + cursor.rewind(); + return; + } + + int messagesForC = Math.min(entriesWithSameKey.getValue().size(), consumer.getAvailablePermits()); + if (messagesForC > 0) { + + // remove positions first from replay list first : sendMessages recycles entries + List subList = new ArrayList<>(entriesWithSameKey.getValue().subList(0, messagesForC)); + if (readType == ReadType.Replay) { + subList.forEach(entry -> messagesToReplay.remove(entry.getLedgerId(), entry.getEntryId())); + } + final SendMessageInfo sentMsgInfo = consumer.sendMessages(subList); + entriesWithSameKey.getValue().removeAll(subList); + final long msgSent = sentMsgInfo.getTotalSentMessages(); + totalAvailablePermits -= msgSent; + totalMessagesSent += sentMsgInfo.getTotalSentMessages(); + totalBytesSent += sentMsgInfo.getTotalSentMessageBytes(); + + if (entriesWithSameKey.getValue().size() == 0) { + iterator.remove(); + } + } + } + + // acquire message-dispatch permits for already delivered messages + if (serviceConfig.isDispatchThrottlingOnNonBacklogConsumerEnabled() || !cursor.isActive()) { + if (topic.getDispatchRateLimiter().isPresent()) { + topic.getDispatchRateLimiter().get().tryDispatchPermit(totalMessagesSent, totalBytesSent); + } + + if (dispatchRateLimiter.isPresent()) { + dispatchRateLimiter.get().tryDispatchPermit(totalMessagesSent, totalBytesSent); + } + } + + if (groupedEntries.size() > 0) { + int laterReplay = 0; + for (List entryList : groupedEntries.values()) { + laterReplay += entryList.size(); + entryList.forEach(entry -> { + messagesToReplay.add(entry.getLedgerId(), entry.getEntryId()); + entry.release(); + }); + } + if (log.isDebugEnabled()) { + log.debug("[{}] No consumers found with available permits, storing {} positions for later replay", name, + laterReplay); + } + + } + } + } + + @Override + public SubType getType() { + return SubType.Key_Shared; + } + + private String peekStickyKey(ByteBuf metadataAndPayload) { + metadataAndPayload.markReaderIndex(); + MessageMetadata metadata = Commands.parseMessageMetadata(metadataAndPayload); + metadataAndPayload.resetReaderIndex(); + String key = metadata.getPartitionKey(); + String orderingKey = metadata.getOrderingKey(); + metadata.recycle(); + String keyForOrder = StringUtils.isNotBlank(orderingKey) ? orderingKey : key; + if (StringUtils.isNotBlank(keyForOrder)) { + return keyForOrder; + } else { + return NONE_KEY; + } + } + + private static final Logger log = LoggerFactory.getLogger(PersistentStickyKeyDispatcherMultipleConsumers.class); + +} diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java index 669c6d41d457b..ce9d4aa3e16c8 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentSubscription.java @@ -127,6 +127,11 @@ public synchronized void addConsumer(Consumer consumer) throws BrokerServiceExce topic); } break; + case Key_Shared: + if (dispatcher == null || dispatcher.getType() != SubType.Key_Shared) { + dispatcher = new PersistentStickyKeyDispatcherMultipleConsumers(topic, cursor); + } + break; default: throw new ServerMetadataException("Unsupported subscription type"); } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java new file mode 100644 index 0000000000000..2459427a34668 --- /dev/null +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java @@ -0,0 +1,120 @@ +/** + * 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.broker.service; + +import static org.mockito.Mockito.mock; + +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.UUID; + +public class HashRangeStickyKeyConsumerSelectorTest { + + @Test + public void testConsumerSelect() { + + StickyKeyConsumerSelector selector = new HashRangeStickyKeyConsumerSelector(); + String key1 = "anyKey"; + Assert.assertNull(selector.select(key1)); + + Consumer consumer1 = mock(Consumer.class); + selector.addConsumer(consumer1); + int consumer1Slot = HashRangeStickyKeyConsumerSelector.RANGE_SIZE; + Assert.assertEquals(selector.select(key1), consumer1); + + Consumer consumer2 = mock(Consumer.class); + selector.addConsumer(consumer2); + int consumer2Slot = consumer1Slot >> 1; + + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + if (slot < consumer2Slot) { + Assert.assertEquals(selector.select(key), consumer2); + } else { + Assert.assertEquals(selector.select(key), consumer1); + } + } + + Consumer consumer3 = mock(Consumer.class); + selector.addConsumer(consumer3); + int consumer3Slot = consumer2Slot >> 1; + + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + if (slot < consumer3Slot) { + Assert.assertEquals(selector.select(key), consumer3); + } else if (slot < consumer2Slot) { + Assert.assertEquals(selector.select(key), consumer2); + } else { + Assert.assertEquals(selector.select(key), consumer1); + } + } + + Consumer consumer4 = mock(Consumer.class); + selector.addConsumer(consumer4); + int consumer4Slot = consumer1Slot - ((consumer1Slot - consumer2Slot) >> 1); + + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + if (slot < consumer3Slot) { + Assert.assertEquals(selector.select(key), consumer3); + } else if (slot < consumer2Slot) { + Assert.assertEquals(selector.select(key), consumer2); + } else if (slot < consumer4Slot) { + Assert.assertEquals(selector.select(key), consumer4); + } else { + Assert.assertEquals(selector.select(key), consumer1); + } + } + + selector.removeConsumer(consumer1); + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + if (slot < consumer3Slot) { + Assert.assertEquals(selector.select(key), consumer3); + } else if (slot < consumer2Slot) { + Assert.assertEquals(selector.select(key), consumer2); + } else { + Assert.assertEquals(selector.select(key), consumer4); + } + } + + selector.removeConsumer(consumer2); + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + if (slot < consumer3Slot) { + Assert.assertEquals(selector.select(key), consumer3); + } else { + Assert.assertEquals(selector.select(key), consumer4); + } + } + + selector.removeConsumer(consumer3); + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + Assert.assertEquals(selector.select(key), consumer4); + } + } +} diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java new file mode 100644 index 0000000000000..1a02c35163fa0 --- /dev/null +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java @@ -0,0 +1,124 @@ +/** + * 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.api; + +import org.apache.pulsar.broker.service.HashRangeStickyKeyConsumerSelector; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.testng.Assert; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import java.util.UUID; + +public class KeySharedSubscriptionTest extends ProducerConsumerBase { + + private static final Logger log = LoggerFactory.getLogger(KeySharedSubscriptionTest.class); + + + @BeforeMethod + @Override + protected void setup() throws Exception { + super.internalSetup(); + super.producerBaseSetup(); + } + + @AfterMethod + @Override + protected void cleanup() throws Exception { + super.internalCleanup(); + } + + @Test + public void testSendAndReceiveWithHashRangeStickyKeyConsumerSelector() throws PulsarClientException { + + String topic = "persistent://public/default/key_shared"; + + Consumer consumer1 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .subscribe(); + + Consumer consumer2 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .subscribe(); + + Consumer consumer3 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .subscribe(); + + int consumer1Slot = HashRangeStickyKeyConsumerSelector.RANGE_SIZE; + int consumer2Slot = consumer1Slot >> 1; + int consumer3Slot = consumer2Slot >> 1; + + Producer producer = pulsarClient.newProducer() + .topic(topic) + .enableBatching(false) + .create(); + + int consumer1ExpectMessages = 0; + int consumer2ExpectMessages = 0; + int consumer3ExpectMessages = 0; + + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + if (slot < consumer3Slot) { + consumer3ExpectMessages++; + } else if (slot < consumer2Slot) { + consumer2ExpectMessages++; + } else { + consumer1ExpectMessages++; + } + producer.newMessage() + .key(key) + .value(key.getBytes()) + .send(); + } + + int consumer1Received = 0; + for (int i = 0; i < consumer1ExpectMessages; i++) { + consumer1.receive(); + consumer1Received++; + } + + int consumer2Received = 0; + for (int i = 0; i < consumer2ExpectMessages; i++) { + consumer2.receive(); + consumer2Received++; + } + + int consumer3Received = 0; + for (int i = 0; i < consumer3ExpectMessages; i++) { + consumer3.receive(); + consumer3Received++; + } + Assert.assertEquals(consumer1ExpectMessages, consumer1Received); + Assert.assertEquals(consumer2ExpectMessages, consumer2Received); + Assert.assertEquals(consumer3ExpectMessages, consumer3Received); + } + + +} diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/SubscriptionType.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/SubscriptionType.java index 9d386643ddaef..4098b696b8b5f 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/SubscriptionType.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/SubscriptionType.java @@ -47,5 +47,14 @@ public enum SubscriptionType { * be split across the available consumers. On each partition, at most one consumer will be active at a given point * in time. */ - Failover + Failover, + + /** + * Multiple consumer will be able to use the same subscription and all messages with the same key + * will be dispatched to only one consumer + * + * Use ordering_key to overwrite the message key for message ordering. + * + */ + Key_Shared } \ No newline at end of file diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java index a1e2f2da4f6aa..bc1632fdf50cd 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java @@ -94,6 +94,15 @@ public interface TypedMessageBuilder extends Serializable { */ TypedMessageBuilder key(String key); + /** + * Sets the ordering key of the message for message dispatch in {@link SubscriptionType#Key_Shared} mode. + * Partition key Will be used if ordering key not specified + * + * @param orderingKey the ordering key for the message + * @return the message builder instance + */ + TypedMessageBuilder orderingKey(String orderingKey); + /** * Sets the bytes of the key of the message for routing policy. * Internally the bytes will be base64 encoded. diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBase.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBase.java index 11d75439d0dfd..f5ab15aceb8c2 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBase.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/ConsumerBase.java @@ -316,6 +316,9 @@ protected SubType getSubType() { case Failover: return SubType.Failover; + + case Key_Shared: + return SubType.Key_Shared; } // Should not happen since we cover all cases above diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java index fb18c0ec907eb..2bc521067cf65 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java @@ -68,6 +68,12 @@ public TypedMessageBuilder key(String key) { return this; } + @Override + public TypedMessageBuilder orderingKey(String orderingKey) { + msgMetadataBuilder.setOrderingKey(orderingKey); + return this; + } + @Override public TypedMessageBuilder keyBytes(byte[] key) { msgMetadataBuilder.setPartitionKey(Base64.getEncoder().encodeToString(key)); 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 b2419f1b41c4f..34c5e7a25b5fe 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 @@ -3085,6 +3085,10 @@ public interface MessageMetadataOrBuilder // optional bool partition_key_b64_encoded = 17 [default = false]; boolean hasPartitionKeyB64Encoded(); boolean getPartitionKeyB64Encoded(); + + // optional string ordering_key = 18; + boolean hasOrderingKey(); + String getOrderingKey(); } public static final class MessageMetadata extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite @@ -3395,6 +3399,38 @@ public boolean getPartitionKeyB64Encoded() { return partitionKeyB64Encoded_; } + // optional string ordering_key = 18; + public static final int ORDERING_KEY_FIELD_NUMBER = 18; + private java.lang.Object orderingKey_; + public boolean hasOrderingKey() { + return ((bitField0_ & 0x00002000) == 0x00002000); + } + public String getOrderingKey() { + java.lang.Object ref = orderingKey_; + 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)) { + orderingKey_ = s; + } + return s; + } + } + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKeyBytes() { + java.lang.Object ref = orderingKey_; + 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); + orderingKey_ = b; + return b; + } else { + return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; + } + } + private void initFields() { producerName_ = ""; sequenceId_ = 0L; @@ -3412,6 +3448,7 @@ private void initFields() { encryptionParam_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; schemaVersion_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; partitionKeyB64Encoded_ = false; + orderingKey_ = ""; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -3502,6 +3539,9 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr if (((bitField0_ & 0x00001000) == 0x00001000)) { output.writeBool(17, partitionKeyB64Encoded_); } + if (((bitField0_ & 0x00002000) == 0x00002000)) { + output.writeBytes(18, getOrderingKeyBytes()); + } } private int memoizedSerializedSize = -1; @@ -3579,6 +3619,10 @@ public int getSerializedSize() { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream .computeBoolSize(17, partitionKeyB64Encoded_); } + if (((bitField0_ & 0x00002000) == 0x00002000)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeBytesSize(18, getOrderingKeyBytes()); + } memoizedSerializedSize = size; return size; } @@ -3724,6 +3768,8 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00004000); partitionKeyB64Encoded_ = false; bitField0_ = (bitField0_ & ~0x00008000); + orderingKey_ = ""; + bitField0_ = (bitField0_ & ~0x00010000); return this; } @@ -3825,6 +3871,10 @@ public org.apache.pulsar.common.api.proto.PulsarApi.MessageMetadata buildPartial to_bitField0_ |= 0x00001000; } result.partitionKeyB64Encoded_ = partitionKeyB64Encoded_; + if (((from_bitField0_ & 0x00010000) == 0x00010000)) { + to_bitField0_ |= 0x00002000; + } + result.orderingKey_ = orderingKey_; result.bitField0_ = to_bitField0_; return result; } @@ -3900,6 +3950,9 @@ public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.MessageMet if (other.hasPartitionKeyB64Encoded()) { setPartitionKeyB64Encoded(other.getPartitionKeyB64Encoded()); } + if (other.hasOrderingKey()) { + setOrderingKey(other.getOrderingKey()); + } return this; } @@ -4039,6 +4092,11 @@ public Builder mergeFrom( partitionKeyB64Encoded_ = input.readBool(); break; } + case 146: { + bitField0_ |= 0x00010000; + orderingKey_ = input.readBytes(); + break; + } } } } @@ -4621,6 +4679,42 @@ public Builder clearPartitionKeyB64Encoded() { return this; } + // optional string ordering_key = 18; + private java.lang.Object orderingKey_ = ""; + public boolean hasOrderingKey() { + return ((bitField0_ & 0x00010000) == 0x00010000); + } + public String getOrderingKey() { + java.lang.Object ref = orderingKey_; + if (!(ref instanceof String)) { + String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); + orderingKey_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setOrderingKey(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00010000; + orderingKey_ = value; + + return this; + } + public Builder clearOrderingKey() { + bitField0_ = (bitField0_ & ~0x00010000); + orderingKey_ = getDefaultInstance().getOrderingKey(); + + return this; + } + void setOrderingKey(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { + bitField0_ |= 0x00010000; + orderingKey_ = value; + + } + // @@protoc_insertion_point(builder_scope:pulsar.proto.MessageMetadata) } @@ -4660,6 +4754,10 @@ public interface SingleMessageMetadataOrBuilder // optional bool partition_key_b64_encoded = 6 [default = false]; boolean hasPartitionKeyB64Encoded(); boolean getPartitionKeyB64Encoded(); + + // optional string ordering_key = 7; + boolean hasOrderingKey(); + String getOrderingKey(); } public static final class SingleMessageMetadata extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite @@ -4789,6 +4887,38 @@ public boolean getPartitionKeyB64Encoded() { return partitionKeyB64Encoded_; } + // optional string ordering_key = 7; + public static final int ORDERING_KEY_FIELD_NUMBER = 7; + private java.lang.Object orderingKey_; + public boolean hasOrderingKey() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + public String getOrderingKey() { + java.lang.Object ref = orderingKey_; + 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)) { + orderingKey_ = s; + } + return s; + } + } + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKeyBytes() { + java.lang.Object ref = orderingKey_; + 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); + orderingKey_ = b; + return b; + } else { + return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; + } + } + private void initFields() { properties_ = java.util.Collections.emptyList(); partitionKey_ = ""; @@ -4796,6 +4926,7 @@ private void initFields() { compactedOut_ = false; eventTime_ = 0L; partitionKeyB64Encoded_ = false; + orderingKey_ = ""; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -4842,6 +4973,9 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr if (((bitField0_ & 0x00000010) == 0x00000010)) { output.writeBool(6, partitionKeyB64Encoded_); } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + output.writeBytes(7, getOrderingKeyBytes()); + } } private int memoizedSerializedSize = -1; @@ -4874,6 +5008,10 @@ public int getSerializedSize() { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream .computeBoolSize(6, partitionKeyB64Encoded_); } + if (((bitField0_ & 0x00000020) == 0x00000020)) { + size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream + .computeBytesSize(7, getOrderingKeyBytes()); + } memoizedSerializedSize = size; return size; } @@ -4999,6 +5137,8 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00000010); partitionKeyB64Encoded_ = false; bitField0_ = (bitField0_ & ~0x00000020); + orderingKey_ = ""; + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -5057,6 +5197,10 @@ public org.apache.pulsar.common.api.proto.PulsarApi.SingleMessageMetadata buildP to_bitField0_ |= 0x00000010; } result.partitionKeyB64Encoded_ = partitionKeyB64Encoded_; + if (((from_bitField0_ & 0x00000040) == 0x00000040)) { + to_bitField0_ |= 0x00000020; + } + result.orderingKey_ = orderingKey_; result.bitField0_ = to_bitField0_; return result; } @@ -5088,6 +5232,9 @@ public Builder mergeFrom(org.apache.pulsar.common.api.proto.PulsarApi.SingleMess if (other.hasPartitionKeyB64Encoded()) { setPartitionKeyB64Encoded(other.getPartitionKeyB64Encoded()); } + if (other.hasOrderingKey()) { + setOrderingKey(other.getOrderingKey()); + } return this; } @@ -5158,6 +5305,11 @@ public Builder mergeFrom( partitionKeyB64Encoded_ = input.readBool(); break; } + case 58: { + bitField0_ |= 0x00000040; + orderingKey_ = input.readBytes(); + break; + } } } } @@ -5373,6 +5525,42 @@ public Builder clearPartitionKeyB64Encoded() { return this; } + // optional string ordering_key = 7; + private java.lang.Object orderingKey_ = ""; + public boolean hasOrderingKey() { + return ((bitField0_ & 0x00000040) == 0x00000040); + } + public String getOrderingKey() { + java.lang.Object ref = orderingKey_; + if (!(ref instanceof String)) { + String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); + orderingKey_ = s; + return s; + } else { + return (String) ref; + } + } + public Builder setOrderingKey(String value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000040; + orderingKey_ = value; + + return this; + } + public Builder clearOrderingKey() { + bitField0_ = (bitField0_ & ~0x00000040); + orderingKey_ = getDefaultInstance().getOrderingKey(); + + return this; + } + void setOrderingKey(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { + bitField0_ |= 0x00000040; + orderingKey_ = value; + + } + // @@protoc_insertion_point(builder_scope:pulsar.proto.SingleMessageMetadata) } @@ -8331,11 +8519,13 @@ public enum SubType Exclusive(0, 0), Shared(1, 1), Failover(2, 2), + Key_Shared(3, 3), ; public static final int Exclusive_VALUE = 0; public static final int Shared_VALUE = 1; public static final int Failover_VALUE = 2; + public static final int Key_Shared_VALUE = 3; public final int getNumber() { return value; } @@ -8345,6 +8535,7 @@ public static SubType valueOf(int value) { case 0: return Exclusive; case 1: return Shared; case 2: return Failover; + case 3: return Key_Shared; default: return null; } } diff --git a/pulsar-common/src/main/proto/PulsarApi.proto b/pulsar-common/src/main/proto/PulsarApi.proto index c3e9fa2af342b..16f94361a493b 100644 --- a/pulsar-common/src/main/proto/PulsarApi.proto +++ b/pulsar-common/src/main/proto/PulsarApi.proto @@ -110,8 +110,9 @@ message MessageMetadata { // Additional parameters required by encryption optional bytes encryption_param = 15; optional bytes schema_version = 16; - - optional bool partition_key_b64_encoded = 17 [ default = false ]; + optional bool partition_key_b64_encoded = 17 [ default = false ]; + // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. + optional string ordering_key = 18; } @@ -124,8 +125,9 @@ message SingleMessageMetadata { // the timestamp that this event occurs. it is typically set by applications. // if this field is omitted, `publish_time` can be used for the purpose of `event_time`. optional uint64 event_time = 5 [default = 0]; - - optional bool partition_key_b64_encoded = 6 [ default = false ]; + optional bool partition_key_b64_encoded = 6 [ default = false ]; + // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. + optional string ordering_key = 7; } enum ServerError { @@ -234,6 +236,7 @@ message CommandSubscribe { Exclusive = 0; Shared = 1; Failover = 2; + Key_Shared = 3; } required string topic = 1; required string subscription = 2; From 77142fc593456936940ca5b0ce00d61337e5e202 Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Fri, 19 Apr 2019 10:33:29 +0800 Subject: [PATCH 2/9] PIP-34 Add more unit test. 1.test redelivery with Key_Shared subscription 2.test none key dispatch with Key_Shared subscription 3.test ordering key dispatch with Key_Shared subscription --- .../service/BrokerServiceException.java | 9 + .../HashRangeStickyKeyConsumerSelector.java | 38 +++- .../service/StickyKeyConsumerSelector.java | 4 +- ...tStickyKeyDispatcherMultipleConsumers.java | 8 +- ...ashRangeStickyKeyConsumerSelectorTest.java | 34 ++- .../client/api/KeySharedSubscriptionTest.java | 207 +++++++++++++++++- .../pulsar/common/api/proto/PulsarApi.java | 3 + pulsar-common/src/main/proto/PulsarApi.proto | 1 + 8 files changed, 282 insertions(+), 22 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java index d037edf711fd0..c3f6909702427 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerServiceException.java @@ -20,6 +20,7 @@ import org.apache.pulsar.broker.service.schema.IncompatibleSchemaException; import org.apache.pulsar.common.api.proto.PulsarApi; +import org.apache.pulsar.common.api.proto.PulsarApi.ServerError; /** * Base type of exception thrown by Pulsar Broker Service @@ -146,6 +147,12 @@ public AlreadyRunningException(String msg) { } } + public static class ConsumerAssignException extends BrokerServiceException { + public ConsumerAssignException(String msg) { + super(msg); + } + } + public static PulsarApi.ServerError getClientErrorCode(Throwable t) { if (t instanceof ServerMetadataException) { return PulsarApi.ServerError.MetadataError; @@ -166,6 +173,8 @@ public static PulsarApi.ServerError getClientErrorCode(Throwable t) { return PulsarApi.ServerError.ServiceNotReady; } else if (t instanceof IncompatibleSchemaException) { return PulsarApi.ServerError.IncompatibleSchema; + } else if (t instanceof ConsumerAssignException) { + return ServerError.ConsumerAssignError; } else { return PulsarApi.ServerError.UnknownError; } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java index 4bc00ecf68abb..c764663decf95 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.broker.service; +import org.apache.pulsar.broker.service.BrokerServiceException.ConsumerAssignException; + import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; @@ -32,21 +34,34 @@ */ public class HashRangeStickyKeyConsumerSelector implements StickyKeyConsumerSelector { - public static final int RANGE_SIZE = 2 << 15; + public static final int DEFAULT_RANGE_SIZE = 2 << 15; + + private final int rangeSize; private final ConcurrentSkipListMap rangeMap; private final Map consumerRange; public HashRangeStickyKeyConsumerSelector() { + this(DEFAULT_RANGE_SIZE); + } + + public HashRangeStickyKeyConsumerSelector(int rangeSize) { + if (rangeSize < 2) { + throw new IllegalArgumentException("range size must greater than 2"); + } + if (!is2Power(rangeSize)) { + throw new IllegalArgumentException("range size must be nth power with 2"); + } this.rangeMap = new ConcurrentSkipListMap<>(); this.consumerRange = new HashMap<>(); + this.rangeSize = rangeSize; } @Override - public synchronized void addConsumer(Consumer consumer) { + public synchronized void addConsumer(Consumer consumer) throws ConsumerAssignException { if (rangeMap.size() == 0) { - rangeMap.put(RANGE_SIZE, consumer); - consumerRange.put(consumer, RANGE_SIZE); + rangeMap.put(rangeSize, consumer); + consumerRange.put(consumer, rangeSize); } else { splitRange(findBiggestRange(), consumer); } @@ -56,7 +71,7 @@ public synchronized void addConsumer(Consumer consumer) { public synchronized void removeConsumer(Consumer consumer) { Integer removeRange = consumerRange.get(consumer); if (removeRange != null) { - if (removeRange == RANGE_SIZE && rangeMap.size() > 1) { + if (removeRange == rangeSize && rangeMap.size() > 1) { Consumer lowerConsumer = rangeMap.lowerEntry(removeRange).getValue(); rangeMap.put(removeRange, lowerConsumer); consumerRange.put(lowerConsumer, removeRange); @@ -70,7 +85,7 @@ public synchronized void removeConsumer(Consumer consumer) { @Override public Consumer select(String stickyKey) { if (rangeMap.size() > 0) { - int slot = Math.abs(stickyKey.hashCode() % RANGE_SIZE); + int slot = Math.abs(stickyKey.hashCode() % rangeSize); return rangeMap.ceilingEntry(slot).getValue(); } else { return null; @@ -79,7 +94,7 @@ public Consumer select(String stickyKey) { private int findBiggestRange() { int slots = 0; - int busiestRange = RANGE_SIZE; + int busiestRange = rangeSize; for (Entry entry : rangeMap.entrySet()) { Integer lowerKey = rangeMap.lowerKey(entry.getKey()); if (lowerKey == null) { @@ -93,17 +108,22 @@ private int findBiggestRange() { return busiestRange; } - private void splitRange(int range, Consumer targetConsumer) { + private void splitRange(int range, Consumer targetConsumer) throws ConsumerAssignException { Integer lowerKey = rangeMap.lowerKey(range); if (lowerKey == null) { lowerKey = 0; } if (range - lowerKey <= 1) { - throw new RuntimeException("No more range can assigned to new consumer, assigned consumers " + throw new ConsumerAssignException("No more range can assigned to new consumer, assigned consumers " + rangeMap.size()); } int splitRange = range - ((range - lowerKey) >> 1); rangeMap.put(splitRange, targetConsumer); consumerRange.put(targetConsumer, splitRange); } + + private boolean is2Power(int num) { + if(num < 2) return false; + return (num & num - 1) == 0; + } } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java index 8a1b3e12fe996..6eeec2596580b 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java @@ -18,13 +18,15 @@ */ package org.apache.pulsar.broker.service; +import org.apache.pulsar.broker.service.BrokerServiceException.ConsumerAssignException; + public interface StickyKeyConsumerSelector { /** * Add a new consumer * @param consumer new consumer */ - void addConsumer(Consumer consumer); + void addConsumer(Consumer consumer) throws ConsumerAssignException; /** * Remove the consumer diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java index bc645967cb8ce..52249d613e3f6 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java @@ -41,12 +41,13 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDispatcherMultipleConsumers { - private static final String NONE_KEY = "NONE_KEY"; + public static final String NONE_KEY = "NONE_KEY"; - private StickyKeyConsumerSelector selector; + private final StickyKeyConsumerSelector selector; - public PersistentStickyKeyDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor) { + PersistentStickyKeyDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor) { super(topic, cursor); + //todo Consumer selector Pluggable selector = new HashRangeStickyKeyConsumerSelector(); } @@ -73,6 +74,7 @@ protected void sendMessagesToConsumers(ReadType readType, List entries) { final Iterator>> iterator = groupedEntries.entrySet().iterator(); while (iterator.hasNext() && totalAvailablePermits > 0 && isAtleastOneConsumerAvailable()) { final Map.Entry> entriesWithSameKey = iterator.next(); + //todo None key policy final Consumer consumer = selector.select(entriesWithSameKey.getKey()); if (consumer == null) { diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java index 2459427a34668..3f70640dbd4e9 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java @@ -18,8 +18,10 @@ */ package org.apache.pulsar.broker.service; +import static org.apache.pulsar.broker.service.HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; import static org.mockito.Mockito.mock; +import org.apache.pulsar.broker.service.BrokerServiceException.ConsumerAssignException; import org.testng.Assert; import org.testng.annotations.Test; @@ -28,7 +30,7 @@ public class HashRangeStickyKeyConsumerSelectorTest { @Test - public void testConsumerSelect() { + public void testConsumerSelect() throws ConsumerAssignException { StickyKeyConsumerSelector selector = new HashRangeStickyKeyConsumerSelector(); String key1 = "anyKey"; @@ -36,7 +38,7 @@ public void testConsumerSelect() { Consumer consumer1 = mock(Consumer.class); selector.addConsumer(consumer1); - int consumer1Slot = HashRangeStickyKeyConsumerSelector.RANGE_SIZE; + int consumer1Slot = DEFAULT_RANGE_SIZE; Assert.assertEquals(selector.select(key1), consumer1); Consumer consumer2 = mock(Consumer.class); @@ -45,7 +47,7 @@ public void testConsumerSelect() { for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); if (slot < consumer2Slot) { Assert.assertEquals(selector.select(key), consumer2); } else { @@ -59,7 +61,7 @@ public void testConsumerSelect() { for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); if (slot < consumer3Slot) { Assert.assertEquals(selector.select(key), consumer3); } else if (slot < consumer2Slot) { @@ -75,7 +77,7 @@ public void testConsumerSelect() { for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); if (slot < consumer3Slot) { Assert.assertEquals(selector.select(key), consumer3); } else if (slot < consumer2Slot) { @@ -90,7 +92,7 @@ public void testConsumerSelect() { selector.removeConsumer(consumer1); for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); if (slot < consumer3Slot) { Assert.assertEquals(selector.select(key), consumer3); } else if (slot < consumer2Slot) { @@ -103,7 +105,7 @@ public void testConsumerSelect() { selector.removeConsumer(consumer2); for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); if (slot < consumer3Slot) { Assert.assertEquals(selector.select(key), consumer3); } else { @@ -117,4 +119,22 @@ public void testConsumerSelect() { Assert.assertEquals(selector.select(key), consumer4); } } + + @Test(expectedExceptions = ConsumerAssignException.class) + public void testSplitExceed() throws ConsumerAssignException { + StickyKeyConsumerSelector selector = new HashRangeStickyKeyConsumerSelector(16); + for (int i = 0; i <= 16; i++) { + selector.addConsumer(mock(Consumer.class)); + } + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void testRangeSizeLessThan2() { + new HashRangeStickyKeyConsumerSelector(1); + } + + @Test(expectedExceptions = IllegalArgumentException.class) + public void testRangeSizePower2() { + new HashRangeStickyKeyConsumerSelector(6); + } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java index 1a02c35163fa0..3f2da6b143fa3 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java @@ -19,6 +19,7 @@ package org.apache.pulsar.client.api; import org.apache.pulsar.broker.service.HashRangeStickyKeyConsumerSelector; +import org.apache.pulsar.broker.service.persistent.PersistentStickyKeyDispatcherMultipleConsumers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; @@ -27,6 +28,7 @@ import org.testng.annotations.Test; import java.util.UUID; +import java.util.concurrent.TimeUnit; public class KeySharedSubscriptionTest extends ProducerConsumerBase { @@ -55,21 +57,24 @@ public void testSendAndReceiveWithHashRangeStickyKeyConsumerSelector() throws Pu .topic(topic) .subscriptionName("key_shared") .subscriptionType(SubscriptionType.Key_Shared) + .ackTimeout(10, TimeUnit.SECONDS) .subscribe(); Consumer consumer2 = pulsarClient.newConsumer() .topic(topic) .subscriptionName("key_shared") .subscriptionType(SubscriptionType.Key_Shared) + .ackTimeout(10, TimeUnit.SECONDS) .subscribe(); Consumer consumer3 = pulsarClient.newConsumer() .topic(topic) .subscriptionName("key_shared") .subscriptionType(SubscriptionType.Key_Shared) + .ackTimeout(10, TimeUnit.SECONDS) .subscribe(); - int consumer1Slot = HashRangeStickyKeyConsumerSelector.RANGE_SIZE; + int consumer1Slot = HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; int consumer2Slot = consumer1Slot >> 1; int consumer3Slot = consumer2Slot >> 1; @@ -84,7 +89,7 @@ public void testSendAndReceiveWithHashRangeStickyKeyConsumerSelector() throws Pu for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.RANGE_SIZE); + int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE); if (slot < consumer3Slot) { consumer3ExpectMessages++; } else if (slot < consumer2Slot) { @@ -118,7 +123,205 @@ public void testSendAndReceiveWithHashRangeStickyKeyConsumerSelector() throws Pu Assert.assertEquals(consumer1ExpectMessages, consumer1Received); Assert.assertEquals(consumer2ExpectMessages, consumer2Received); Assert.assertEquals(consumer3ExpectMessages, consumer3Received); + + // messages not acked, test redelivery + + for (int i = 0; i < consumer1ExpectMessages; i++) { + Message message = consumer1.receive(); + consumer1.acknowledge(message); + consumer1Received++; + } + + for (int i = 0; i < consumer2ExpectMessages; i++) { + Message message = consumer2.receive(); + consumer2.acknowledge(message); + consumer2Received++; + } + + for (int i = 0; i < consumer3ExpectMessages; i++) { + Message message = consumer3.receive(); + consumer3.acknowledge(message); + consumer3Received++; + } + + Assert.assertEquals(consumer1ExpectMessages * 2, consumer1Received); + Assert.assertEquals(consumer2ExpectMessages * 2, consumer2Received); + Assert.assertEquals(consumer3ExpectMessages * 2, consumer3Received); } + @Test + public void testNonKeySendAndReceiveWithHashRangeStickyKeyConsumerSelector() throws PulsarClientException { + + String topic = "persistent://public/default/key_shared_none_key"; + + Consumer consumer1 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .subscribe(); + + Consumer consumer2 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .subscribe(); + + Consumer consumer3 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .subscribe(); + + int consumer1Slot = HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; + int consumer2Slot = consumer1Slot >> 1; + int consumer3Slot = consumer2Slot >> 1; + + Producer producer = pulsarClient.newProducer() + .topic(topic) + .enableBatching(false) + .create(); + + for (int i = 0; i < 100; i++) { + producer.newMessage() + .value(("Message - " + i).getBytes()) + .send(); + } + + int expectMessages = 100; + int receiveMessages = 0; + int slot = Math.abs(PersistentStickyKeyDispatcherMultipleConsumers.NONE_KEY.hashCode() + % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE); + if (slot < consumer3Slot) { + for (int i = 0; i < expectMessages; i++) { + Message message = consumer3.receive(); + consumer3.acknowledge(message); + receiveMessages++; + } + } else if (slot < consumer2Slot) { + for (int i = 0; i < expectMessages; i++) { + Message message = consumer2.receive(); + consumer2.acknowledge(message); + receiveMessages++; + } + } else { + for (int i = 0; i < expectMessages; i++) { + Message message = consumer1.receive(); + consumer1.acknowledge(message); + receiveMessages++; + } + } + Assert.assertEquals(expectMessages, receiveMessages); + + Producer batchingProducer = pulsarClient.newProducer() + .topic(topic) + .enableBatching(true) + .create(); + for (int i = 0; i < 100; i++) { + batchingProducer.newMessage() + .value(("Message - " + i).getBytes()) + .send(); + } + + if (slot < consumer3Slot) { + for (int i = 0; i < expectMessages; i++) { + Message message = consumer3.receive(); + consumer3.acknowledge(message); + receiveMessages++; + } + } else if (slot < consumer2Slot) { + for (int i = 0; i < expectMessages; i++) { + Message message = consumer2.receive(); + consumer2.acknowledge(message); + receiveMessages++; + } + } else { + for (int i = 0; i < expectMessages; i++) { + Message message = consumer1.receive(); + consumer1.acknowledge(message); + receiveMessages++; + } + } + + Assert.assertEquals(expectMessages * 2, receiveMessages); + + } + + @Test + public void testOrderingKeyWithHashRangeStickyKeyConsumerSelector() throws PulsarClientException { + String topic = "persistent://public/default/key_shared_ordering_key"; + + Consumer consumer1 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .ackTimeout(10, TimeUnit.SECONDS) + .subscribe(); + + Consumer consumer2 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .ackTimeout(10, TimeUnit.SECONDS) + .subscribe(); + + Consumer consumer3 = pulsarClient.newConsumer() + .topic(topic) + .subscriptionName("key_shared") + .subscriptionType(SubscriptionType.Key_Shared) + .ackTimeout(10, TimeUnit.SECONDS) + .subscribe(); + + int consumer1Slot = HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; + int consumer2Slot = consumer1Slot >> 1; + int consumer3Slot = consumer2Slot >> 1; + + Producer producer = pulsarClient.newProducer() + .topic(topic) + .enableBatching(false) + .create(); + + int consumer1ExpectMessages = 0; + int consumer2ExpectMessages = 0; + int consumer3ExpectMessages = 0; + + for (int i = 0; i < 100; i++) { + String key = UUID.randomUUID().toString(); + String orderingKey = UUID.randomUUID().toString(); + int slot = Math.abs(orderingKey.hashCode() % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE); + if (slot < consumer3Slot) { + consumer3ExpectMessages++; + } else if (slot < consumer2Slot) { + consumer2ExpectMessages++; + } else { + consumer1ExpectMessages++; + } + producer.newMessage() + .key(key) + .orderingKey(orderingKey) + .value(key.getBytes()) + .send(); + } + + int consumer1Received = 0; + for (int i = 0; i < consumer1ExpectMessages; i++) { + consumer1.receive(); + consumer1Received++; + } + + int consumer2Received = 0; + for (int i = 0; i < consumer2ExpectMessages; i++) { + consumer2.receive(); + consumer2Received++; + } + + int consumer3Received = 0; + for (int i = 0; i < consumer3ExpectMessages; i++) { + consumer3.receive(); + consumer3Received++; + } + Assert.assertEquals(consumer1ExpectMessages, consumer1Received); + Assert.assertEquals(consumer2ExpectMessages, consumer2Received); + Assert.assertEquals(consumer3ExpectMessages, consumer3Received); + } } 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 34c5e7a25b5fe..c1884ef61ed8b 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 @@ -76,6 +76,7 @@ public enum ServerError ProducerBusy(16, 16), InvalidTopicName(17, 17), IncompatibleSchema(18, 18), + ConsumerAssignError(19, 19), ; public static final int UnknownError_VALUE = 0; @@ -97,6 +98,7 @@ public enum ServerError public static final int ProducerBusy_VALUE = 16; public static final int InvalidTopicName_VALUE = 17; public static final int IncompatibleSchema_VALUE = 18; + public static final int ConsumerAssignError_VALUE = 19; public final int getNumber() { return value; } @@ -122,6 +124,7 @@ public static ServerError valueOf(int value) { case 16: return ProducerBusy; case 17: return InvalidTopicName; case 18: return IncompatibleSchema; + case 19: return ConsumerAssignError; default: return null; } } diff --git a/pulsar-common/src/main/proto/PulsarApi.proto b/pulsar-common/src/main/proto/PulsarApi.proto index 16f94361a493b..cecbc32034b5e 100644 --- a/pulsar-common/src/main/proto/PulsarApi.proto +++ b/pulsar-common/src/main/proto/PulsarApi.proto @@ -154,6 +154,7 @@ enum ServerError { InvalidTopicName = 17; // The topic name is not valid IncompatibleSchema = 18; // Specified schema was incompatible with topic schema + ConsumerAssignError = 19; // Dispatcher assign consumer error } enum AuthMethod { From 181696e3617454ae1b150e9de52d8683ebb2bca7 Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Fri, 19 Apr 2019 10:45:18 +0800 Subject: [PATCH 3/9] PIP-34 Fix alignment issue of Pulsar.proto --- pulsar-common/src/main/proto/PulsarApi.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pulsar-common/src/main/proto/PulsarApi.proto b/pulsar-common/src/main/proto/PulsarApi.proto index cecbc32034b5e..3470d83eed35e 100644 --- a/pulsar-common/src/main/proto/PulsarApi.proto +++ b/pulsar-common/src/main/proto/PulsarApi.proto @@ -110,7 +110,7 @@ message MessageMetadata { // Additional parameters required by encryption optional bytes encryption_param = 15; optional bytes schema_version = 16; - optional bool partition_key_b64_encoded = 17 [ default = false ]; + optional bool partition_key_b64_encoded = 17 [ default = false ]; // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. optional string ordering_key = 18; } @@ -125,7 +125,7 @@ message SingleMessageMetadata { // the timestamp that this event occurs. it is typically set by applications. // if this field is omitted, `publish_time` can be used for the purpose of `event_time`. optional uint64 event_time = 5 [default = 0]; - optional bool partition_key_b64_encoded = 6 [ default = false ]; + optional bool partition_key_b64_encoded = 6 [ default = false ]; // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. optional string ordering_key = 7; } From 625e359735765d958948a00fb72ce74864180c5d Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Fri, 19 Apr 2019 10:47:20 +0800 Subject: [PATCH 4/9] PIP-34 Fix alignment issue of Pulsar.proto --- pulsar-common/src/main/proto/PulsarApi.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pulsar-common/src/main/proto/PulsarApi.proto b/pulsar-common/src/main/proto/PulsarApi.proto index 3470d83eed35e..b3eea5f60f51d 100644 --- a/pulsar-common/src/main/proto/PulsarApi.proto +++ b/pulsar-common/src/main/proto/PulsarApi.proto @@ -127,7 +127,7 @@ message SingleMessageMetadata { optional uint64 event_time = 5 [default = 0]; optional bool partition_key_b64_encoded = 6 [ default = false ]; // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. - optional string ordering_key = 7; + optional string ordering_key = 7; } enum ServerError { From 7fe81b61f3c6bca4184969209603f1820259f5f0 Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Fri, 19 Apr 2019 10:57:29 +0800 Subject: [PATCH 5/9] PIP-34 Fix TODO: format --- .../PersistentStickyKeyDispatcherMultipleConsumers.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java index 52249d613e3f6..d4baa95c65214 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java @@ -47,7 +47,7 @@ public class PersistentStickyKeyDispatcherMultipleConsumers extends PersistentDi PersistentStickyKeyDispatcherMultipleConsumers(PersistentTopic topic, ManagedCursor cursor) { super(topic, cursor); - //todo Consumer selector Pluggable + //TODO: Consumer selector Pluggable selector = new HashRangeStickyKeyConsumerSelector(); } @@ -74,7 +74,7 @@ protected void sendMessagesToConsumers(ReadType readType, List entries) { final Iterator>> iterator = groupedEntries.entrySet().iterator(); while (iterator.hasNext() && totalAvailablePermits > 0 && isAtleastOneConsumerAvailable()) { final Map.Entry> entriesWithSameKey = iterator.next(); - //todo None key policy + //TODO: None key policy final Consumer consumer = selector.select(entriesWithSameKey.getKey()); if (consumer == null) { From 4fdce72c5eccf5f540f6a3be71c1e2fd9c5343ec Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Fri, 19 Apr 2019 20:17:43 +0800 Subject: [PATCH 6/9] PIP-34 Fix hash and ordering key issues --- .../HashRangeStickyKeyConsumerSelector.java | 26 +++- .../service/StickyKeyConsumerSelector.java | 2 +- ...tStickyKeyDispatcherMultipleConsumers.java | 16 +-- ...ashRangeStickyKeyConsumerSelectorTest.java | 45 +++--- .../client/api/KeySharedSubscriptionTest.java | 13 +- .../org/apache/pulsar/client/api/Message.java | 15 ++ .../client/api/TypedMessageBuilder.java | 16 +-- .../org/apache/pulsar/client/impl/Hash.java | 3 +- .../pulsar/client/impl/JavaStringHash.java | 8 ++ .../pulsar/client/impl/MessageImpl.java | 12 ++ .../pulsar/client/impl/Murmur3_32Hash.java | 67 +-------- .../pulsar/client/impl/TopicMessageImpl.java | 10 ++ .../client/impl/TypedMessageBuilderImpl.java | 11 +- .../pulsar/common/api/proto/PulsarApi.java | 128 ++++-------------- .../org/apache/pulsar/common/util/Hash.java | 29 ++++ .../pulsar/common/util/Murmur3_32Hash.java | 101 ++++++++++++++ pulsar-common/src/main/proto/PulsarApi.proto | 5 +- 17 files changed, 291 insertions(+), 216 deletions(-) create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/util/Hash.java create mode 100644 pulsar-common/src/main/java/org/apache/pulsar/common/util/Murmur3_32Hash.java diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java index c764663decf95..c0dfa79ae0ea7 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelector.java @@ -19,6 +19,7 @@ package org.apache.pulsar.broker.service; import org.apache.pulsar.broker.service.BrokerServiceException.ConsumerAssignException; +import org.apache.pulsar.common.util.Murmur3_32Hash; import java.util.HashMap; import java.util.Map; @@ -26,11 +27,30 @@ import java.util.concurrent.ConcurrentSkipListMap; /** - * This is a consumer selector based hash range. + * This is a consumer selector based fixed hash range. * * 1.Each consumer serves a fixed range of hash value * 2.The whole range of hash value could be covered by all the consumers. * 3.Once a consumer is removed, the left consumers could still serve the whole range. + * + * Initializing with a fixed hash range, by default 2 << 5. + * First consumer added, hash range looks like: + * + * 0 -> 65536(consumer-1) + * + * Second consumer added, will find a biggest range to split: + * + * 0 -> 32768(consumer-2) -> 65536(consumer-1) + * + * While a consumer removed, The range for this consumer will be taken over + * by other consumer, consumer-2 removed: + * + * 0 -> 65536(consumer-1) + * + * In this approach use skip list map to maintain the hash range and consumers. + * + * Select consumer will return the ceiling key of message key hashcode % range size. + * */ public class HashRangeStickyKeyConsumerSelector implements StickyKeyConsumerSelector { @@ -83,9 +103,9 @@ public synchronized void removeConsumer(Consumer consumer) { } @Override - public Consumer select(String stickyKey) { + public Consumer select(byte[] stickyKey) { if (rangeMap.size() > 0) { - int slot = Math.abs(stickyKey.hashCode() % rangeSize); + int slot = Murmur3_32Hash.getInstance().makeHash(stickyKey) % rangeSize; return rangeMap.ceilingEntry(slot).getValue(); } else { return null; diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java index 6eeec2596580b..ce8ef86bf1831 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/StickyKeyConsumerSelector.java @@ -40,6 +40,6 @@ public interface StickyKeyConsumerSelector { * @param stickyKey sticky key * @return consumer */ - Consumer select(String stickyKey); + Consumer select(byte[] stickyKey); } diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java index d4baa95c65214..eaa3d1d79765a 100644 --- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java +++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentStickyKeyDispatcherMultipleConsumers.java @@ -68,12 +68,12 @@ protected void sendMessagesToConsumers(ReadType readType, List entries) { long totalMessagesSent = 0; long totalBytesSent = 0; if (entries.size() > 0) { - final Map> groupedEntries = entries + final Map> groupedEntries = entries .stream() .collect(Collectors.groupingBy(entry -> peekStickyKey(entry.getDataBuffer()), Collectors.toList())); - final Iterator>> iterator = groupedEntries.entrySet().iterator(); + final Iterator>> iterator = groupedEntries.entrySet().iterator(); while (iterator.hasNext() && totalAvailablePermits > 0 && isAtleastOneConsumerAvailable()) { - final Map.Entry> entriesWithSameKey = iterator.next(); + final Map.Entry> entriesWithSameKey = iterator.next(); //TODO: None key policy final Consumer consumer = selector.select(entriesWithSameKey.getKey()); @@ -141,18 +141,16 @@ public SubType getType() { return SubType.Key_Shared; } - private String peekStickyKey(ByteBuf metadataAndPayload) { + private byte[] peekStickyKey(ByteBuf metadataAndPayload) { metadataAndPayload.markReaderIndex(); MessageMetadata metadata = Commands.parseMessageMetadata(metadataAndPayload); metadataAndPayload.resetReaderIndex(); String key = metadata.getPartitionKey(); - String orderingKey = metadata.getOrderingKey(); metadata.recycle(); - String keyForOrder = StringUtils.isNotBlank(orderingKey) ? orderingKey : key; - if (StringUtils.isNotBlank(keyForOrder)) { - return keyForOrder; + if (StringUtils.isNotBlank(key) || metadata.hasOrderingKey()) { + return metadata.hasOrderingKey() ? metadata.getOrderingKey().toByteArray() : key.getBytes(); } else { - return NONE_KEY; + return NONE_KEY.getBytes(); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java index 3f70640dbd4e9..ff67c2036aeef 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/broker/service/HashRangeStickyKeyConsumerSelectorTest.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.mock; import org.apache.pulsar.broker.service.BrokerServiceException.ConsumerAssignException; +import org.apache.pulsar.common.util.Murmur3_32Hash; import org.testng.Assert; import org.testng.annotations.Test; @@ -34,12 +35,12 @@ public void testConsumerSelect() throws ConsumerAssignException { StickyKeyConsumerSelector selector = new HashRangeStickyKeyConsumerSelector(); String key1 = "anyKey"; - Assert.assertNull(selector.select(key1)); + Assert.assertNull(selector.select(key1.getBytes())); Consumer consumer1 = mock(Consumer.class); selector.addConsumer(consumer1); int consumer1Slot = DEFAULT_RANGE_SIZE; - Assert.assertEquals(selector.select(key1), consumer1); + Assert.assertEquals(selector.select(key1.getBytes()), consumer1); Consumer consumer2 = mock(Consumer.class); selector.addConsumer(consumer2); @@ -47,11 +48,11 @@ public void testConsumerSelect() throws ConsumerAssignException { for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(key.getBytes()) % DEFAULT_RANGE_SIZE; if (slot < consumer2Slot) { - Assert.assertEquals(selector.select(key), consumer2); + Assert.assertEquals(selector.select(key.getBytes()), consumer2); } else { - Assert.assertEquals(selector.select(key), consumer1); + Assert.assertEquals(selector.select(key.getBytes()), consumer1); } } @@ -61,13 +62,13 @@ public void testConsumerSelect() throws ConsumerAssignException { for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(key.getBytes()) % DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { - Assert.assertEquals(selector.select(key), consumer3); + Assert.assertEquals(selector.select(key.getBytes()), consumer3); } else if (slot < consumer2Slot) { - Assert.assertEquals(selector.select(key), consumer2); + Assert.assertEquals(selector.select(key.getBytes()), consumer2); } else { - Assert.assertEquals(selector.select(key), consumer1); + Assert.assertEquals(selector.select(key.getBytes()), consumer1); } } @@ -77,46 +78,46 @@ public void testConsumerSelect() throws ConsumerAssignException { for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(key.getBytes()) % DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { - Assert.assertEquals(selector.select(key), consumer3); + Assert.assertEquals(selector.select(key.getBytes()), consumer3); } else if (slot < consumer2Slot) { - Assert.assertEquals(selector.select(key), consumer2); + Assert.assertEquals(selector.select(key.getBytes()), consumer2); } else if (slot < consumer4Slot) { - Assert.assertEquals(selector.select(key), consumer4); + Assert.assertEquals(selector.select(key.getBytes()), consumer4); } else { - Assert.assertEquals(selector.select(key), consumer1); + Assert.assertEquals(selector.select(key.getBytes()), consumer1); } } selector.removeConsumer(consumer1); for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(key.getBytes()) % DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { - Assert.assertEquals(selector.select(key), consumer3); + Assert.assertEquals(selector.select(key.getBytes()), consumer3); } else if (slot < consumer2Slot) { - Assert.assertEquals(selector.select(key), consumer2); + Assert.assertEquals(selector.select(key.getBytes()), consumer2); } else { - Assert.assertEquals(selector.select(key), consumer4); + Assert.assertEquals(selector.select(key.getBytes()), consumer4); } } selector.removeConsumer(consumer2); for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(key.getBytes()) % DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { - Assert.assertEquals(selector.select(key), consumer3); + Assert.assertEquals(selector.select(key.getBytes()), consumer3); } else { - Assert.assertEquals(selector.select(key), consumer4); + Assert.assertEquals(selector.select(key.getBytes()), consumer4); } } selector.removeConsumer(consumer3); for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - Assert.assertEquals(selector.select(key), consumer4); + Assert.assertEquals(selector.select(key.getBytes()), consumer4); } } diff --git a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java index 3f2da6b143fa3..e5f1edc058ad7 100644 --- a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java +++ b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/KeySharedSubscriptionTest.java @@ -20,6 +20,7 @@ import org.apache.pulsar.broker.service.HashRangeStickyKeyConsumerSelector; import org.apache.pulsar.broker.service.persistent.PersistentStickyKeyDispatcherMultipleConsumers; +import org.apache.pulsar.common.util.Murmur3_32Hash; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert; @@ -89,7 +90,8 @@ public void testSendAndReceiveWithHashRangeStickyKeyConsumerSelector() throws Pu for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); - int slot = Math.abs(key.hashCode() % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(key.getBytes()) + % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { consumer3ExpectMessages++; } else if (slot < consumer2Slot) { @@ -189,8 +191,8 @@ public void testNonKeySendAndReceiveWithHashRangeStickyKeyConsumerSelector() thr int expectMessages = 100; int receiveMessages = 0; - int slot = Math.abs(PersistentStickyKeyDispatcherMultipleConsumers.NONE_KEY.hashCode() - % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(PersistentStickyKeyDispatcherMultipleConsumers.NONE_KEY.getBytes()) + % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { for (int i = 0; i < expectMessages; i++) { Message message = consumer3.receive(); @@ -288,7 +290,8 @@ public void testOrderingKeyWithHashRangeStickyKeyConsumerSelector() throws Pulsa for (int i = 0; i < 100; i++) { String key = UUID.randomUUID().toString(); String orderingKey = UUID.randomUUID().toString(); - int slot = Math.abs(orderingKey.hashCode() % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE); + int slot = Murmur3_32Hash.getInstance().makeHash(orderingKey.getBytes()) + % HashRangeStickyKeyConsumerSelector.DEFAULT_RANGE_SIZE; if (slot < consumer3Slot) { consumer3ExpectMessages++; } else if (slot < consumer2Slot) { @@ -298,7 +301,7 @@ public void testOrderingKeyWithHashRangeStickyKeyConsumerSelector() throws Pulsa } producer.newMessage() .key(key) - .orderingKey(orderingKey) + .orderingKey(orderingKey.getBytes()) .value(key.getBytes()) .send(); } diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Message.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Message.java index e672ab0c2d819..e1929167d4268 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Message.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/Message.java @@ -154,6 +154,21 @@ public interface Message { */ byte[] getKeyBytes(); + /** + * Check whether the message has a ordering key + * + * @return true if the ordering key was set while creating the message + * false if the ordering key was not set while creating the message + */ + boolean hasOrderingKey(); + + /** + * Get the ordering key of the message + * + * @return the ordering key of the message + */ + byte[] getOrderingKey(); + /** * Get the topic the message was published to * diff --git a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java index bc1632fdf50cd..824a9678fb1b7 100644 --- a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java +++ b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/TypedMessageBuilder.java @@ -95,22 +95,22 @@ public interface TypedMessageBuilder extends Serializable { TypedMessageBuilder key(String key); /** - * Sets the ordering key of the message for message dispatch in {@link SubscriptionType#Key_Shared} mode. - * Partition key Will be used if ordering key not specified + * Sets the bytes of the key of the message for routing policy. + * Internally the bytes will be base64 encoded. * - * @param orderingKey the ordering key for the message + * @param key routing key for message, in byte array form * @return the message builder instance */ - TypedMessageBuilder orderingKey(String orderingKey); + TypedMessageBuilder keyBytes(byte[] key); /** - * Sets the bytes of the key of the message for routing policy. - * Internally the bytes will be base64 encoded. + * Sets the ordering key of the message for message dispatch in {@link SubscriptionType#Key_Shared} mode. + * Partition key Will be used if ordering key not specified * - * @param key routing key for message, in byte array form + * @param orderingKey the ordering key for the message * @return the message builder instance */ - TypedMessageBuilder keyBytes(byte[] key); + TypedMessageBuilder orderingKey(byte[] orderingKey); /** * Set a domain object on the message diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Hash.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Hash.java index 31c771a83f12f..1b1e4a713182b 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Hash.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Hash.java @@ -18,7 +18,8 @@ */ package org.apache.pulsar.client.impl; -public interface Hash { +public interface Hash extends org.apache.pulsar.common.util.Hash { + /** * Generate the hash of a given String * diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/JavaStringHash.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/JavaStringHash.java index 2f6fc28dc4637..e005baeb23278 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/JavaStringHash.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/JavaStringHash.java @@ -18,6 +18,8 @@ */ package org.apache.pulsar.client.impl; +import static java.nio.charset.StandardCharsets.UTF_8; + public class JavaStringHash implements Hash { private static final JavaStringHash instance = new JavaStringHash(); @@ -31,4 +33,10 @@ public static Hash getInstance() { public int makeHash(String s) { return s.hashCode() & Integer.MAX_VALUE; } + + @Override + public int makeHash(byte[] b) { + return makeHash(new String(b, UTF_8)); + } + } 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 30e1474b54319..6a38abbabe0b6 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 @@ -335,6 +335,18 @@ public byte[] getKeyBytes() { } } + @Override + public boolean hasOrderingKey() { + checkNotNull(msgMetadataBuilder); + return msgMetadataBuilder.hasOrderingKey(); + } + + @Override + public byte[] getOrderingKey() { + checkNotNull(msgMetadataBuilder); + return msgMetadataBuilder.getOrderingKey().toByteArray(); + } + public ClientCnx getCnx() { return cnx; } diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Murmur3_32Hash.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Murmur3_32Hash.java index 80552da0fa566..05952fb84e856 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Murmur3_32Hash.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/Murmur3_32Hash.java @@ -23,80 +23,23 @@ */ package org.apache.pulsar.client.impl; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; -import com.google.common.primitives.UnsignedBytes; - public class Murmur3_32Hash implements Hash { private static final Murmur3_32Hash instance = new Murmur3_32Hash(); - private static final int CHUNK_SIZE = 4; - private static final int C1 = 0xcc9e2d51; - private static final int C2 = 0x1b873593; - private final int seed; - - private Murmur3_32Hash() { - seed = 0; - } - public static Hash getInstance() { return instance; } @Override public int makeHash(String s) { - return makeHash(s.getBytes(StandardCharsets.UTF_8)) & Integer.MAX_VALUE; - } - - private int makeHash(byte[] bytes) { - int len = bytes.length; - int reminder = len % CHUNK_SIZE; - int h1 = seed; - - ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); - byteBuffer.order(ByteOrder.LITTLE_ENDIAN); - - while (byteBuffer.remaining() >= CHUNK_SIZE) { - int k1 = byteBuffer.getInt(); - - k1 = mixK1(k1); - h1 = mixH1(h1, k1); - } - - int k1 = 0; - for (int i = 0; i < reminder; i++) { - k1 ^= UnsignedBytes.toInt(byteBuffer.get()) << (i * 8); - } - - h1 ^= mixK1(k1); - h1 ^= len; - h1 = fmix(h1); - - return h1; + return org.apache.pulsar.common.util.Murmur3_32Hash.getInstance() + .makeHash(s.getBytes(StandardCharsets.UTF_8)) & Integer.MAX_VALUE; } - private int fmix(int h) { - h ^= h >>> 16; - h *= 0x85ebca6b; - h ^= h >>> 13; - h *= 0xc2b2ae35; - h ^= h >>> 16; - - return h; - } - - private int mixK1(int k1) { - k1 *= C1; - k1 = Integer.rotateLeft(k1, 15); - k1 *= C2; - return k1; - } - - private int mixH1(int h1, int k1) { - h1 ^= k1; - h1 = Integer.rotateLeft(h1, 13); - return h1 * 5 + 0xe6546b64; + @Override + public int makeHash(byte[] b) { + return org.apache.pulsar.common.util.Murmur3_32Hash.getInstance().makeHash(b) & Integer.MAX_VALUE; } } diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TopicMessageImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TopicMessageImpl.java index fff104dc2e94f..723875cf9253a 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TopicMessageImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TopicMessageImpl.java @@ -128,6 +128,16 @@ public byte[] getKeyBytes() { return msg.getKeyBytes(); } + @Override + public boolean hasOrderingKey() { + return msg.hasOrderingKey(); + } + + @Override + public byte[] getOrderingKey() { + return msg.getOrderingKey(); + } + @Override public T getValue() { return msg.getValue(); diff --git a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java index 2bc521067cf65..9ac887ebe4dcf 100644 --- a/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java +++ b/pulsar-client/src/main/java/org/apache/pulsar/client/impl/TypedMessageBuilderImpl.java @@ -36,6 +36,7 @@ import org.apache.pulsar.client.api.TypedMessageBuilder; import org.apache.pulsar.common.api.proto.PulsarApi.KeyValue; import org.apache.pulsar.common.api.proto.PulsarApi.MessageMetadata; +import org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString; public class TypedMessageBuilderImpl implements TypedMessageBuilder { private static final ByteBuffer EMPTY_CONTENT = ByteBuffer.allocate(0); @@ -69,15 +70,15 @@ public TypedMessageBuilder key(String key) { } @Override - public TypedMessageBuilder orderingKey(String orderingKey) { - msgMetadataBuilder.setOrderingKey(orderingKey); + public TypedMessageBuilder keyBytes(byte[] key) { + msgMetadataBuilder.setPartitionKey(Base64.getEncoder().encodeToString(key)); + msgMetadataBuilder.setPartitionKeyB64Encoded(true); return this; } @Override - public TypedMessageBuilder keyBytes(byte[] key) { - msgMetadataBuilder.setPartitionKey(Base64.getEncoder().encodeToString(key)); - msgMetadataBuilder.setPartitionKeyB64Encoded(true); + public TypedMessageBuilder orderingKey(byte[] orderingKey) { + msgMetadataBuilder.setOrderingKey(ByteString.copyFrom(orderingKey)); return this; } 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 c1884ef61ed8b..053ad197a4255 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 @@ -3089,9 +3089,9 @@ public interface MessageMetadataOrBuilder boolean hasPartitionKeyB64Encoded(); boolean getPartitionKeyB64Encoded(); - // optional string ordering_key = 18; + // optional bytes ordering_key = 18; boolean hasOrderingKey(); - String getOrderingKey(); + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKey(); } public static final class MessageMetadata extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite @@ -3402,36 +3402,14 @@ public boolean getPartitionKeyB64Encoded() { return partitionKeyB64Encoded_; } - // optional string ordering_key = 18; + // optional bytes ordering_key = 18; public static final int ORDERING_KEY_FIELD_NUMBER = 18; - private java.lang.Object orderingKey_; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString orderingKey_; public boolean hasOrderingKey() { return ((bitField0_ & 0x00002000) == 0x00002000); } - public String getOrderingKey() { - java.lang.Object ref = orderingKey_; - 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)) { - orderingKey_ = s; - } - return s; - } - } - private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKeyBytes() { - java.lang.Object ref = orderingKey_; - 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); - orderingKey_ = b; - return b; - } else { - return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; - } + public org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKey() { + return orderingKey_; } private void initFields() { @@ -3451,7 +3429,7 @@ private void initFields() { encryptionParam_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; schemaVersion_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; partitionKeyB64Encoded_ = false; - orderingKey_ = ""; + orderingKey_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -3543,7 +3521,7 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr output.writeBool(17, partitionKeyB64Encoded_); } if (((bitField0_ & 0x00002000) == 0x00002000)) { - output.writeBytes(18, getOrderingKeyBytes()); + output.writeBytes(18, orderingKey_); } } @@ -3624,7 +3602,7 @@ public int getSerializedSize() { } if (((bitField0_ & 0x00002000) == 0x00002000)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeBytesSize(18, getOrderingKeyBytes()); + .computeBytesSize(18, orderingKey_); } memoizedSerializedSize = size; return size; @@ -3771,7 +3749,7 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00004000); partitionKeyB64Encoded_ = false; bitField0_ = (bitField0_ & ~0x00008000); - orderingKey_ = ""; + orderingKey_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00010000); return this; } @@ -4682,22 +4660,15 @@ public Builder clearPartitionKeyB64Encoded() { return this; } - // optional string ordering_key = 18; - private java.lang.Object orderingKey_ = ""; + // optional bytes ordering_key = 18; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString orderingKey_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; public boolean hasOrderingKey() { return ((bitField0_ & 0x00010000) == 0x00010000); } - public String getOrderingKey() { - java.lang.Object ref = orderingKey_; - if (!(ref instanceof String)) { - String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); - orderingKey_ = s; - return s; - } else { - return (String) ref; - } + public org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKey() { + return orderingKey_; } - public Builder setOrderingKey(String value) { + public Builder setOrderingKey(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { if (value == null) { throw new NullPointerException(); } @@ -4712,11 +4683,6 @@ public Builder clearOrderingKey() { return this; } - void setOrderingKey(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { - bitField0_ |= 0x00010000; - orderingKey_ = value; - - } // @@protoc_insertion_point(builder_scope:pulsar.proto.MessageMetadata) } @@ -4758,9 +4724,9 @@ public interface SingleMessageMetadataOrBuilder boolean hasPartitionKeyB64Encoded(); boolean getPartitionKeyB64Encoded(); - // optional string ordering_key = 7; + // optional bytes ordering_key = 7; boolean hasOrderingKey(); - String getOrderingKey(); + org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKey(); } public static final class SingleMessageMetadata extends org.apache.pulsar.shaded.com.google.protobuf.v241.GeneratedMessageLite @@ -4890,36 +4856,14 @@ public boolean getPartitionKeyB64Encoded() { return partitionKeyB64Encoded_; } - // optional string ordering_key = 7; + // optional bytes ordering_key = 7; public static final int ORDERING_KEY_FIELD_NUMBER = 7; - private java.lang.Object orderingKey_; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString orderingKey_; public boolean hasOrderingKey() { return ((bitField0_ & 0x00000020) == 0x00000020); } - public String getOrderingKey() { - java.lang.Object ref = orderingKey_; - 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)) { - orderingKey_ = s; - } - return s; - } - } - private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKeyBytes() { - java.lang.Object ref = orderingKey_; - 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); - orderingKey_ = b; - return b; - } else { - return (org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref; - } + public org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKey() { + return orderingKey_; } private void initFields() { @@ -4929,7 +4873,7 @@ private void initFields() { compactedOut_ = false; eventTime_ = 0L; partitionKeyB64Encoded_ = false; - orderingKey_ = ""; + orderingKey_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -4977,7 +4921,7 @@ public void writeTo(org.apache.pulsar.common.util.protobuf.ByteBufCodedOutputStr output.writeBool(6, partitionKeyB64Encoded_); } if (((bitField0_ & 0x00000020) == 0x00000020)) { - output.writeBytes(7, getOrderingKeyBytes()); + output.writeBytes(7, orderingKey_); } } @@ -5013,7 +4957,7 @@ public int getSerializedSize() { } if (((bitField0_ & 0x00000020) == 0x00000020)) { size += org.apache.pulsar.shaded.com.google.protobuf.v241.CodedOutputStream - .computeBytesSize(7, getOrderingKeyBytes()); + .computeBytesSize(7, orderingKey_); } memoizedSerializedSize = size; return size; @@ -5140,7 +5084,7 @@ public Builder clear() { bitField0_ = (bitField0_ & ~0x00000010); partitionKeyB64Encoded_ = false; bitField0_ = (bitField0_ & ~0x00000020); - orderingKey_ = ""; + orderingKey_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -5528,22 +5472,15 @@ public Builder clearPartitionKeyB64Encoded() { return this; } - // optional string ordering_key = 7; - private java.lang.Object orderingKey_ = ""; + // optional bytes ordering_key = 7; + private org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString orderingKey_ = org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString.EMPTY; public boolean hasOrderingKey() { return ((bitField0_ & 0x00000040) == 0x00000040); } - public String getOrderingKey() { - java.lang.Object ref = orderingKey_; - if (!(ref instanceof String)) { - String s = ((org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString) ref).toStringUtf8(); - orderingKey_ = s; - return s; - } else { - return (String) ref; - } + public org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString getOrderingKey() { + return orderingKey_; } - public Builder setOrderingKey(String value) { + public Builder setOrderingKey(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { if (value == null) { throw new NullPointerException(); } @@ -5558,11 +5495,6 @@ public Builder clearOrderingKey() { return this; } - void setOrderingKey(org.apache.pulsar.shaded.com.google.protobuf.v241.ByteString value) { - bitField0_ |= 0x00000040; - orderingKey_ = value; - - } // @@protoc_insertion_point(builder_scope:pulsar.proto.SingleMessageMetadata) } diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/Hash.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/Hash.java new file mode 100644 index 0000000000000..ac7d0b08640ab --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/Hash.java @@ -0,0 +1,29 @@ +/** + * 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.common.util; + +public interface Hash { + + /** + * Generate the hash of a given byte array + * + * @return The hash of {@param b}, which is non-negative integer. + */ + int makeHash(byte[] b); +} diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/util/Murmur3_32Hash.java b/pulsar-common/src/main/java/org/apache/pulsar/common/util/Murmur3_32Hash.java new file mode 100644 index 0000000000000..dd0c5ab68fcfb --- /dev/null +++ b/pulsar-common/src/main/java/org/apache/pulsar/common/util/Murmur3_32Hash.java @@ -0,0 +1,101 @@ +/** + * 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. + */ +/* + * The original MurmurHash3 was written by Austin Appleby, and is placed in the + * public domain. This source code, implemented by Licht Takeuchi, is based on + * the orignal MurmurHash3 source code. + */ +package org.apache.pulsar.common.util; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; + +import com.google.common.primitives.UnsignedBytes; + +public class Murmur3_32Hash implements Hash { + private static final Murmur3_32Hash instance = new Murmur3_32Hash(); + + private static final int CHUNK_SIZE = 4; + private static final int C1 = 0xcc9e2d51; + private static final int C2 = 0x1b873593; + private final int seed; + + private Murmur3_32Hash() { + seed = 0; + } + + public static Hash getInstance() { + return instance; + } + + @Override + public int makeHash(byte[] b) { + return makeHash0(b) & Integer.MAX_VALUE; + } + + private int makeHash0(byte[] bytes) { + int len = bytes.length; + int reminder = len % CHUNK_SIZE; + int h1 = seed; + + ByteBuffer byteBuffer = ByteBuffer.wrap(bytes); + byteBuffer.order(ByteOrder.LITTLE_ENDIAN); + + while (byteBuffer.remaining() >= CHUNK_SIZE) { + int k1 = byteBuffer.getInt(); + + k1 = mixK1(k1); + h1 = mixH1(h1, k1); + } + + int k1 = 0; + for (int i = 0; i < reminder; i++) { + k1 ^= UnsignedBytes.toInt(byteBuffer.get()) << (i * 8); + } + + h1 ^= mixK1(k1); + h1 ^= len; + h1 = fmix(h1); + + return h1; + } + + private int fmix(int h) { + h ^= h >>> 16; + h *= 0x85ebca6b; + h ^= h >>> 13; + h *= 0xc2b2ae35; + h ^= h >>> 16; + + return h; + } + + private int mixK1(int k1) { + k1 *= C1; + k1 = Integer.rotateLeft(k1, 15); + k1 *= C2; + return k1; + } + + private int mixH1(int h1, int k1) { + h1 ^= k1; + h1 = Integer.rotateLeft(h1, 13); + return h1 * 5 + 0xe6546b64; + } +} diff --git a/pulsar-common/src/main/proto/PulsarApi.proto b/pulsar-common/src/main/proto/PulsarApi.proto index b3eea5f60f51d..d73e60190a316 100644 --- a/pulsar-common/src/main/proto/PulsarApi.proto +++ b/pulsar-common/src/main/proto/PulsarApi.proto @@ -112,7 +112,7 @@ message MessageMetadata { optional bytes schema_version = 16; optional bool partition_key_b64_encoded = 17 [ default = false ]; // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. - optional string ordering_key = 18; + optional bytes ordering_key = 18; } @@ -127,7 +127,7 @@ message SingleMessageMetadata { optional uint64 event_time = 5 [default = 0]; optional bool partition_key_b64_encoded = 6 [ default = false ]; // Specific a key to overwrite the message key which used for ordering dispatch in Key_Shared mode. - optional string ordering_key = 7; + optional bytes ordering_key = 7; } enum ServerError { @@ -183,6 +183,7 @@ enum ProtocolVersion { // Added CommandGetTopicsOfNamespace v13 = 13; // Schema-registry : added avro schema format for json v14 = 14; // Add CommandAuthChallenge and CommandAuthResponse for mutual auth + // Added Key_Shared subscription } message CommandConnect { From 30889321fcecfa89d39705db642f7dfcc1a02466 Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Sat, 20 Apr 2019 14:55:47 +0800 Subject: [PATCH 7/9] PIP-34 documentation for Key_Shared subscription --- .../pulsar-key-shared-subscriptions.png | Bin 0 -> 124310 bytes .../docs/assets/pulsar-subscription-modes.png | Bin 66178 -> 220423 bytes site2/docs/concepts-messaging.md | 23 +++++++++++++----- 3 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 site2/docs/assets/pulsar-key-shared-subscriptions.png diff --git a/site2/docs/assets/pulsar-key-shared-subscriptions.png b/site2/docs/assets/pulsar-key-shared-subscriptions.png new file mode 100644 index 0000000000000000000000000000000000000000..db02e0fd4d4f2e69bbd55c33c3d16d0f44cf3e43 GIT binary patch literal 124310 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
    w96 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%0DGG+RmfL)rS0)Ve|LRo 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 QNd@#@E7L973=#DJg9A`Fg& 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 literal 0 HcmV?d00001 diff --git a/site2/docs/assets/pulsar-subscription-modes.png b/site2/docs/assets/pulsar-subscription-modes.png index e8e618b80a03b2015dbfbe53ad3d6e603598a979..1412fd75dec894e692594f840f5133c8acc9dc2e 100644 GIT binary patch literal 220423 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Ð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%0A4`}Rg$L&UvEHmn0xgKh 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 WA>)qkbTh&N{v^a??q`bVy!=03DYu0H literal 66178 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
    a;OD>2`dFd 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 z #### Limitations of Key_Shared mode +> There are two important things to be aware of when using Key_Shared mode: +> * You need to specify a key or orderingKey for messages +> * You cannot use cumulative acknowledgment with Key_Shared mode. -![Failover subscriptions](assets/pulsar-failover-subscriptions.png) +![Key_Shared subscriptions](assets/pulsar-key-shared-subscriptions.png) ## Multi-topic subscriptions From 92f561f20b9b3df5a0f521a15ff4d6ff9adb4a89 Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Sat, 20 Apr 2019 17:28:51 +0800 Subject: [PATCH 8/9] PIP-34 Fix cpp test issue. --- pulsar-client-cpp/include/pulsar/Result.h | 1 + pulsar-client-cpp/lib/ClientConnection.cc | 3 +++ pulsar-client-cpp/lib/Result.cc | 3 +++ 3 files changed, 7 insertions(+) diff --git a/pulsar-client-cpp/include/pulsar/Result.h b/pulsar-client-cpp/include/pulsar/Result.h index a4bc3b316fee2..fa9594de87280 100644 --- a/pulsar-client-cpp/include/pulsar/Result.h +++ b/pulsar-client-cpp/include/pulsar/Result.h @@ -77,6 +77,7 @@ enum Result ResultCryptoError, /// Error when crypto operation fails ResultIncompatibleSchema, /// Specified schema is incompatible with the topic's schema + ResultConsumerAssignError, /// Error when a new consumer connected but can't assign messages to this consumer }; // Return string representation of result code diff --git a/pulsar-client-cpp/lib/ClientConnection.cc b/pulsar-client-cpp/lib/ClientConnection.cc index e16aa5c7e1d61..086bfa8e2af38 100644 --- a/pulsar-client-cpp/lib/ClientConnection.cc +++ b/pulsar-client-cpp/lib/ClientConnection.cc @@ -108,6 +108,9 @@ static Result getResult(ServerError serverError) { case IncompatibleSchema: return ResultIncompatibleSchema; + + case ConsumerAssignError: + return ResultConsumerAssignError; } // NOTE : Do not add default case in the switch above. In future if we get new cases for // ServerError and miss them in the switch above we would like to get notified. Adding diff --git a/pulsar-client-cpp/lib/Result.cc b/pulsar-client-cpp/lib/Result.cc index ff66bf6317762..536232a64d833 100644 --- a/pulsar-client-cpp/lib/Result.cc +++ b/pulsar-client-cpp/lib/Result.cc @@ -131,6 +131,9 @@ const char* pulsar::strResult(Result result) { case ResultIncompatibleSchema: return "IncompatibleSchema"; + + case ResultConsumerAssignError: + return "ResultConsumerAssignError"; }; // NOTE : Do not add default case in the switch above. In future if we get new cases for // ServerError and miss them in the switch above we would like to get notified. Adding From 0f74d9d2c3856bf50cfe6bed9354feda453ba76e Mon Sep 17 00:00:00 2001 From: Li Penghui Date: Mon, 22 Apr 2019 10:06:33 +0800 Subject: [PATCH 9/9] PIP-34 Fix cpp format issue. --- pulsar-client-cpp/include/pulsar/Result.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pulsar-client-cpp/include/pulsar/Result.h b/pulsar-client-cpp/include/pulsar/Result.h index fa9594de87280..fa24d5cf90b01 100644 --- a/pulsar-client-cpp/include/pulsar/Result.h +++ b/pulsar-client-cpp/include/pulsar/Result.h @@ -76,8 +76,9 @@ enum Result ResultTopicTerminated, /// Topic was already terminated ResultCryptoError, /// Error when crypto operation fails - ResultIncompatibleSchema, /// Specified schema is incompatible with the topic's schema - ResultConsumerAssignError, /// Error when a new consumer connected but can't assign messages to this consumer + ResultIncompatibleSchema, /// Specified schema is incompatible with the topic's schema + ResultConsumerAssignError, /// Error when a new consumer connected but can't assign messages to this + /// consumer }; // Return string representation of result code