diff --git a/common/queue/src/main/java/org/thingsboard/server/queue/common/consumer/QueueStateService.java b/common/queue/src/main/java/org/thingsboard/server/queue/common/consumer/QueueStateService.java index 55f248f0d9..c8f68259a8 100644 --- a/common/queue/src/main/java/org/thingsboard/server/queue/common/consumer/QueueStateService.java +++ b/common/queue/src/main/java/org/thingsboard/server/queue/common/consumer/QueueStateService.java @@ -43,6 +43,7 @@ public class QueueStateService { public void update(Set newPartitions) { newPartitions = withTopic(newPartitions, stateConsumer.getTopic()); var writeLock = partitionsLock.writeLock(); + writeLock.lock(); Set oldPartitions = this.partitions != null ? this.partitions : Collections.emptySet(); Set addedPartitions; Set removedPartitions; @@ -64,6 +65,7 @@ public class QueueStateService { if (!addedPartitions.isEmpty()) { stateConsumer.addPartitions(addedPartitions, partition -> { var readLock = partitionsLock.readLock(); + readLock.lock(); try { if (this.partitions.contains(partition)) { eventConsumer.addPartitions(Set.of(partition.newByTopic(eventConsumer.getTopic())));