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

Map with Near Cache causes get_all operations to fail with exception. #701

Open
pegwymonie opened this issue Sep 21, 2024 · 0 comments
Open

Comments

@pegwymonie
Copy link

This code will replicate the issue.
Running the Hazelcast Python Client 5.5.0 driver, with a 3 node cluster running community 5.5.
Downgrading did not fix the issue.
Exception was cannot convert dictionary update sequence element #0 to a sequence

import time
import uuid

import hazelcast
from hazelcast.config import NearCacheConfig, InMemoryFormat

test_size = 10000

test_target_near_cache_config = NearCacheConfig()
test_target_near_cache_config.in_memory_format = InMemoryFormat.BINARY
test_target_near_cache_config.time_to_live = 30
test_target_near_cache_config.max_idle = 15
test_target_near_cache_config.eviction_max_size = test_size * 2

client = hazelcast.HazelcastClient(
    cluster_name="hazelcast",
    cluster_members=[...
    ],
    near_caches={
       "test-target-nc": test_target_near_cache_config
    }
)

nc_map = client.get_map('test-target-nc')
uc_map = client.get_map('test-target-uc')

def readSingle(map, keys):
    try:
        startms = round(time.time() * 1000)
        futures = []
        for key in keys:
            futures.append(map.get(key))
        for future in futures:
            future.result()
        endms = round(time.time()* 1000)
        print(f"total time: {endms - startms:0.2f}ms")
        print(f"op    time: {(endms - startms)/(len(keys)):0.2f}ms")
    except Exception as e:
        print("operation failed", e)

def readMulti(map, keys):
    try:
        startms = round(time.time() * 1000)
        map.get_all(keys).result()
        endms = round(time.time()* 1000)
        print(f"total time: {endms - startms:0.2f}ms")
        print(f"op    time: {(endms - startms)/(len(keys)):0.2f}ms")
    except Exception as e:
        print("operation failed", e)



content = {}
for index in range(0, test_size):
    id = uuid.uuid4()
    value = uuid.uuid4()
    content[id] = value

keys = list(content.keys())

nc_map.put_all(content)
uc_map.put_all(content)

print("Warm Near Cache")
futures = []
for key in keys:
    futures.append(nc_map.get(key))
for future in futures:
    future.result()

print('Read Single, No Cache')
readSingle(uc_map, keys)
print('Read Single, With Cache')
readSingle(nc_map, keys)
print('Read Multi, No Cache')
readMulti(uc_map, keys)
print('Read Multi, With Cache')
readMulti(nc_map, keys)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant