summaryrefslogtreecommitdiff
path: root/redis
Commit message (Collapse)AuthorAgeFilesLines
* support JSON.MERGE Command (#2761)HEADmastershacharPash2023-05-162-0/+23
| | | | | | | | | | | | | | | | | * support JSON.MERGE Command * linters * try with abc instead person * change @skip_ifmodversion_lt to latest ReJSON 2.4.7 * change version * fix test * linters * add async test
* Kristjan/issue #2754: Add missing argument to ↵Kristján Valur Jónsson2023-05-102-2/+11
| | | | | | | | | | | | SentinelManagedConnection.read_response() (#2756) * Increase timeout for a test which would hang completely if failing. Timeouts in virtualized CI backends can occasionally fail if too short. * add "disconnect_on_error" argument to SentinelManagedConnection * update Changes * lint
* Fix `xadd` allow non negative maxlen (#2739)Seongchuel Ahn2023-05-081-2/+2
| | | | | | | | | * Fix xadd allow non negative maxlen * Update change log --------- Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* fix create single_connection_client from url (#2752)dvora-h2023-05-082-2/+10
|
* Add client no-touch (#2745)Seongchuel Ahn2023-05-081-0/+11
| | | | | | | | | | | | | | | | | | | | | | | * Add client no-touch * Update redis/commands/core.py Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> * Update test_commands.py Improve test_client_no_touch * Update test_commands.py Add async version test case * Chore remove whitespace Oops --------- Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* Optionally disable disconnects in read_response (#2695)Kristján Valur Jónsson2023-05-085-107/+73
| | | | | | | | | | | | | * Add regression tests and fixes for issue #1128 * Fix tests for resumable read_response to use "disconnect_on_error" * undo prevision fix attempts in async client and cluster * re-enable cluster test * Suggestions from code review * Add CHANGES
* fix parse_slowlog_get (#2732)dvora-h2023-05-081-0/+4
|
* clean warnings (#2731)dvora-h2023-05-081-1/+1
|
* Add support for cluster myshardid (#2704)Anurag Bandyopadhyay2023-05-082-1/+16
| | | | | | | | | | | | | | | | | | | * feat: adding support for cluster myshardid * lint fix * fix: comment fix and async test * fix: adding version check * fix lint: * linters --------- Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com> Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> Co-authored-by: dvora-h <dvora.heller@redis.com>
* add "address_remap" feature to RedisCluster (#2726)Kristján Valur Jónsson2023-05-022-1/+52
| | | | | | | | | | | | | | | * add cluster "host_port_remap" feature for asyncio.RedisCluster * Add a unittest for asyncio.RedisCluster * Add host_port_remap to _sync_ RedisCluster * add synchronous tests * rename arg to `address_remap` and take and return an address tuple. * Add class documentation * Add CHANGES
* Fix potential race condition during disconnection (#2719)Markus Gerstel2023-05-011-4/+6
| | | | | | | | | | | | | | | When the disconnect() function is called twice in parallel it is possible that one thread deletes the self._sock reference, while the other thread will attempt to call .close() on it, leading to an AttributeError. This situation can routinely be encountered by closing the connection in a PubSubWorkerThread error handler in a blocking thread (ie. with sleep_time==None), and then calling .close() on the PubSub object. The main thread will then run into the disconnect() function, and the listener thread is woken up by the closure and will race into the disconnect() function, too. This can be fixed easily by copying the object reference before doing the None-check, similar to what we do in the redis.client.close() function.
* Fix `ClusterCommandProtocol` not itself being marked as a protocol (#2729)Avasam2023-05-011-1/+1
| | | | | * Fix `ClusterCommandProtocol` not itself being marked as a protocol * Update CHANGES
* Add WITHSCORES to ZREVRANK Command (#2725)shacharPash2023-04-301-2/+11
| | | | | | | | | * add withscores to zrevrank * change 0 -> 2 * fix errors * split test
* return response in case of KeyError (#2628)shacharPash2023-04-301-4/+7
| | | | | | | | | * return response in case of KeyError * fix code linters error * fix linters 2 * fix linters 3
* Improve error output for master discovery (#2720)Marc Schöchlin2023-04-272-4/+16
| | | | | | | Make MasterNotFoundError exception more precise in the case of ConnectionError and TimeoutError to help the user to identify configuration errors Co-authored-by: Marc Schöchlin <marc.schoechlin@flipapp.de>
* Fix incorrect usage of once flag in async Sentinel (#2718)Felipe Machado2023-04-271-2/+2
| | | | | | | In the execute_command of the async Sentinel, the once flag was being used incorrectly, with its meaning inverted. To fix we just needed to invert the if and else bodies. This isn't being caught by the tests currently because the tests of commands that use this flag do not check their results/effects (for example the "test_ckquorum" test).
* asyncio: Fix memory leak caused by hiredis (#2693) (#2694)Oran Avraham2023-04-132-6/+8
|
* Fix async (#2673)dvora-h2023-03-291-7/+3
|
* Fixing cancelled async futures (#2666)Chayim2023-03-292-37/+83
| | | | | Co-authored-by: James R T <jamestiotio@gmail.com> Co-authored-by: dvora-h <dvora.heller@redis.com>
* Fix issue 2660: PytestUnraisableExceptionWarning from asycio client (#2669)shacharPash2023-03-281-0/+5
|
* UnixDomainSocketConnection missing constructor argument (#2630)woutdenolf2023-03-281-1/+2
|
* fix: do not use asyncio's timeout lib before 3.11.2 (#2659)Thiago Bellini Ribeiro2023-03-281-1/+3
| | | | | | | | | | | | There's an issue in asyncio's timeout lib before 3.11.3 that causes async calls to raise `CancelledError`. This is a cpython issue that was fixed in this commit [1] and cherry-picked to previous versions, meaning 3.11.3 will work correctly. Check [2] for more info. [1] https://github.com/python/cpython/commit/04adf2df395ded81922c71360a5d66b597471e49 [2] https://github.com/redis/redis-py/issues/2633
* AsyncIO Race Condition Fix (#2641)v4.5.3Chayim2023-03-222-5/+19
|
* Fix behaviour of async PythonParser to match RedisParser as for issue #2349 ↵Kristján Valur Jónsson2023-03-161-13/+11
| | | | | | | (#2582) * Allow data to drain from PythonParser after connection close. * Add Changes
* introduce AbstractConnection so that UnixDomainSocketConnection can call ↵woutdenolf2023-03-161-158/+120
| | | | | super().__init__ (#2588) Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* add queue_class to REDIS_ALLOWED_KEYS (#2577)Dongkeun Lee2023-03-161-0/+1
| | | | | | | | | | | | * add queue_class to REDIS_ALLOWED_KEYS * fix lint * fix lint --------- Co-authored-by: zach.lee <zach.lee@sendbird.com> Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* fix: replace async_timeout by asyncio.timeout (#2602)Mehdi ABAAKOUK2023-03-161-8/+13
| | | | | | | | | | | | | async_timeout does not support python 3.11 https://github.com/aio-libs/async-timeout/pull/295 And have two years old annoying bugs: https://github.com/aio-libs/async-timeout/issues/229 https://github.com/redis/redis-py/issues/2551 Since asyncio.timeout has been shipped in python 3.11, we should start using it. Partially fixes 2551
* Remove redundant assignment. (#2620)Eom Taegyung "Iggy2023-03-161-1/+0
|
* Making search document subscriptable (#2615)Abhishek Kumar Sinha2023-03-151-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fixed issue #2598 - make Document class subscriptable * Last time added older file, fixed it * retrigger checks * update json().arrindex() default values (#2611) * update json().arrindex() default values * add unit test * fix falsy checks * more unit tests * add asyncio tests * fix lint line length --------- Co-authored-by: Alex Schmitz <aschmitz@box.com> * Speeding up the protocol parsing (#2596) * speeding up the protocol parser * linting * changes to ease * Fixed CredentialsProvider examples (#2587) Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> * ConnectionPool SSL example (#2605) * [types] update return type of smismember to list[int] (#2617) * update return type of smismember * use Literal instead of int * retrigger checks * Added test for document subscriptable in tests/test_search.py * Fixed linter issue * retrigger checks --------- Co-authored-by: Alex Schmitz <alex.schmitz@gmail.com> Co-authored-by: Alex Schmitz <aschmitz@box.com> Co-authored-by: Chayim <chayim@users.noreply.github.com> Co-authored-by: Bar Shaul <88437685+barshaul@users.noreply.github.com> Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com> Co-authored-by: CrimsonGlory <CrimsonGlory@users.noreply.github.com> Co-authored-by: Raymond Yin <raymond@tryevergreen.com>
* [types] update return type of smismember to list[int] (#2617)Raymond Yin2023-03-151-2/+7
| | | | | * update return type of smismember * use Literal instead of int
* Speeding up the protocol parsing (#2596)Chayim2023-03-152-26/+23
| | | | | | | * speeding up the protocol parser * linting * changes to ease
* update json().arrindex() default values (#2611)Alex Schmitz2023-03-151-5/+9
| | | | | | | | | | | | | | | | | * update json().arrindex() default values * add unit test * fix falsy checks * more unit tests * add asyncio tests * fix lint line length --------- Co-authored-by: Alex Schmitz <aschmitz@box.com>
* Fix for `lpop` and `rpop` return typing (#2590)Galtozzy2023-02-151-2/+10
| | | Right now there is an annoying warning that these methods can't be awaited when using `redis.asyncio`, even tho it does work with no problems.
* Fix #2581 UnixDomainSocketConnection' object has no attribute ↵Sergey Prokazov2023-02-081-0/+2
| | | | | | | | | | | | | | | | | '_command_packer' (#2583) * Fix #2581 UnixDomainSocketConnection' object has no attribute '_command_packer' . Apparently there is no end-to-end tests for Unix sockets so automation didn't catch it. I assume that setting up domain sockets reliably in dockerized environment is not very trivial. Added test for pack_command specifically. * Figuring out why CI fails. Locally: " congratulations :)" * Fix the test. hiredis doesn't treat memoryviews differently.
* Fix issue with `pack_commands` returning an empty byte sequence (#2416)jmcbailey2023-02-072-2/+4
| | | Co-authored-by: dvora-h <67596500+dvora-h@users.noreply.github.com>
* Fix issue 2349: Let async HiredisParser finish parsing after a ↵Kristján Valur Jónsson2023-02-061-6/+9
| | | | | | | | | | | | | Connection.disconnect() (#2557) * A failing unittest * Do not clear the redis-reader's state when we disconnect so that it can finish reading the final message * Test that reading a message of two chunks after a disconnect() works. * Add Changes * fix typos
* Fix issue 2567: NoneType check before raising exception (#2569)Anurag Bandyopadhyay2023-02-061-2/+3
| | | Co-authored-by: Anuragkillswitch <70265851+Anuragkillswitch@users.noreply.github.com>
* Use hiredis::pack_command to serialized the commands. (#2570)Sergey Prokazov2023-02-062-45/+92
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Implemented pack command and pack bytes * 1) refactored the command packer construction process 2) now hiredis.pack_bytes is the default choice. Though it's still possible to run redisrs-py (fix the flag in utils.py) or hiredis.pack_command (flag in connection.py) * Switch to hiredis.pack_command * Remove the rust extension module. * 1) Introduce HIREDIS_PACK_AVAILABLE environment variable. 2) Extract serialization functionality out of Connection class. * 1) Fix typo. 2) Add change log entry. 3) Revert the benchmark changes * Ditch the hiredis version check for pack_command. * Fix linter errors * Revert version changes * Fix linter issues * Looks like the current redis-py version is 4.4.1 --------- Co-authored-by: Sergey Prokazov <sergey.prokazov@redis.com>
* Fix: tuple function cannot be passed more than one argument (#2573)Kosuke2023-02-061-1/+1
|
* Fix issue 2540: Synchronise concurrent command calls to single-client mode. ↵Vivanov982023-01-291-2/+13
| | | | | (#2568) Co-authored-by: Viktor Ivanov <viktor@infogrid.io>
* Fix unlink in cluster pipeline (#2562)gmbnomis2023-01-291-0/+11
| | | | Implement unlink() like delete() to make it work when used in a cluster pipeline.
* Simplify the sync SocketBuffer, add type hints (#2543)Kristján Valur Jónsson2023-01-221-39/+44
|
* Add missing `Union` type in method `StreamCommands.xclaim()` (#2553)David Pacsuta2023-01-221-1/+1
| | | | `Union` was missing in front of `[List[StreamIdT], Tuple[StreamIdT]]` and VSCode was producing an error because of it. After adding `Union` the type annotation is correctly identified by VSCode.
* Add support to BF.CARD (#2545)shacharPash2023-01-112-0/+10
| | | | | | | * Add support to BF.CARD * Add Async test * change to with pytest.raises
* add support for custom connection pool class in NodesManager (#2547)Dongkeun Lee2023-01-111-1/+4
| | | Co-authored-by: zach.lee <zach.lee@sendbird.com>
* allow replica to master promotion in nodes_cache (#2549)Dongkeun Lee2023-01-111-0/+2
| | | Co-authored-by: zach.lee <zach.lee@sendbird.com>
* String cleanse (#2548)Jan2023-01-111-0/+1
| | | | | | | * Fixed string escape and added tests * Add Change * Name change
* add type checking for graph __eq__ (#2531)dvora-h2023-01-083-0/+12
|
* ValueError must be AttributeError in __init__.py (#2542)SessionIssue2023-01-081-1/+1
| | | | | | | | | * Revert "Update __init__ for issue 2215 (#2539)" This reverts commit f14ed1fc822a88a21bbfc64e36bf8b09e5c9386c. * Update __init__.py ValueError must be AttributeError ofc.
* Make PythonParser resumable (#2510)Kristján Valur Jónsson2023-01-052-34/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | * PythonParser is now resumable if _stream IO is interrupted * Add test for parse resumability * Clear PythonParser state when connection or parsing errors occur. * disable test for cluster mode. * Perform "closed" check in a single place. * Update tests * Simplify code. * Remove reduntant test, EOF is detected inside _readline() * Make syncronous PythonParser restartable on error, same as HiredisParser Fix sync PythonParser * Add CHANGES * isort * Move MockStream and MockSocket into their own files