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 шт):
И так, спустя долгое время я узнал, что клиент 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.