[jira] [Updated] (IGNITE-9876) .NET: Thin Client: Implement Best Effort Affinity

2019-10-10 Thread Maxim Muzafarov (Jira)


 [ 
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

2019-04-02 Thread Pavel Tupitsyn (JIRA)


 [ 
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

2019-03-18 Thread Vladimir Ozerov (JIRA)


 [ 
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

2018-10-14 Thread Pavel Tupitsyn (JIRA)


 [ 
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

2018-10-14 Thread Pavel Tupitsyn (JIRA)


 [ 
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)