X-Git-Url: http://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Fkafka%2FDataChannel.java;h=42f17d14b62f1c9d2ffe70788e2affbe9e794a99;hb=132c1d0092fc8377d92a4ded7ef349d858ae92cd;hp=32a57206a061bbaa7c807649bdcb477a22c3c8f7;hpb=900422dccb5a92fbceac34caa5e614b0d7f05ad7;p=demos%2Fkafka%2Fchat diff --git a/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java b/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java index 32a57206..42f17d14 100644 --- a/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java +++ b/src/main/java/de/juplo/kafka/chat/backend/implementation/kafka/DataChannel.java @@ -144,10 +144,6 @@ public class DataChannel implements Channel, ConsumerRebalanceListener isShardOwned[partition] = true; this.currentOffset[partition] = currentOffset; - chatRoomData[partition] - .values() - .forEach(chatRoomData -> chatRoomData.activate()); - log.info( "Partition assigned: {} - loading messages: next={} -> current={}", partition, @@ -223,6 +219,7 @@ public class DataChannel implements Channel, ConsumerRebalanceListener { log.info("Loading of messages completed! Pausing all owned partitions..."); pauseAllOwnedPartions(); + activateAllOwnedChatRooms(); log.info("Resuming normal operations..."); channelState = ChannelState.READY; } @@ -323,6 +320,16 @@ public class DataChannel implements Channel, ConsumerRebalanceListener .toList()); } + private void activateAllOwnedChatRooms() + { + IntStream + .range(0, numShards) + .filter(shard -> isShardOwned[shard]) + .forEach(shard -> chatRoomData[shard] + .values() + .forEach(chatRoomData -> chatRoomData.activate())); + } + int[] getOwnedShards() { @@ -334,10 +341,9 @@ public class DataChannel implements Channel, ConsumerRebalanceListener void createChatRoomData(ChatRoomInfo chatRoomInfo) { - ChatRoomData chatRoomData = computeChatRoomData( + computeChatRoomData( chatRoomInfo.getId(), chatRoomInfo.getShard()); - chatRoomData.activate(); } Mono getChatRoomData(int shard, UUID id)