/** * @param \Neoxygen\NeoClient\Event\HttpClientPreSendRequestEvent $event */ public function onPreHttpRequestSend(HttpClientPreSendRequestEvent $event) { $conn = $event->getRequest()->getConnection(); $request = $event->getRequest(); $mode = $request->hasQueryMode() ? $request->getQueryMode() : 'ASSUMED WRITE'; $this->logger->log('debug', sprintf('Sending "%s" request to the "%s" connection', $mode, $conn)); }
public function onPreSend(HttpClientPreSendRequestEvent $event) { $request = $event->getRequest(); $conn = $request->getConnection(); if (isset($this->fails[$conn]) && $this->fails[$conn] >= 5) { if ($request->hasQueryMode()) { if ($request->getQueryMode() === 'READ') { if ($this->connectionManager->hasNextSlave([$conn])) { $next = $this->connectionManager->getNextSlave([$conn]); $request->setInfoFromConnection($this->connectionManager->getConnection($next)); } } } } }
public function onPreSend(HttpClientPreSendRequestEvent $event) { $request = $event->getRequest(); $conn = $request->getConnection(); if (isset($this->fails[$conn]) && $this->fails[$conn] >= 5) { if ($request->hasQueryMode()) { if ($request->getQueryMode() === 'READ') { if ($this->connectionManager->hasNextSlave([$conn])) { $next = $this->connectionManager->getNextSlave([$conn]); $this->setHaPrimarySlave($next); $request->setInfoFromConnection($this->connectionManager->getConnection($next)); } } } } if (null !== $this->masterWriteFails && $request->getQueryMode() == 'WRITE' && $this->masterWriteFails >= 5) { if (null !== $this->newMasterDetected) { $this->setHaNewMaster($this->newMasterDetected); $conn = $this->connectionManager->getConnection($this->newMasterDetected); Client::log('debug', sprintf('Automatic Write connection change after 5 write failures on Master. Changing to the "%s" connection', $this->newMasterDetected)); $request->setInfoFromConnection($conn); } } }
/** * Add specific headers to the Request object for helping HA proxies to determine if it is a read or write query. * * @param \Neoxygen\NeoClient\Event\HttpClientPreSendRequestEvent $event */ public function onPreSendHAHeaders(HttpClientPreSendRequestEvent $event) { if ($event->getRequest()->getQueryMode() == 'WRITE') { $event->getRequest()->setHeader($this->queryModeHeaderName, $this->queryModeWriteQueryHeaderValue); } elseif ($event->getRequest()->getQueryMode() == 'READ') { $event->getRequest()->setHeader($this->queryModeHeaderName, $this->queryModeReadQueryHeaderValue); } }