redis 6.1.0__tar.gz → 6.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {redis-6.1.0 → redis-6.1.1}/PKG-INFO +1 -1
- {redis-6.1.0 → redis-6.1.1}/redis/__init__.py +1 -1
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/connection.py +1 -1
- {redis-6.1.0 → redis-6.1.1}/redis/client.py +5 -0
- {redis-6.1.0 → redis-6.1.1}/redis/cluster.py +3 -3
- {redis-6.1.0 → redis-6.1.1}/redis/connection.py +11 -3
- {redis-6.1.0 → redis-6.1.1}/.gitignore +0 -0
- {redis-6.1.0 → redis-6.1.1}/LICENSE +0 -0
- {redis-6.1.0 → redis-6.1.1}/README.md +0 -0
- {redis-6.1.0 → redis-6.1.1}/dev_requirements.txt +0 -0
- {redis-6.1.0 → redis-6.1.1}/pyproject.toml +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/base.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/encoders.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/helpers.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/hiredis.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/resp2.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/resp3.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/_parsers/socket.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/client.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/cluster.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/lock.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/retry.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/sentinel.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/asyncio/utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/auth/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/auth/err.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/auth/idp.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/auth/token.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/auth/token_manager.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/backoff.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/cache.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/bf/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/bf/commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/bf/info.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/cluster.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/core.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/helpers.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/json/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/json/_util.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/json/commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/json/decoders.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/json/path.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/redismodules.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/_util.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/aggregation.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/dialect.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/document.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/field.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/index_definition.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/profile_information.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/query.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/querystring.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/reducers.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/result.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/search/suggestion.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/sentinel.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/info.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/timeseries/utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/vectorset/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/vectorset/commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/commands/vectorset/utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/crc.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/credentials.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/event.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/exceptions.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/lock.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/ocsp.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/py.typed +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/retry.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/sentinel.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/typing.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/redis/utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/conftest.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/entraid_utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/mocks.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/ssl_utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/compat.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/conftest.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/mocks.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_bloom.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_cluster.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_connect.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_connection.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_connection_pool.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_credentials.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_cwe_404.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_encoding.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_hash.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_json.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_lock.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_monitor.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_pipeline.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_pubsub.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_retry.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_scripting.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_search.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_sentinel.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_sentinel_managed_connection.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_ssl.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_timeseries.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/test_vsets.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/testdata/jsontestdata.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/testdata/titles.csv +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_asyncio/testdata/will_play_text.csv.bz2 +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_auth/__init__.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_auth/test_token.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_auth/test_token_manager.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_backoff.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_bloom.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_cache.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_cluster.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_cluster_transaction.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_command_parser.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_commands.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_connect.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_connection.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_connection_pool.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_credentials.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_encoding.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_function.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_hash.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_helpers.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_json.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_lock.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_monitor.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_multiprocessing.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_parsers/test_helpers.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_pipeline.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_pubsub.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_retry.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_scripting.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_search.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_sentinel.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_ssl.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_timeseries.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_utils.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/test_vsets.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/testdata/jsontestdata.py +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/testdata/titles.csv +0 -0
- {redis-6.1.0 → redis-6.1.1}/tests/testdata/will_play_text.csv.bz2 +0 -0
|
@@ -868,7 +868,7 @@ class RedisSSLContext:
|
|
|
868
868
|
cert_reqs: Optional[Union[str, ssl.VerifyMode]] = None,
|
|
869
869
|
ca_certs: Optional[str] = None,
|
|
870
870
|
ca_data: Optional[str] = None,
|
|
871
|
-
check_hostname: bool =
|
|
871
|
+
check_hostname: bool = False,
|
|
872
872
|
min_version: Optional[TLSVersion] = None,
|
|
873
873
|
ciphers: Optional[str] = None,
|
|
874
874
|
):
|
|
@@ -369,6 +369,8 @@ class Redis(RedisModuleCommands, CoreCommands, SentinelCommands):
|
|
|
369
369
|
]:
|
|
370
370
|
raise RedisError("Client caching is only supported with RESP version 3")
|
|
371
371
|
|
|
372
|
+
# TODO: To avoid breaking changes during the bug fix, we have to keep non-reentrant lock.
|
|
373
|
+
# TODO: Remove this before next major version (7.0.0)
|
|
372
374
|
self.single_connection_lock = threading.Lock()
|
|
373
375
|
self.connection = None
|
|
374
376
|
self._single_connection_client = single_connection_client
|
|
@@ -774,6 +776,9 @@ class PubSub:
|
|
|
774
776
|
self._event_dispatcher = EventDispatcher()
|
|
775
777
|
else:
|
|
776
778
|
self._event_dispatcher = event_dispatcher
|
|
779
|
+
|
|
780
|
+
# TODO: To avoid breaking changes during the bug fix, we have to keep non-reentrant lock.
|
|
781
|
+
# TODO: Remove this before next major version (7.0.0)
|
|
777
782
|
self._lock = threading.Lock()
|
|
778
783
|
if self.encoder is None:
|
|
779
784
|
self.encoder = self.connection_pool.get_encoder()
|
|
@@ -710,7 +710,7 @@ class RedisCluster(AbstractRedisCluster, RedisClusterCommands):
|
|
|
710
710
|
self.result_callbacks = CaseInsensitiveDict(self.__class__.RESULT_CALLBACKS)
|
|
711
711
|
|
|
712
712
|
self.commands_parser = CommandsParser(self)
|
|
713
|
-
self._lock = threading.
|
|
713
|
+
self._lock = threading.RLock()
|
|
714
714
|
|
|
715
715
|
def __enter__(self):
|
|
716
716
|
return self
|
|
@@ -1474,7 +1474,7 @@ class NodesManager:
|
|
|
1474
1474
|
self.connection_kwargs = kwargs
|
|
1475
1475
|
self.read_load_balancer = LoadBalancer()
|
|
1476
1476
|
if lock is None:
|
|
1477
|
-
lock = threading.
|
|
1477
|
+
lock = threading.RLock()
|
|
1478
1478
|
self._lock = lock
|
|
1479
1479
|
if event_dispatcher is None:
|
|
1480
1480
|
self._event_dispatcher = EventDispatcher()
|
|
@@ -2178,7 +2178,7 @@ class ClusterPipeline(RedisCluster):
|
|
|
2178
2178
|
kwargs.get("decode_responses", False),
|
|
2179
2179
|
)
|
|
2180
2180
|
if lock is None:
|
|
2181
|
-
lock = threading.
|
|
2181
|
+
lock = threading.RLock()
|
|
2182
2182
|
self._lock = lock
|
|
2183
2183
|
self.parent_execute_command = super().execute_command
|
|
2184
2184
|
self._execution_strategy: ExecutionStrategy = (
|
|
@@ -820,7 +820,7 @@ class CacheProxyConnection(ConnectionInterface):
|
|
|
820
820
|
self.credential_provider = conn.credential_provider
|
|
821
821
|
self._pool_lock = pool_lock
|
|
822
822
|
self._cache = cache
|
|
823
|
-
self._cache_lock = threading.
|
|
823
|
+
self._cache_lock = threading.RLock()
|
|
824
824
|
self._current_command_cache_key = None
|
|
825
825
|
self._current_options = None
|
|
826
826
|
self.register_connect_callback(self._enable_tracking_callback)
|
|
@@ -1420,8 +1420,16 @@ class ConnectionPool:
|
|
|
1420
1420
|
# object of this pool. subsequent threads acquiring this lock
|
|
1421
1421
|
# will notice the first thread already did the work and simply
|
|
1422
1422
|
# release the lock.
|
|
1423
|
-
|
|
1424
|
-
self.
|
|
1423
|
+
|
|
1424
|
+
self._fork_lock = threading.RLock()
|
|
1425
|
+
|
|
1426
|
+
if self.cache is None:
|
|
1427
|
+
self._lock = threading.RLock()
|
|
1428
|
+
else:
|
|
1429
|
+
# TODO: To avoid breaking changes during the bug fix, we have to keep non-reentrant lock.
|
|
1430
|
+
# TODO: Remove this before next major version (7.0.0)
|
|
1431
|
+
self._lock = threading.Lock()
|
|
1432
|
+
|
|
1425
1433
|
self.reset()
|
|
1426
1434
|
|
|
1427
1435
|
def __repr__(self) -> (str, str):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|