+ Integer partition = chatRoom.getShard();
+ UUID chatRoomId = chatRoom.getId();
+ ChatRoom existingChatRoom = chatrooms[partition].get(chatRoomId);
+ if (existingChatRoom == null)
+ {
+ log.info(
+ "Creating new chat-room in partition {}: {}",
+ partition,
+ chatRoom);
+ chatrooms[partition].put(chatRoomId, chatRoom);
+ }
+ else
+ {
+ if (chatRoom.getShard() != existingChatRoom.getShard())
+ {
+ throw new IllegalArgumentException(
+ "Could not change the shard of existing chat-room " +
+ chatRoomId + " from " +
+ existingChatRoom.getShard() + " to " +
+ chatRoom.getShard());
+ }
+ else
+ {
+ log.info(
+ "Updating chat-room in partition {}: {} -> {}",
+ partition,
+ existingChatRoom,
+ chatRoom);
+ existingChatRoom.s
+ }
+ }