Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce Multi Member Routing Mode [API-2241][API-2238] (3/4) #902

Merged
merged 51 commits into from
Jul 25, 2024

Conversation

emreyigit
Copy link
Collaborator

@emreyigit emreyigit commented Jun 28, 2024

Implemented new MultiMember routing functionality and refactored the smart routing and unisocket to AllMembers and SingleMember.

A note for reviewers: Although I've completed implementation including CP routing, I've created separated PR for Cp part. You may see some basic CP stuff in this PR but most part is in next PR #907

emreyigit added 14 commits June 21, 2024 15:44
…p-client into API-2239

# Conflicts:
#	src/Hazelcast.Net.Tests/Clustering/FailoverTests2.cs
#	src/Hazelcast.Net.Tests/Clustering/MemberConnectionTests.cs
#	src/Hazelcast.Net.Tests/Clustering/SubscriptionCollectTests.cs
#	src/Hazelcast.Net.Tests/Networking/NetworkingTests.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicLongAddAndGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicLongCompareAndSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicLongGetAndAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicLongGetAndSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicLongGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicRefCompareAndSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicRefContainsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicRefGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/AtomicRefSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPGroupCreateCPGroupCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPGroupDestroyCPObjectCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPMapCompareAndSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPMapDeleteCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPMapGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPMapPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPMapRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPMapSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPSessionCloseSessionCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPSessionCreateSessionCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPSessionGenerateThreadIdCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CPSessionHeartbeatSessionCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientAddClusterViewListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientAddDistributedObjectListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientAddPartitionLostListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientAuthenticationCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientAuthenticationCustomCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientCreateProxiesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientCreateProxyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientDeployClassesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientDestroyProxyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientFetchSchemaCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientGetDistributedObjectsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientLocalBackupListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientPingCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientRemoveDistributedObjectListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientRemovePartitionLostListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientSendAllSchemasCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientSendSchemaCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientStatisticsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ClientTriggerPartitionAssignmentCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CountDownLatchAwaitCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CountDownLatchCountDownCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CountDownLatchGetCountCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CountDownLatchGetRoundCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/CountDownLatchTrySetCountCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddCacheConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddCardinalityEstimatorConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddDataConnectionConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddDurableExecutorConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddExecutorConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddFlakeIdGeneratorConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddListConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddMapConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddMultiMapConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddPNCounterConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddReliableTopicConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddReplicatedMapConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddRingbufferConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddScheduledExecutorConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddSetConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/DynamicConfigAddTopicConfigCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ExperimentalPipelineSubmitCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/FencedLockGetLockOwnershipCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/FencedLockLockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/FencedLockTryLockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/FencedLockUnlockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/FlakeIdGeneratorNewIdBatchCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListAddAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListAddAllWithIndexCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListAddListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListAddWithIndexCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListClearCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListCompareAndRemoveAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListCompareAndRetainAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListContainsAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListContainsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListGetAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListIndexOfCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListIsEmptyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListIteratorCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListLastIndexOfCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListListIteratorCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListRemoveListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListRemoveWithIndexCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ListSubCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddEntryListenerToKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddEntryListenerToKeyWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddEntryListenerWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddIndexCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddInterceptorCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddNearCacheInvalidationListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAddPartitionLostListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAggregateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapAggregateWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapClearCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapContainsKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapContainsValueCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapDeleteCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEntriesWithPagingPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEntriesWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEntrySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEventJournalReadCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEventJournalSubscribeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEvictAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapEvictCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapExecuteOnAllKeysCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapExecuteOnKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapExecuteOnKeysCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapExecuteWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapFetchEntriesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapFetchKeysCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapFetchNearCacheInvalidationMetadataCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapFetchWithQueryCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapFlushCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapForceUnlockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapGetAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapGetEntryViewCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapIsEmptyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapIsLockedCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapKeySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapKeySetWithPagingPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapKeySetWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapLoadAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapLoadGivenKeysCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapLockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapProjectCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapProjectWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutIfAbsentCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutIfAbsentWithMaxIdleCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutTransientCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutTransientWithMaxIdleCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapPutWithMaxIdleCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapRemoveAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapRemoveEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapRemoveIfSameCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapRemoveInterceptorCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapRemovePartitionLostListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapReplaceCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapReplaceIfSameCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapSetTtlCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapSetWithMaxIdleCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapSubmitToKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapTryLockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapTryPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapTryRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapUnlockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapValuesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapValuesWithPagingPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MapValuesWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapAddEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapAddEntryListenerToKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapClearCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapContainsEntryCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapContainsKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapContainsValueCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapDeleteCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapEntrySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapForceUnlockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapIsLockedCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapKeySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapLockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapRemoveEntryCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapRemoveEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapTryLockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapUnlockCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapValueCountCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/MultiMapValuesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/PNCounterAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/PNCounterGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/PNCounterGetConfiguredReplicaCountCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueAddAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueAddListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueClearCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueCompareAndRemoveAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueCompareAndRetainAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueContainsAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueContainsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueDrainToCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueDrainToMaxSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueIsEmptyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueIteratorCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueOfferCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueuePeekCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueuePollCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueuePutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueRemainingCapacityCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueRemoveListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/QueueTakeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapAddEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapAddEntryListenerToKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapAddEntryListenerToKeyWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapAddEntryListenerWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapAddNearCacheEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapClearCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapContainsKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapContainsValueCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapEntrySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapIsEmptyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapKeySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapPutAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapRemoveEntryListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/ReplicatedMapValuesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferAddAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferCapacityCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferHeadSequenceCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferReadManyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferReadOneCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferRemainingCapacityCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/RingbufferTailSequenceCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreAcquireCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreAvailablePermitsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreChangeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreDrainCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreGetSemaphoreTypeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreInitCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SemaphoreReleaseCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetAddAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetAddListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetClearCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetCompareAndRemoveAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetCompareAndRetainAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetContainsAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetContainsCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetGetAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetIsEmptyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetRemoveListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SetSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SqlCloseCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SqlExecuteCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/SqlFetchCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TopicAddMessageListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TopicPublishAllCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TopicPublishCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TopicRemoveMessageListenerCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionCommitCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionCreateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionRollbackCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalListAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalListRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalListSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapContainsKeyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapContainsValueCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapDeleteCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapGetForUpdateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapIsEmptyCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapKeySetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapKeySetWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapPutIfAbsentCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapRemoveIfSameCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapReplaceCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapReplaceIfSameCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapSetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapValuesCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMapValuesWithPredicateCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMultiMapGetCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMultiMapPutCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMultiMapRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMultiMapRemoveEntryCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMultiMapSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalMultiMapValueCountCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalQueueOfferCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalQueuePeekCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalQueuePollCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalQueueSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalQueueTakeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalSetAddCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalSetRemoveCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/TransactionalSetSizeCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/VectorCollectionDeleteCodec.cs
#	src/Hazelcast.Net/Protocol/Codecs/VectorCollectionOptimizeCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/AddressCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/AnchorDataListHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/AttributeConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/BTreeIndexConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/BitmapIndexOptionsCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/CacheSimpleEntryListenerConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/CapacityCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/DataPersistenceConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/DiskTierConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/DistributedObjectInfoCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/DurationConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/EndpointQualifierCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/ErrorHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/EventJournalConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/EvictionConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/FieldDescriptorCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/HazelcastJsonValueCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/HotRestartConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/IndexConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/ListenerConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/MapStoreConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/MemberInfoCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/MemberVersionCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/MemoryTierConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/MergePolicyConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/MerkleTreeConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/NearCacheConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/NearCachePreloaderConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/PagingPredicateHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/PartitioningAttributeConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/PredicateConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/QueryCacheConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/RaftGroupIdCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/RingbufferStoreConfigHolderCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/SchemaCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/SimpleEntryViewCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/SqlColumnMetadataCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/SqlErrorCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/SqlQueryIdCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/StackTraceElementCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/TieredStoreConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/TimedExpiryPolicyFactoryConfigCodec.cs
#	src/Hazelcast.Net/Protocol/CustomCodecs/WanReplicationRefCodec.cs
@emreyigit emreyigit added the Type: Feature Issue is a Feature Request. label Jun 28, 2024
@emreyigit emreyigit added this to the 5.5 milestone Jun 28, 2024
@emreyigit emreyigit self-assigned this Jun 28, 2024
Copy link

