AEROSPIKE_ERR = -1

Интересует в большей степени чем вызывается ошибка AEROSPIKE_ERR = -1 (из-за чего при каких условиях), пути решения не так важны. Докер не используется. Ошибка появляется редко, пытаюсь понять из-за чего. Небольшой код в котором (мне так кажется) эта ошибка может появляться

public function aeroDBGet($ns, $set, $bin, $primaryKey, $readtimeout = 2000, $retries = 5, $sleep_retries = 500) {

    

    $atimeout = $readtimeout;
    for ($attempts = 0; $attempts < 10; $attempts++) {
        if (!empty($set) && !empty($bin) && !empty($primaryKey)) {
            Logger::add_msg("INFO: DBF: [". FUNCTION . "]: attempt = " . $attempts);
            Logger::add_msg("INFO: DBF: [". FUNCTION . "]: set, bin, primaryKey not empty");

            $options = [
                \Aerospike::OPT_READ_TIMEOUT            => $atimeout,
                \Aerospike::OPT_MAX_RETRIES             => $retries,
                \Aerospike::OPT_SLEEP_BETWEEN_RETRIES   => $sleep_retries
            ];

            $key    = self::$adb->initKey($ns, $set, $primaryKey);
            $status = self::$adb->get($key, $answ_data,bin, $options); 
            if ($status == \Aerospike::OK) {
                // Все ок, прочитали
                //Logger::add_msg("INFO: DBF: [". FUNCTION . "]: все ок aeroget_v40");
                return var_dump($answ_data);
            } elseif ($status == \Aerospike::ERR_RECORD_NOT_FOUND) {
                // Запись не найдена
                Logger::add_msg("INFO: DBF: [". FUNCTION . "]: AeroStatusNotFound = " . $status);
                return false;
            } elseif ((self::$adb->errorno() == -1) OR (!self::$adb->isConnected())) {
                Logger::add_msg("INFO: DBF: [". FUNCTION . "]: AeroStatusMinusOne = " . $status);
                // Надо переподключиться
                self::$adb->reconnect();    
                $_db = AeroDBF::getInstance()->get_aero_reconnect();
                echo self::$adb->error() . " " . self::$adb->errorno();
            } else {
                // Не удалось прочитать
                Logger::add_msg("INFO: DBF: [". FUNCTION . "]: AeroStatusOther = " . $status);
                return false;
            }
            $atimeout = $atimeout + 2000;
        }
    }
}

Буду благодарен всем помогающим и сочувствующим.


Ответы (1 шт):

Автор решения: he1pmep1ease

И так, спустя долгое время я узнал, что клиент PHP для aerospike выдает ошибку -1, когда теряет соединение с узлом базы данных и не успевает переподключиться, т.е. коннект пропал, PHP клиент пытается подключиться - ловит ошибку -1. Помогает ожидание в 1 секунду.

So, after a long time, I found out that the PHP client for aerospike gives an error -1 when it loses connection to the database node and does not have time to reconnect, I mean the connection is lost, the PHP client tries to connect - catches an error -1. Waiting for 1 second helps.

→ Ссылка