Aerospike Query Error

    query = CLIENT.query(NAMESPACE, SET);
    stream = query.foreach();
    /*
        Get list of all avialable keys
    */
    stream.on('error', (error) => {
        throw error;
    });

    stream.on('data', (record) => {
        console.info('data', record);
        console.info('key', record.key.key);
    });

    stream.on('end', () => {
        console.log('done!');
        process.exit(0);
    });

Ошибка получения - AerospikeError: Запись не существует в базе данных. Может быть возвращено путем чтения или записи с политикой Aerospike.policy.exists.UPDATE.

error encountered in promise chain => { [AerospikeError: Record does not exist in database. May be returned by read, or write with policy Aerospike.policy.exists.UPDATE]
  name: 'AerospikeError',
  code: 2,
  command:
   QueryCommand {
     client:
      Client {
        domain: null,
        _events: {},
        _eventsCount: 0,
        _maxListeners: undefined,
        config: [Object],
        as_client: AerospikeClient {},
        connected: true,
        captureStackTraces: false },
     args: [ 'sms_data', 'some_set', [Object], undefined ],
     captureStackTraces: false,
     key: undefined,
     stream:
      RecordStream {
        aborted: false,
        client: [Object],
        _events: [Object],
        _eventsCount: 3 } },
  func: 'as_query_parse_records_async',
  file: 'src/main/aerospike/aerospike_query.c',
  line: 237,
  inDoubt: false }

Хотя данные присутствуют в пространстве имен и установлены.

результат запроса:

aql> select * from sms_data.some_set;
+-----------------------------------------------------+----------+
| 0                                                   | name     |
+-----------------------------------------------------+----------+
| MAP('{"dummy":[{"x":"dgjasgdj"}], "name":"Vidur"}') | "Khanna" |
+-----------------------------------------------------+----------+

1 ответ

Решение

Это ошибка в клиенте Aerospike Node.js (все версии до v3.2.0 включительно). Краткая версия заключается в том, что это происходит в операциях с запросами, если хотя бы у одного серверного узла в кластере нет записей в наборе, который вы запрашиваете. Подробности смотрите в выпуске № 253 на GitHub. Это должно быть решено в следующей версии клиента.

Другие вопросы по тегам