-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Closed
Labels
Description
Hey folks,
I came across a weird issue today where one of our processes started raising ResponseError: DISCARD without MULTI when calling execute() on a pipeline object. As far as I can tell, this error should be impossible to receive since redis-py is supposed to take care of any discard/unwatching when using pipeline objects. This suggests a bug in redis-py not properly cleaning up after itself, although I've been reading the code and I don't see yet how this is possible. I also don't know how to reproduce the bug.
ERROR 2016-10-29 04:34:32.807 error expiring
Traceback (most recent call last):
File "dmserver.py", line 1477, in push_in_worker
redis_ops.cq_expire_items(channel_key)
File "redis_ops.py", line 129, in cq_expire_items
pipe.execute()
File "/usr/lib/python2.7/dist-packages/redis/client.py", line 2626, in execute
return execute(conn, stack, raise_on_error)
File "/usr/lib/python2.7/dist-packages/redis/client.py", line 2521, in _execute_transaction
self.immediate_execute_command('DISCARD')
File "/usr/lib/python2.7/dist-packages/redis/client.py", line 2461, in immediate_execute_command
return self.parse_response(conn, command_name, **options)
File "/usr/lib/python2.7/dist-packages/redis/client.py", line 2584, in parse_response
self, connection, command_name, **options)
File "/usr/lib/python2.7/dist-packages/redis/client.py", line 585, in parse_response
response = connection.read_response()
File "/usr/lib/python2.7/dist-packages/redis/connection.py", line 582, in read_response
raise response
ResponseError: DISCARD without MULTI
I'm using Redis 3.0.6 and redis-py 2.10.5.
Anyone seen anything like this before and have any suggestions?