使用Riak CRDT和bitcask后端

Aar*_*ron 2 erlang nosql riak crdt

我在配置CRDT桶类型和使用bitcask后端时遇到问题.我希望能够使用set类型并保持bitcask的到期功能.

如果我没有指定后端,我可以创建和使用桶类型

sudo riak-admin bucket-type create sets '{"props":{"datatype":"set"}}'
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在道具中指定后端,每当我尝试使用该类型时,riak似乎崩溃了,我失去了联系.

sudo riak-admin bucket-type create sets2 '{"props":{"datatype":"set","backend":"bitcask"}}'
Run Code Online (Sandbox Code Playgroud)

以下是我尝试使用存储桶类型时error.log中的唯一日志.如果它有帮助我也尝试指定后端是leveldb和内存以及bitcask没有运气.

2016-10-13 13:41:25.965 [错误] <0.8870.0> gen_fsm <0.8870.0>状态有效终止,原因是:在riak_core_vnode中没有匹配{riak_kv_multi_backend,undefined_backend,<<"bitcask">>}的case子句:vnode_command/3 line 346 2016-10-13 13:41:25.965 [error] <0.8870.0> CRASH REPORT进程<0.8870.0>退出1个邻居,原因是:没有case子句匹配{riak_kv_multi_backend,undefined_backend,<< riak_core_vnode中的"bitcask">>}:gen_fsm中的vnode_command/3行346:终止/ 7行622 2016-10-13 13:41:25.965 [错误] <0.168.0>主管riak_core_vnode_sup以{riak_core_vnode开头的子项未定义start_link,undefined} at <0.8870.0>退出,原因是没有case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,<<"bitcask">>}:vnode_command/3 line 346 in context child_terminated 2016-10-13 13:41: 25.965 [错误] <0.8896.0> gen_fsm <0.8896.0>处于状态就绪已终止,原因是:没有case子句匹配{riak_kv_multi_backend,undefined_backend,<<"bitcask" >>} in riak_core_vnode:vnode_command/3 line 346 2016-10-13 13:41:25.965 [error] <0.8896.0> CRASH REPORT进程<0.8896.0>退出10个邻居,原因是:没有case子句匹配{riak_kv_multi_backend ,undefined_backend,<<"bitcask">>} in riak_core_vnode:vnode_command/3 line 346 in gen_fsm:terminate/7 line 622 2016-10-13 13:41:25.966 [error] <0.8897.0> Supervisor {<0.8897. 0>,poolboy_sup}让孩子riak_core_vnode_worker以riak_core_vnode_worker:start_link([{worker_module,riak_core_vnode_worker},{worker_args,[1370157784997721485815954530671515330927436759040,...]},...])在未定义的出口处启动,原因是没有case子句匹配{riak_kv_multi_backend, undefined_backend,<<"bitcask">>}在riak_core_vnode中:vnode_command/3行346在上下文中shutdown_error 2016-10-13 13:41:25.966 [错误] <0.8897.0> gen_server <0.8897.0>因原因终止:否case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,<<"bitcask">>}:vnode_command/3 line 346 2016-10-13 13:41:25.966 [错误] <0.8897.0> CRASH REPORT进程<0.8897.0>退出0个邻居,原因是:在riak_core_vnode中没有case子句匹配{riak_kv_multi_backend,undefined_backend,<<"bitcask">>}:vnode_command/3 line gen_server中的346:终止/ 6行744

我正在使用Riak v2.0.7 LTS

小智 5

当Riak找不到您在配置中为该存储桶类型定义的后端的名称时,会发生此错误.使用多个后端时,需要在创建存储桶类型时使用配置中定义的名称.

所以让我们说使用riak文档中的示例配置:

storage_backend = multi multi_backend.bitcask_mult.storage_backend = bitcask

要为bitcask创建存储桶,您应该使用bitcask_mult作为后端名称:

sudo riak-admin bucket-type create sets2 '{"props":{"datatype":"set","backend":"bitcask_mult"}}'

希望有所帮助