diff --git a/src/Instrumentation/Laravel/src/Watchers/RedisCommand/Serializer.php b/src/Instrumentation/Laravel/src/Watchers/RedisCommand/Serializer.php index 9e76f7ce3..a64c40813 100644 --- a/src/Instrumentation/Laravel/src/Watchers/RedisCommand/Serializer.php +++ b/src/Instrumentation/Laravel/src/Watchers/RedisCommand/Serializer.php @@ -69,6 +69,9 @@ public static function serializeCommand(string $command, array $params): string $paramsToSerialize[] = '[' . (count($params) - $paramsToSerializeNum) . ' other arguments]'; } + // In some cases (for example when using LUA scripts) arrays are valid parameters + $paramsToSerialize = array_map(function($param) { return is_array($param) ? json_encode($param) : $param; }, $paramsToSerialize); + return $command . ' ' . implode(' ', $paramsToSerialize); } } diff --git a/src/Instrumentation/Laravel/tests/Unit/Watches/RedisCommand/SerializerTest.php b/src/Instrumentation/Laravel/tests/Unit/Watches/RedisCommand/SerializerTest.php index 69c831f34..3749f65e2 100644 --- a/src/Instrumentation/Laravel/tests/Unit/Watches/RedisCommand/SerializerTest.php +++ b/src/Instrumentation/Laravel/tests/Unit/Watches/RedisCommand/SerializerTest.php @@ -31,5 +31,8 @@ public function serializeCases(): iterable // Serialize all params yield ['DEL', ['param1', 'param2', 'param3', 'param4'], 'DEL param1 param2 param3 param4']; + + // Parameters of array type + yield ['EVAL', ['param1', 'param2', ['arg1', 'arg2']], 'EVAL param1 param2 ["arg1","arg2"]']; } }