Как решить Aerospike :: Исключения :: Aerospike: Неподдерживаемая функция сервера для клиента Ruby? - PullRequest
0 голосов
/ 12 сентября 2018

При попытке записать в аэроспайк с помощью клиента ruby ​​я получаю следующее исключение: -

Aerospike :: Исключения :: Aerospike: неподдерживаемая функция сервера

Подробности: -

Aerospike version:- 4.3
Client: [Ruby] aerospike - 2.4.0
namespaces: NS1, NS2, NS3 

Примечание: NS2 и NS3 имеют единый двоичный код true true-data-in-index true

Код (который вызывает исключение): -

client = Aerospike::Client.new('aerospike:3000')
key = Aerospike::Key.new('NS2', 'set name', 'this is the key')
data = { 'record'  => 1 }
client.put(key, data) # this line raises the exception
Aerospike::Exceptions::Aerospike: Unsupported Server Feature

Исключение составляетне поднимается, если я изменяю NS2 в ключе на NS1.

1 Ответ

0 голосов
/ 13 сентября 2018

Ошибка «Неподдерживаемая функция сервера» возникает из-за того, что клиент Ruby отправляет ключ пользователя на сервер по умолчанию, но сервер Aerospike не поддерживает сохранение ключа пользователя для данных в памяти и одноразовых данных. настройка бина. Вы должны увидеть сообщение об ошибке, подобное этому, в журналах вашего сервера:

Sep 13 2018 02:42:20 GMT: WARNING (rw): (rw_utils.c:153) {sbin} can't store key if data-in-memory & single-bin

Вам необходимо отключить отправку ключа как часть запроса на установку, установив для send_key политики записи значение false:

$ bundle exec irb
2.5.0 :001 > require 'aerospike'; include Aerospike;
 => Object
2.5.0 :002 > client = Client.new; key = Key.new('sbin', 'test', 'foo'); nil
 => nil
2.5.0 :003 > client.put(key, Bin.new('', 42), send_key: false)
 => nil
2.5.0 :004 > client.get(key).bins['']
 => 42
...