使用Riak CRDT和bitcask后端

时间:2016-10-13 12:51:44

标签: erlang riak crdt nosql

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

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

sudo riak-admin bucket-type create sets '{"props":{"datatype":"set"}}'

但是如果我试图在道具中指定一个后端,那么每当我尝试使用该类型时,riak似乎就会崩溃而且我失去了联系。

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

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

  

2016-10-13 13:41:25.965 [错误]&lt; 0.8870.0&gt; gen_fsm&lt; 0.8870.0&gt;处于状态的活动因原因而终止:没有case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:vnode_command / 3 line 346   2016-10-13 13:41:25.965 [错误]&lt; 0.8870.0&gt;崩溃报告过程&lt; 0.8870.0&gt;有1个邻居退出的原因:没有case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:gen_fsm中的vnode_command / 3行346:terminate / 7 line 622   2016-10-13 13:41:25.965 [错误]&lt; 0.168.0&gt;主管riak_core_vnode_sup的孩子未定义以{riak_core_vnode,start_link,undefined}开头,在&lt; 0.8870.0&gt;退出,原因是没有case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:vnode_command / 3行346中的上下文child_terminated   2016-10-13 13:41:25.965 [错误]&lt; 0.8896.0&gt; gen_fsm&lt; 0.8896.0&gt;处于状态就绪已终止且原因是:在riak_core_vnode中没有case子句匹配{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:vnode_command / 3 line 346   2016-10-13 13:41:25.965 [错误]&lt; 0.8896.0&gt;崩溃报告过程&lt; 0.8896.0&gt;退出的原因有10个邻居:没有case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:gen_fsm中的vnode_command / 3行346:terminate / 7 line 622   2016-10-13 13:41:25.966 [错误]&lt; 0.8897.0&gt;主管{&lt; 0.8897.0&gt;,poolboy_sup}让孩子riak_core_vnode_worker以riak_core_vnode_worker:start_link([{worker_module,riak_core_vnode_worker},{worker_args,[1370157784997721485815954530671515330927436759040,...]},...])在未定义的出口处启动,原因为case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:vnode_command / 3行346中的shutdown_error   2016-10-13 13:41:25.966 [错误]&lt; 0.8897.0&gt; gen_server&lt; 0.8897.0&gt;原因终止:没有案例子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:vnode_command / 3 line 346   2016-10-13 13:41:25.966 [错误]&lt; 0.8897.0&gt;崩溃报告过程&lt; 0.8897.0&gt;有0个邻居退出的原因:没有case子句匹配riak_core_vnode中的{riak_kv_multi_backend,undefined_backend,&lt;&lt;&#34; bitcask&#34;&gt;&gt;}:gen_server中的vnode_command / 3行346:terminate / 6行744 < / p>

我正在使用Riak v2.0.7 LTS

1 个答案:

答案 0 :(得分:5)

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

让我们说使用riak documentation中的示例配置:

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"}}'

希望有所帮助