From 35abb6191d230311c905ca25a0e6c5073e6bc9be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samuel=20=C5=A0tancl?= Date: Wed, 24 Apr 2019 16:53:43 +0200 Subject: [PATCH] Fix Redis scan for 5.8 (#46) * Fix Redis scan for 5.8 * Add comments [ci skip] --- src/StorageDrivers/RedisStorageDriver.php | 11 +++++++++-- src/TenantManager.php | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/StorageDrivers/RedisStorageDriver.php b/src/StorageDrivers/RedisStorageDriver.php index bb24550c..699950e6 100644 --- a/src/StorageDrivers/RedisStorageDriver.php +++ b/src/StorageDrivers/RedisStorageDriver.php @@ -71,9 +71,16 @@ class RedisStorageDriver implements StorageDriver return "tenants:{$hash}"; }, $uuids); - $hashes = $hashes ?: $this->redis->scan(null, 'tenants:*'); + // Apparently, the PREFIX is applied to all functions except scan() + $redis_prefix = $this->redis->getOption($this->redis->client()::OPT_PREFIX); + $hashes = $hashes ?: $this->redis->scan(null, $redis_prefix.'tenants:*'); + + return array_map(function ($tenant) use ($redis_prefix) { + // Left strip $redis_prefix from $tenant + if (substr($tenant, 0, strlen($redis_prefix)) == $redis_prefix) { + $tenant = substr($tenant, strlen($redis_prefix)); + } - return array_map(function ($tenant) { return $this->redis->hgetall($tenant); }, $hashes); } diff --git a/src/TenantManager.php b/src/TenantManager.php index 254eaa9d..1e105c1f 100644 --- a/src/TenantManager.php +++ b/src/TenantManager.php @@ -202,7 +202,7 @@ class TenantManager */ public function all($uuids = []) { - $uuid = (array) $uuids; + $uuids = (array) $uuids; return collect(array_map(function ($tenant_array) { return $this->jsonDecodeArrayValues($tenant_array);