Jelajahi Sumber

Don't send AUTH and/or SELECT command after connecting to sentinels

Pascal Hofmann 8 tahun lalu
induk
melakukan
d92f31dc66

+ 4 - 3
src/Connection/Aggregate/SentinelReplication.php

@@ -239,9 +239,10 @@ class SentinelReplication implements ReplicationInterface
         }
 
         if (is_array($parameters)) {
-            // We unset "password" and "database" from user-supplied parameters
-            // as they are not needed when connecting to sentinels.
-            unset($parameters['database'], $parameters['password']);
+            // We explicitly set "database" and "password" to null,
+            // so that no AUTH and SELECT command is send to the sentinels.
+            $parameters['database'] = null;
+            $parameters['password'] = null;
 
             if (!isset($parameters['timeout'])) {
                 $parameters['timeout'] = $this->sentinelTimeout;

+ 1 - 2
tests/Predis/Connection/Aggregate/SentinelReplicationTest.php

@@ -44,8 +44,7 @@ class SentinelReplicationTest extends PredisTestCase
 
         $parameters = $replication->getSentinelConnection()->getParameters()->toArray();
 
-        $this->assertArrayNotHasKey('password', $parameters);
-        $this->assertArrayNotHasKey('database', $parameters);
+        $this->assertArraySubset(array('database' => null, 'password' => null), $parameters);
     }
 
     /**