Skip to content

Commit b00b7d5

Browse files
authored
GG-26034: Renamed Affinity -> Partition Awareness (#5)
1 parent b598254 commit b00b7d5

9 files changed

Lines changed: 46 additions & 45 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33
.pytest_cache
44
pygridgain.egg-info
55
ignite-log-*
6+
__pycache__

docs/readme.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ Other `pytest` parameters:
140140
``--timeout`` − timeout (in seconds) for each socket operation, including
141141
`connect`. Accepts integer or float value. Default is None (blocking mode),
142142

143-
``--affinity-aware`` − experimental; off by default; turns on the affinity
143+
``--partition-aware`` − experimental; off by default; turns on the partition
144144
awareness: a way for the thin client to calculate a data placement for the
145145
given key.
146146

pygridgain/cache.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ def get_best_node(
253253
"""
254254
conn = self._client.random_node
255255

256-
if self.client.affinity_aware and key is not None:
256+
if self.client.partition_aware and key is not None:
257257
if key_hint is None:
258258
key_hint = AnyDataObject.map_python_type(key)
259259

pygridgain/client.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Client:
9292
protocol_version: Optional[Tuple] = None
9393

9494
def __init__(
95-
self, compact_footer: bool = None, affinity_aware: bool = False,
95+
self, compact_footer: bool = None, partition_aware: bool = False,
9696
**kwargs
9797
):
9898
"""
@@ -103,7 +103,7 @@ def __init__(
103103
Default is to use the same approach the server is using (None).
104104
GridGain binary protocol documentation on this topic:
105105
https://apacheignite.readme.io/docs/binary-client-protocol-data-format#section-schema
106-
:param affinity_aware: (optional) try to calculate the exact data
106+
:param partition_aware: (optional) try to calculate the exact data
107107
placement from the key before to issue the key operation to the
108108
server node:
109109
https://cwiki.apache.org/confluence/display/IGNITE/IEP-23%3A+Best+Effort+Affinity+for+thin+clients
@@ -114,7 +114,7 @@ def __init__(
114114
self._connection_args = kwargs
115115
self._nodes = []
116116
self._current_node = 0
117-
self._affinity_aware = affinity_aware
117+
self._partition_aware = partition_aware
118118
self.affinity_version = (0, 0)
119119

120120
def get_protocol_version(self) -> Optional[Tuple]:
@@ -130,8 +130,8 @@ def get_protocol_version(self) -> Optional[Tuple]:
130130
return self.protocol_version
131131

132132
@property
133-
def affinity_aware(self):
134-
return self._affinity_aware
133+
def partition_aware(self):
134+
return self._partition_aware
135135

136136
def connect(self, *args):
137137
"""

tests/conftest.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,16 +81,16 @@ def server3():
8181

8282
@pytest.fixture(scope='module')
8383
def client(
84-
node, timeout, affinity_aware, use_ssl, ssl_keyfile, ssl_certfile,
84+
node, timeout, partition_aware, use_ssl, ssl_keyfile, ssl_certfile,
8585
ssl_ca_certfile, ssl_cert_reqs, ssl_ciphers, ssl_version,
8686
username, password,
8787
):
88-
yield from client0(node, timeout, affinity_aware, use_ssl, ssl_keyfile, ssl_certfile, ssl_ca_certfile,
88+
yield from client0(node, timeout, partition_aware, use_ssl, ssl_keyfile, ssl_certfile, ssl_ca_certfile,
8989
ssl_cert_reqs, ssl_ciphers, ssl_version, username, password)
9090

9191

9292
@pytest.fixture(scope='module')
93-
def client_affinity_aware(
93+
def client_partition_aware(
9494
node, timeout, use_ssl, ssl_keyfile, ssl_certfile,
9595
ssl_ca_certfile, ssl_cert_reqs, ssl_ciphers, ssl_version,
9696
username, password
@@ -100,7 +100,7 @@ def client_affinity_aware(
100100

101101

102102
@pytest.fixture(scope='module')
103-
def client_affinity_aware_single_server(
103+
def client_partition_aware_single_server(
104104
node, timeout, use_ssl, ssl_keyfile, ssl_certfile,
105105
ssl_ca_certfile, ssl_cert_reqs, ssl_ciphers, ssl_version,
106106
username, password
@@ -127,13 +127,13 @@ def log_init():
127127

128128

129129
def client0(
130-
node, timeout, affinity_aware, use_ssl, ssl_keyfile, ssl_certfile,
130+
node, timeout, partition_aware, use_ssl, ssl_keyfile, ssl_certfile,
131131
ssl_ca_certfile, ssl_cert_reqs, ssl_ciphers, ssl_version,
132132
username, password,
133133
):
134134
client = Client(
135135
timeout=timeout,
136-
affinity_aware=affinity_aware,
136+
partition_aware=partition_aware,
137137
use_ssl=use_ssl,
138138
ssl_keyfile=ssl_keyfile,
139139
ssl_certfile=ssl_certfile,
@@ -175,7 +175,7 @@ def pytest_addoption(parser):
175175
)
176176
)
177177
parser.addoption(
178-
'--affinity-aware',
178+
'--partition-aware',
179179
action=BoolParser,
180180
nargs='?',
181181
default=False,
@@ -258,7 +258,7 @@ def pytest_generate_tests(metafunc):
258258
'{host}:{port}'.format(host='127.0.0.1', port=10802),
259259
'{host}:{port}'.format(host='127.0.0.1', port=10803)],
260260
'timeout': None,
261-
'affinity_aware': False,
261+
'partition_aware': False,
262262
'use_ssl': False,
263263
'ssl_keyfile': None,
264264
'ssl_certfile': None,

tests/test_affinity.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@
2727
from pygridgain.datatypes.prop_codes import *
2828

2929

30-
def test_get_node_partitions(client_affinity_aware):
30+
def test_get_node_partitions(client_partition_aware):
3131

32-
conn = client_affinity_aware.random_node
32+
conn = client_partition_aware.random_node
3333

34-
cache_1 = client_affinity_aware.get_or_create_cache('test_cache_1')
35-
cache_2 = client_affinity_aware.get_or_create_cache({
34+
cache_1 = client_partition_aware.get_or_create_cache('test_cache_1')
35+
cache_2 = client_partition_aware.get_or_create_cache({
3636
PROP_NAME: 'test_cache_2',
3737
PROP_CACHE_KEY_CONFIGURATION: [
3838
{
@@ -41,9 +41,9 @@ def test_get_node_partitions(client_affinity_aware):
4141
}
4242
],
4343
})
44-
cache_3 = client_affinity_aware.get_or_create_cache('test_cache_3')
45-
cache_4 = client_affinity_aware.get_or_create_cache('test_cache_4')
46-
cache_5 = client_affinity_aware.get_or_create_cache('test_cache_5')
44+
cache_3 = client_partition_aware.get_or_create_cache('test_cache_3')
45+
cache_4 = client_partition_aware.get_or_create_cache('test_cache_4')
46+
cache_5 = client_partition_aware.get_or_create_cache('test_cache_5')
4747

4848
result = cache_get_node_partitions(
4949
conn,
@@ -115,9 +115,9 @@ def test_get_node_partitions(client_affinity_aware):
115115
116116
],
117117
)
118-
def test_affinity(client_affinity_aware, key, key_hint):
118+
def test_affinity(client_partition_aware, key, key_hint):
119119

120-
cache_1 = client_affinity_aware.get_or_create_cache({
120+
cache_1 = client_partition_aware.get_or_create_cache({
121121
PROP_NAME: 'test_cache_1',
122122
PROP_CACHE_MODE: CacheMode.PARTITIONED,
123123
})
@@ -126,7 +126,7 @@ def test_affinity(client_affinity_aware, key, key_hint):
126126

127127
best_node = cache_1.get_best_node(key, key_hint=key_hint)
128128

129-
for node in filter(lambda n: n.alive, client_affinity_aware._nodes):
129+
for node in filter(lambda n: n.alive, client_partition_aware._nodes):
130130
result = cache_local_peek(
131131
node, cache_1.cache_id, key, key_hint=key_hint,
132132
)
@@ -142,9 +142,9 @@ def test_affinity(client_affinity_aware, key, key_hint):
142142
cache_1.destroy()
143143

144144

145-
def test_affinity_for_generic_object(client_affinity_aware):
145+
def test_affinity_for_generic_object(client_partition_aware):
146146

147-
cache_1 = client_affinity_aware.get_or_create_cache({
147+
cache_1 = client_partition_aware.get_or_create_cache({
148148
PROP_NAME: 'test_cache_1',
149149
PROP_CACHE_MODE: CacheMode.PARTITIONED,
150150
})
@@ -166,7 +166,7 @@ class KeyClass(
166166

167167
best_node = cache_1.get_best_node(key, key_hint=BinaryObject)
168168

169-
for node in filter(lambda n: n.alive, client_affinity_aware._nodes):
169+
for node in filter(lambda n: n.alive, client_partition_aware._nodes):
170170
result = cache_local_peek(
171171
node, cache_1.cache_id, key, key_hint=BinaryObject,
172172
)
@@ -182,16 +182,16 @@ class KeyClass(
182182
cache_1.destroy()
183183

184184

185-
def test_affinity_for_generic_object_without_type_hints(client_affinity_aware):
185+
def test_affinity_for_generic_object_without_type_hints(client_partition_aware):
186186

187-
if client_affinity_aware.protocol_version < (1, 4, 0):
187+
if client_partition_aware.protocol_version < (1, 4, 0):
188188
pytest.skip(
189189
'Best effort affinity is not supported by the protocol {}.'.format(
190-
client_affinity_aware.protocol_version
190+
client_partition_aware.protocol_version
191191
)
192192
)
193193

194-
cache_1 = client_affinity_aware.get_or_create_cache({
194+
cache_1 = client_partition_aware.get_or_create_cache({
195195
PROP_NAME: 'test_cache_1',
196196
PROP_CACHE_MODE: CacheMode.PARTITIONED,
197197
})
@@ -213,7 +213,7 @@ class KeyClass(
213213

214214
best_node = cache_1.get_best_node(key)
215215

216-
for node in filter(lambda n: n.alive, client_affinity_aware._nodes):
216+
for node in filter(lambda n: n.alive, client_partition_aware._nodes):
217217
result = cache_local_peek(
218218
node, cache_1.cache_id, key
219219
)

tests/test_affinity_bad_servers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020

2121
def test_client_with_multiple_bad_servers():
22-
client = Client(affinity_aware=True)
22+
client = Client(partition_aware=True)
2323
with pytest.raises(ReconnectError) as e_info:
2424
client.connect([("127.0.0.1", 10900), ("127.0.0.1", 10901)])
2525
assert str(e_info.value) == "Can not connect."

tests/test_affinity_request_routing.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
@pytest.mark.parametrize("key,grid_idx", [(1, 3), (2, 1), (3, 1), (4, 3), (5, 1), (6, 3), (11, 2), (13, 2), (19, 2)])
2828
@pytest.mark.parametrize("backups", [0, 1, 2, 3])
2929
def test_cache_operation_on_primitive_key_routes_request_to_primary_node(
30-
request, key, grid_idx, backups, client_affinity_aware):
30+
request, key, grid_idx, backups, client_partition_aware):
3131

32-
cache = client_affinity_aware.get_or_create_cache({
32+
cache = client_partition_aware.get_or_create_cache({
3333
PROP_NAME: request.node.name + str(backups),
3434
PROP_BACKUPS_NUMBER: backups,
3535
})
@@ -90,7 +90,7 @@ def test_cache_operation_on_complex_key_routes_request_to_primary_node():
9090
@pytest.mark.parametrize("key,grid_idx", [(1, 2), (2, 1), (3, 1), (4, 2), (5, 2), (6, 3)])
9191
@pytest.mark.skip(reason="GG-25823: Custom key objects are not supported yet")
9292
def test_cache_operation_on_custom_affinity_key_routes_request_to_primary_node(
93-
request, client_affinity_aware, key, grid_idx):
93+
request, client_partition_aware, key, grid_idx):
9494
class AffinityTestType1(
9595
metaclass=GenericObjectMeta,
9696
type_name='AffinityTestType1',
@@ -110,7 +110,7 @@ class AffinityTestType1(
110110
},
111111
],
112112
}
113-
cache = client_affinity_aware.create_cache(cache_config)
113+
cache = client_partition_aware.create_cache(cache_config)
114114

115115
# noinspection PyArgumentList
116116
key_obj = AffinityTestType1(
@@ -125,7 +125,7 @@ class AffinityTestType1(
125125

126126

127127
def test_cache_operation_routed_to_new_cluster_node(request):
128-
client = Client(affinity_aware=True)
128+
client = Client(partition_aware=True)
129129
client.connect([("127.0.0.1", 10801), ("127.0.0.1", 10802), ("127.0.0.1", 10803), ("127.0.0.1", 10804)])
130130
cache = client.get_or_create_cache(request.node.name)
131131
key = 12
@@ -149,12 +149,12 @@ def check_grid_idx():
149149
kill_process_tree(srv.pid)
150150

151151

152-
def test_unsupported_affinity_cache_operation_routed_to_random_node(client_affinity_aware):
153-
verify_random_node(client_affinity_aware.get_cache("custom-affinity"))
152+
def test_unsupported_affinity_cache_operation_routed_to_random_node(client_partition_aware):
153+
verify_random_node(client_partition_aware.get_cache("custom-affinity"))
154154

155155

156-
def test_replicated_cache_operation_routed_to_random_node(request, client_affinity_aware):
157-
cache = client_affinity_aware.get_or_create_cache({
156+
def test_replicated_cache_operation_routed_to_random_node(request, client_partition_aware):
157+
cache = client_partition_aware.get_or_create_cache({
158158
PROP_NAME: request.node.name,
159159
PROP_CACHE_MODE: CacheMode.REPLICATED,
160160
})

tests/test_affinity_single_connection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
from tests.util import get_request_grid_idx
1919

2020

21-
def test_all_cache_operations_with_affinity_aware_client_on_single_server(request, client_affinity_aware_single_server):
22-
cache = client_affinity_aware_single_server.get_or_create_cache(request.node.name)
21+
def test_all_cache_operations_with_partition_aware_client_on_single_server(request, client_partition_aware_single_server):
22+
cache = client_partition_aware_single_server.get_or_create_cache(request.node.name)
2323
key = 1
2424
key2 = 2
2525

0 commit comments

Comments
 (0)