netlify bot commented Jun 28, 2024

Deploy Preview for silly-valkyrie-e996d9 failed.

Name Link
🔨 Latest commit fa273cd
🔍 Latest deploy log https://app.netlify.com/sites/silly-valkyrie-e996d9/deploys/667ec38d9bd7f000082d44db

@emreyigit emreyigit changed the title Introduce Multi Member Routing Mode [API-2241] Introduce Multi Member Routing Mode [API-2241] (3/3) Jun 28, 2024
emreyigit added 11 commits July 2, 2024 18:04
# Conflicts:
#	src/Hazelcast.Net/Clustering/Authenticator.cs
#	src/Hazelcast.Net/Clustering/MemberPartitionGroup.cs
# Conflicts:
#	src/Hazelcast.Net/Clustering/ClusterMembers.cs
#	src/Hazelcast.Net/Clustering/MemberPartitionGroup.cs
emreyigit added 17 commits July 16, 2024 14:41
# Conflicts:
#	src/Hazelcast.Net.Testing/NoOpSubsetMembers.cs
#	src/Hazelcast.Net.Tests/Clustering/FailoverTests2.cs
#	src/Hazelcast.Net.Tests/Clustering/MemberPartitionGroupTests.cs
#	src/Hazelcast.Net.Tests/Clustering/SubscriptionCollectTests.cs
#	src/Hazelcast.Net/Clustering/Authenticator.cs
#	src/Hazelcast.Net/Clustering/Cluster.cs
#	src/Hazelcast.Net/Clustering/ClusterEvents.cs
#	src/Hazelcast.Net/Clustering/ClusterMembers.cs
#	src/Hazelcast.Net/Clustering/ISubsetClusterMembers.cs
#	src/Hazelcast.Net/Clustering/MemberConnection.cs
#	src/Hazelcast.Net/Clustering/MemberPartitionGroup.cs
#	src/Hazelcast.Net/Models/MemberGroups.cs
# Conflicts:
#	src/Hazelcast.Net.Tests/Clustering/SubscriptionCollectTests.cs
# Conflicts:
#	src/Hazelcast.Net.Tests/Clustering/SubscriptionCollectTests.cs
#	src/Hazelcast.Net/Clustering/ClusterEvents.cs
#	src/Hazelcast.Net/Clustering/ClusterMembers.cs
#	src/Hazelcast.Net/Clustering/MemberConnection.cs
#	src/Hazelcast.Net/Networking/NetworkingOptions.cs
@emreyigit emreyigit marked this pull request as ready for review July 23, 2024 08:56
@codecov-commenter
Copy link

