【问题标题】:Riak: "Failed to read test value: {error,{insufficient_vnodes,0,need,1}}" after running "riak-admin test"Riak:运行“riak-admin test”后“读取测试值失败:{error,{insufficient_vnodes,0,need,1}}”
【发布时间】:2013-10-29 09:38:12
【问题描述】:

尽管配置文件应该可以正常工作,但在运行 riak start 后很快就会出现此错误。

【问题讨论】:

    标签: riak


    【解决方案1】:

    事实证明这是 Riak 错误消息的限制:如果您在配置完成加载之前尝试在您的设置上执行 riak-admin test,您将收到上述消息。

    【讨论】:

      【解决方案2】:

      我在自动化测试期间一遍又一遍地启动新的 Riak 集群时遇到了同样的问题。我的解决方案是,在我的测试夹具设置中,执行不断尝试将对象放入 Riak 存储桶并最终成功的代码。

      当然,我的解决方案是 Erlang sn-p,但它通常可以代替任何 Riak 提供的管理/等待功能来解决这个问题。但由于我使用了许多不同的 Riak 版本,这里的这种技术似乎适用于所有版本。

      wait_for_riak() ->
          {ok, C} = riak:local_client(),
          io:format("Waiting for Raik..."),
          wait_for_riak(C),
          io:format("and had a successful put.~n").
      
      wait_for_riak(C) ->
          Strawman = riak_object:new(<<"test">>, <<"strawman">>, []),
          case C:put(Strawman, 1) of
              ok ->
                  ok;
              _Error ->
                  receive after 1000 -> ok end,
                  wait_for_riak(C)
          end.
      

      【讨论】:

        【解决方案3】:

        像这样添加sleep 4

        brew install riak
        riak start
        sleep 4
        riak-admin test
        

        应该有帮助

        【讨论】:

          猜你喜欢
          • 2015-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多