[jira] [Updated] (IGNITE-9876) .NET: Thin Client: Implement Best Effort Affinity
[ https://issues.apache.org/jira/browse/IGNITE-9876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Maxim Muzafarov updated IGNITE-9876: Fix Version/s: 2.8 > .NET: Thin Client: Implement Best Effort Affinity > - > > Key: IGNITE-9876 > URL: https://issues.apache.org/jira/browse/IGNITE-9876 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, iep-23 > Fix For: 2.8 > > Time Spent: 50m > Remaining Estimate: 0h > > See linked IEP-23. > First iteration is going to be an "experimental feature" with the following > limitations: > * No reconnect support for failed nodes > * No AffinityKeyMapped support -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (IGNITE-9876) .NET: Thin Client: Implement Best Effort Affinity
[ https://issues.apache.org/jira/browse/IGNITE-9876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-9876: --- Description: See linked IEP-23. First iteration is going to be an "experimental feature" with the following limitations: * No reconnect support for failed nodes * No AffinityKeyMapped support was: Currently we connect to a random node, so when the primary node for the given key is different from that random node, there is an additional network hop. For single-key operations (scope of this ticket) we should strive to determine primary node and connect there directly. To determine primary node for a given key: 1. Retrieve partition map from server node (partition -> primaryNodeId) 2. Connect to all known server nodes (all endpoints from IgniteClientConfiguration) and get their Node Ids, build a map from endpoint (IP or host) to Node Id 3. Implement RendezvousAffinityFunction in C# Efficient automatic partition map retrieval: 1. When a partition map is needed, send a separate asynchronous operation (new server op type is required) 2. Do not block current user operation. If partition map is not present, just skip affinity step and use current connection 3. When response arrives with the partition map, save it with a timestamp 4. On every partition map access check the timestamp. Request new map if current map is older than N minutes. > .NET: Thin Client: Implement Best Effort Affinity > - > > Key: IGNITE-9876 > URL: https://issues.apache.org/jira/browse/IGNITE-9876 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, iep-23 > > See linked IEP-23. > First iteration is going to be an "experimental feature" with the following > limitations: > * No reconnect support for failed nodes > * No AffinityKeyMapped support -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (IGNITE-9876) .NET: Thin Client: Implement Best Effort Affinity
[ https://issues.apache.org/jira/browse/IGNITE-9876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Vladimir Ozerov updated IGNITE-9876: Component/s: thin client > .NET: Thin Client: Implement Best Effort Affinity > - > > Key: IGNITE-9876 > URL: https://issues.apache.org/jira/browse/IGNITE-9876 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, iep-23 > > Currently we connect to a random node, so when the primary node for the given > key is different from that random node, there is an additional network hop. > For single-key operations (scope of this ticket) we should strive to > determine primary node and connect there directly. > To determine primary node for a given key: > 1. Retrieve partition map from server node (partition -> primaryNodeId) > 2. Connect to all known server nodes (all endpoints from > IgniteClientConfiguration) and get their Node Ids, build a map from endpoint > (IP or host) to Node Id > 3. Implement RendezvousAffinityFunction in C# > Efficient automatic partition map retrieval: > 1. When a partition map is needed, send a separate asynchronous operation > (new server op type is required) > 2. Do not block current user operation. If partition map is not present, just > skip affinity step and use current connection > 3. When response arrives with the partition map, save it with a timestamp > 4. On every partition map access check the timestamp. Request new map if > current map is older than N minutes. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (IGNITE-9876) .NET: Thin Client: Implement Best Effort Affinity
[ https://issues.apache.org/jira/browse/IGNITE-9876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-9876: --- Description: Currently we connect to a random node, so when the primary node for the given key is different from that random node, there is an additional network hop. For single-key operations (scope of this ticket) we should strive to determine primary node and connect there directly. To determine primary node for a given key: 1. Retrieve partition map from server node (partition -> primaryNodeId) 2. Connect to all known server nodes (all endpoints from IgniteClientConfiguration) and get their Node Ids, build a map from endpoint (IP or host) to Node Id 3. Implement RendezvousAffinityFunction in C# Efficient automatic partition map retrieval: 1. When a partition map is needed, send a separate asynchronous operation (new server op type is required) 2. Do not block current user operation. If partition map is not present, just skip affinity step and use current connection 3. When response arrives with the partition map, save it with a timestamp 4. On every partition map access check the timestamp. Request new map if current map is older than N minutes. was: Currently we connect to a random node, so when the primary node for the given key is different from that random node, there is an additional network hop. For single-key operations (scope of this ticket) we should strive to determine primary node and connect there directly. To determine primary node for a given key: 1. Retrieve partition map from server node (partition -> primaryNodeId) 2. Connect to all known server nodes (all endpoints from IgniteClientConfiguration) and get their Node Ids, build a map from endpoint (IP or host) to Node Id 3. Implement RendezvousAffinityFunction in C# Efficient partition map retrieval: 1. Connect to a random node as usual 2. For all operations involving known cache key: retrieve partition map (only if it is not present or stale > .NET: Thin Client: Implement Best Effort Affinity > - > > Key: IGNITE-9876 > URL: https://issues.apache.org/jira/browse/IGNITE-9876 > Project: Ignite > Issue Type: New Feature > Components: platforms >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, iep-23 > > Currently we connect to a random node, so when the primary node for the given > key is different from that random node, there is an additional network hop. > For single-key operations (scope of this ticket) we should strive to > determine primary node and connect there directly. > To determine primary node for a given key: > 1. Retrieve partition map from server node (partition -> primaryNodeId) > 2. Connect to all known server nodes (all endpoints from > IgniteClientConfiguration) and get their Node Ids, build a map from endpoint > (IP or host) to Node Id > 3. Implement RendezvousAffinityFunction in C# > Efficient automatic partition map retrieval: > 1. When a partition map is needed, send a separate asynchronous operation > (new server op type is required) > 2. Do not block current user operation. If partition map is not present, just > skip affinity step and use current connection > 3. When response arrives with the partition map, save it with a timestamp > 4. On every partition map access check the timestamp. Request new map if > current map is older than N minutes. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (IGNITE-9876) .NET: Thin Client: Implement Best Effort Affinity
[ https://issues.apache.org/jira/browse/IGNITE-9876?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-9876: --- Description: Currently we connect to a random node, so when the primary node for the given key is different from that random node, there is an additional network hop. For single-key operations (scope of this ticket) we should strive to determine primary node and connect there directly. To determine primary node for a given key: 1. Retrieve partition map from server node (partition -> primaryNodeId) 2. Connect to all known server nodes (all endpoints from IgniteClientConfiguration) and get their Node Ids, build a map from endpoint (IP or host) to Node Id 3. Implement RendezvousAffinityFunction in C# Efficient partition map retrieval: 1. Connect to a random node as usual 2. For all operations involving known cache key: retrieve partition map (only if it is not present or stale > .NET: Thin Client: Implement Best Effort Affinity > - > > Key: IGNITE-9876 > URL: https://issues.apache.org/jira/browse/IGNITE-9876 > Project: Ignite > Issue Type: New Feature > Components: platforms >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, iep-23 > > Currently we connect to a random node, so when the primary node for the given > key is different from that random node, there is an additional network hop. > For single-key operations (scope of this ticket) we should strive to > determine primary node and connect there directly. > To determine primary node for a given key: > 1. Retrieve partition map from server node (partition -> primaryNodeId) > 2. Connect to all known server nodes (all endpoints from > IgniteClientConfiguration) and get their Node Ids, build a map from endpoint > (IP or host) to Node Id > 3. Implement RendezvousAffinityFunction in C# > Efficient partition map retrieval: > 1. Connect to a random node as usual > 2. For all operations involving known cache key: retrieve partition map (only > if it is not present or stale -- This message was sent by Atlassian JIRA (v7.6.3#76005)