From 87df92decbfc7a420b35985e51ed1b97a7b1dd56 Mon Sep 17 00:00:00 2001 From: Deeka Wong <8337659+huangdijia@users.noreply.github.com> Date: Fri, 21 Aug 2026 08:58:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(sentry):=20=E5=85=BC=E5=AE=B9=E6=97=A0?= =?UTF-8?q?=E6=95=88=E7=9A=84=20Redis=20=E9=9B=86=E7=BE=A4=E6=A7=BD?= =?UTF-8?q?=E4=BD=8D=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将非数组槽位响应安全归一为空列表 - 跳过结构不完整的槽位范围,避免解构异常 --- src/sentry/src/Tracing/Aspect/RedisConnectionAspect.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sentry/src/Tracing/Aspect/RedisConnectionAspect.php b/src/sentry/src/Tracing/Aspect/RedisConnectionAspect.php index 9af76674c..d2e085e74 100644 --- a/src/sentry/src/Tracing/Aspect/RedisConnectionAspect.php +++ b/src/sentry/src/Tracing/Aspect/RedisConnectionAspect.php @@ -66,14 +66,15 @@ public function process(ProceedingJoinPoint $proceedingJoinPoint) private function getClusterNodeBySlot(RedisCluster $rc, string $key) { - // $slot = $rc->cluster('CLUSTER', 'KEYSLOT', $key); $slot = RedisClusterKeySlot::get($key); - $slots = ($this->slotNodeCache[$rc] ??= $rc->cluster('CLUSTER', 'SLOTS')); // @phpstan-ignore-line + $slots = (array) ($this->slotNodeCache[$rc] ??= $rc->cluster('CLUSTER', 'SLOTS')); // @phpstan-ignore-line foreach ($slots as $range) { + if (! is_array($range) || count($range) < 3) { + continue; + } [$start, $end, $master] = $range; if ($slot >= $start && $slot <= $end) { - // $master = [host, port, nodeId] return [ 'host' => $master[0], 'port' => $master[1],