Closed AidynMakhataev closed 5 years ago
Эта ошибка означает, что клиент получил ответ от сервера, но не на тот запрос, который он отправлял. Так может случиться, например, когда у вас персистентное соединение, клиент шлет запрос, не успевает вычитать ответ и умирает. В следующий раз он снова шлет запрос, но сервер ему вернет ответ, который он не успел вычитать в предыдущий раз. В этом случае выбросится исключение UnexpectedResponse
. В вашем случае, возможно, причина в таймауте (о чем косвенно свидетельствует too long WAL write
в логе тарантула). Если клиент не успел вычитать ответ за определенное таймаутом время, и если вы используете RetryMiddlewere
, клиент попытается повторить запрос и, опять же, получит предыдущий, не отправленный в прошлый раз ответ от сервера. В версиях клиента < 0.6 такие ошибки не всплывали потому, что проверки на соответствие ответа запросу просто не было.
Я подозреваю, что если вы решите проблему с too long WAL write
, эти ошибки тоже уйдут. Чтобы проверить мою догадку, попробуйте временно отключить RetryMiddlewere
— вы должны увидеть CommunicationFailed
исключения вместо UnexpectedResponse
, в этом случае увеличьте значение socket_timeout
.
Спасибо за развернутый ответ, проблема решилась исправлением ошибки
too long WAL write
Мы недавно обновили версию tarantool до 2.2 и также обновили php-client до 0.6. После этого апдейта периодически начали всплывать такие ошибки. Можете, пожалуйста, помочь с этим вопросом, так и не разобрались из за чего она. В клиентском коде, идет проверка на существование записи а потом непосредственно сама запись в базу.
Настройки инстанса тарантула
в логах тарантула