2025-12-01
This commit is contained in:
+9
-1
@@ -41,13 +41,21 @@ def patch_redis_async_pipeline(
|
||||
origin=SPAN_ORIGIN,
|
||||
) as span:
|
||||
with capture_internal_exceptions():
|
||||
try:
|
||||
command_seq = self._execution_strategy._command_queue
|
||||
except AttributeError:
|
||||
if is_cluster:
|
||||
command_seq = self._command_stack
|
||||
else:
|
||||
command_seq = self.command_stack
|
||||
|
||||
set_db_data_fn(span, self)
|
||||
_set_pipeline_data(
|
||||
span,
|
||||
is_cluster,
|
||||
get_command_args_fn,
|
||||
False if is_cluster else self.is_transaction,
|
||||
self._command_stack if is_cluster else self.command_stack,
|
||||
command_seq,
|
||||
)
|
||||
|
||||
return await old_execute(self, *args, **kwargs)
|
||||
|
||||
+7
-1
@@ -42,13 +42,19 @@ def patch_redis_pipeline(
|
||||
origin=SPAN_ORIGIN,
|
||||
) as span:
|
||||
with capture_internal_exceptions():
|
||||
command_seq = None
|
||||
try:
|
||||
command_seq = self._execution_strategy.command_queue
|
||||
except AttributeError:
|
||||
command_seq = self.command_stack
|
||||
|
||||
set_db_data_fn(span, self)
|
||||
_set_pipeline_data(
|
||||
span,
|
||||
is_cluster,
|
||||
get_command_args_fn,
|
||||
False if is_cluster else self.transaction,
|
||||
self.command_stack,
|
||||
command_seq,
|
||||
)
|
||||
|
||||
return old_execute(self, *args, **kwargs)
|
||||
|
||||
+11
-3
@@ -36,11 +36,19 @@ def _set_async_cluster_db_data(span, async_redis_cluster_instance):
|
||||
def _set_async_cluster_pipeline_db_data(span, async_redis_cluster_pipeline_instance):
|
||||
# type: (Span, AsyncClusterPipeline[Any]) -> None
|
||||
with capture_internal_exceptions():
|
||||
client = getattr(async_redis_cluster_pipeline_instance, "cluster_client", None)
|
||||
if client is None:
|
||||
# In older redis-py versions, the AsyncClusterPipeline had a `_client`
|
||||
# attr but it is private so potentially problematic and mypy does not
|
||||
# recognize it - see
|
||||
# https://github.com/redis/redis-py/blame/v5.0.0/redis/asyncio/cluster.py#L1386
|
||||
client = (
|
||||
async_redis_cluster_pipeline_instance._client # type: ignore[attr-defined]
|
||||
)
|
||||
|
||||
_set_async_cluster_db_data(
|
||||
span,
|
||||
# the AsyncClusterPipeline has always had a `_client` attr but it is private so potentially problematic and mypy
|
||||
# does not recognize it - see https://github.com/redis/redis-py/blame/v5.0.0/redis/asyncio/cluster.py#L1386
|
||||
async_redis_cluster_pipeline_instance._client, # type: ignore[attr-defined]
|
||||
client,
|
||||
)
|
||||
|
||||
|
||||
|
||||
+11
-7
@@ -20,12 +20,13 @@ def _get_safe_command(name, args):
|
||||
# type: (str, Sequence[Any]) -> str
|
||||
command_parts = [name]
|
||||
|
||||
name_low = name.lower()
|
||||
send_default_pii = should_send_default_pii()
|
||||
|
||||
for i, arg in enumerate(args):
|
||||
if i > _MAX_NUM_ARGS:
|
||||
break
|
||||
|
||||
name_low = name.lower()
|
||||
|
||||
if name_low in _COMMANDS_INCLUDING_SENSITIVE_DATA:
|
||||
command_parts.append(SENSITIVE_DATA_SUBSTITUTE)
|
||||
continue
|
||||
@@ -33,9 +34,8 @@ def _get_safe_command(name, args):
|
||||
arg_is_the_key = i == 0
|
||||
if arg_is_the_key:
|
||||
command_parts.append(repr(arg))
|
||||
|
||||
else:
|
||||
if should_send_default_pii():
|
||||
if send_default_pii:
|
||||
command_parts.append(repr(arg))
|
||||
else:
|
||||
command_parts.append(SENSITIVE_DATA_SUBSTITUTE)
|
||||
@@ -106,14 +106,18 @@ def _parse_rediscluster_command(command):
|
||||
|
||||
|
||||
def _set_pipeline_data(
|
||||
span, is_cluster, get_command_args_fn, is_transaction, command_stack
|
||||
span,
|
||||
is_cluster,
|
||||
get_command_args_fn,
|
||||
is_transaction,
|
||||
commands_seq,
|
||||
):
|
||||
# type: (Span, bool, Any, bool, Sequence[Any]) -> None
|
||||
span.set_tag("redis.is_cluster", is_cluster)
|
||||
span.set_tag("redis.transaction", is_transaction)
|
||||
|
||||
commands = []
|
||||
for i, arg in enumerate(command_stack):
|
||||
for i, arg in enumerate(commands_seq):
|
||||
if i >= _MAX_NUM_COMMANDS:
|
||||
break
|
||||
|
||||
@@ -123,7 +127,7 @@ def _set_pipeline_data(
|
||||
span.set_data(
|
||||
"redis.commands",
|
||||
{
|
||||
"count": len(command_stack),
|
||||
"count": len(commands_seq),
|
||||
"first_ten": commands,
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user