-
Notifications
You must be signed in to change notification settings - Fork 57
Open
Description
Description
When using redisvl
with a Redis Cluster client, calling the index.load()
method results in an AttributeError
. The error originates from within the redis-py
library, which redisvl
calls during its batch writing process.
The traceback indicates that redisvl
's storage layer uses a ClusterPipeline
object for its awrite
operation. An internal helper function in redis-py
, get_protocol_version
, is then called, which attempts to access client.nodes_manager
. However, the ClusterPipeline
object does not have this attribute, leading to the crash.
This issue occurs when redisvl
is used as a dependency, for example, within langgraph-checkpoint-redis
when it attempts to save a checkpoint to a Redis Cluster.
Library Versions
- redisvl:
0.8.0
- redis:
6.4.0
(also observed with other5.x
versions including 5.3.1) - langgraph-checkpoint-redis:
0.1.1
- python:
3.12
Traceback
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/redisvl/index/index.py", line 1566, in load
return await self._storage.awrite(
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/redisvl/index/storage.py", line 477, in awrite
await self._aset(pipe, key, obj)
File "/usr/local/lib/python3.12/site-packages/redisvl/index/storage.py", line 679, in _aset
client.json().set(key, "$", obj) # type: ignore[return-value, misc]
^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/redis/commands/redismodules.py", line 24, in json
jj = JSON(client=self, encoder=encoder, decoder=decoder)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/redis/commands/json/__init__.py", line 71, in __init__
if get_protocol_version(self.client) in ["3", 3]:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/site-packages/redis/commands/helpers.py", line 118, in get_protocol_version
return client.nodes_manager.connection_kwargs.get("protocol")
^^^^^^^^^^^^^^^^^^^^
AttributeError: 'ClusterPipeline' object has no attribute 'nodes_manager'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/local/lib/python3.12/site-packages/langgraph/pregel/loop.py", line 1123, in _checkpointer_put_after_previous
await prev
File "/usr/local/lib/python3.12/site-packages/langgraph/pregel/loop.py", line 1125, in _checkpointer_put_after_previous
await cast(BaseCheckpointSaver, self.checkpointer).aput(
File "/usr/local/lib/python3.12/site-packages/langgraph/checkpoint/redis/aio.py", line 1079, in aput
raise e
File "/usr/local/lib/python3.12/site-packages/langgraph/checkpoint/redis/aio.py", line 998, in aput
await self.checkpoints_index.load(
File "/usr/local/lib/python3.12/site-packages/redisvl/index/index.py", line 1583, in load
raise RedisVLError(f"Failed to load data: {str(e)}") from e
redisvl.exceptions.RedisVLError: Failed to load data: 'ClusterPipeline' object has no attribute 'nodes_manager'
Metadata
Metadata
Assignees
Labels
No labels