codecov-commenter commented Jul 23, 2024

Codecov Report

Attention: Patch coverage is 82.50000% with 21 lines in your changes missing coverage. Please review.

Project coverage is 80.96%. Comparing base (8d3fab9) to head (b246b6c).
Report is 1 commits behind head on master.

Files Patch % Lines
src/Hazelcast.Net/Clustering/ClusterEvents.cs 86.76% 9 Missing ⚠️
src/Hazelcast.Net/CP/CPDistributedObjectBase.cs 11.11% 8 Missing ⚠️
src/Hazelcast.Net/Clustering/Authenticator.cs 86.95% 3 Missing ⚠️
src/Hazelcast.Net/Clustering/ClusterState.cs 75.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #902      +/-   ##
==========================================
- Coverage   80.99%   80.96%   -0.04%     
==========================================
  Files        1022     1024       +2     
  Lines       24743    24918     +175     
==========================================
+ Hits        20040    20174     +134     
- Misses       4703     4744      +41     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

@JamesHazelcast JamesHazelcast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments from me, but business logic looks solid for the most part, nice work 👍

src/Hazelcast.Net/CP/CPMember.cs Outdated Show resolved Hide resolved
Comment on lines +85 to +86
_logger.IfDebug()?.LogDebug("CP groups updated to Version {Version}." +
" Old groups count: {OldCount}, new count: {NewCount}", Version, oldCount, groups.Count);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be useful to log the group contents, not just size differences, for debugging in production

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree. I realized that while implementing the CP routing part. It is fixed at next and last PR.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it a frequent log message? If it's really infrequent then it might be worth bumping to INFO as nobody is running with DEBUG. If it's frequent then I would leave as-is.

src/Hazelcast.Net/CP/ClusterCPGroups.cs Show resolved Hide resolved
src/Hazelcast.Net/Clustering/ClusterEvents.cs Outdated Show resolved Hide resolved
(cherry picked from commit 91d6ec1)
@emreyigit emreyigit requested a review from JamesHazelcast July 25, 2024 09:13
}
catch (Exception e)
{
_logger.IfDebug()?.LogDebug("Failed to parse CP group leader ids [{JsonMessage}]: {Message}. ", jsonMessage, e.Message);
Copy link

@gbarnett-hz gbarnett-hz Jul 25, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this not be > DEBUG? We control the structure of the message and its content -- if it doesn't have what we expect then it's an ERROR of WARN at the least?

Copy link

@JamesHazelcast JamesHazelcast left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @emreyigit!

@emreyigit emreyigit merged commit a2bd6b3 into hazelcast:master Jul 25, 2024
18 checks passed
emreyigit added a commit that referenced this pull request Jul 29, 2024
The PR introduces redirecting CP requests to Cp group leader if
possible.

This PR is the last part of smart routing implementation. It should be
merged after #902
@emreyigit emreyigit changed the title Introduce Multi Member Routing Mode [API-2241] (3/4) Introduce Multi Member Routing Mode [API-2241][API-2238] (3/4) Jul 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Feature Issue is a Feature Request.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants