我在我的机器上安装了riak 2.0.1。我试图在riak桶中存储一个带有密钥的对象。但我陷入了一个奇怪的问题。
我的实际存储桶名称为" abc-client "。
当我尝试在此存储桶中保存数据时,我在控制台上收到以下错误:
[error] ! step error
[error] RiakRetryFailedException: com.basho.riak.client.http.response.RiakResponseRuntimeException: <html><head><title>500 Internal Server Error</title></head><body><h1>Internal Server Error</h1>The server encountered an error while processing this request:<br><pre>{error,
[error] {error,badarg,
[error] [{erlang,iolist_to_binary,
[error] [{hook_crashed,{riak_search_kv_hook,precommit,error,badarg}}],
[error] []},
[error] {wrq,append_to_response_body,2,[{file,"src/wrq.erl"},{line,215}]},
[error] {riak_kv_wm_object,handle_common_error,3,
[error] [{file,"src/riak_kv_wm_object.erl"},{line,1144}]},
[error] {webmachine_resource,resource_call,3,
[error] [{file,"src/webmachine_resource.erl"},{line,186}]},
[error] {webmachine_resource,do,3,
[error] [{file,"src/webmachine_resource.erl"},{line,142}]},
[error] {webmachine_decision_core,resource_call,1,
[error] [{file,"src/webmachine_decision_core.erl"},{line,48}]},
[error] {webmachine_decision_core,accept_helper,1,
[error] [{file,"src/webmachine_decision_core.erl"},{line,612}]},
[error] {webmachine_decision_core,decision,1,
[error] [{file,"src/webmachine_decision_core.erl"},{line,580}]}]}}</pre><P><HR><ADDRESS>mochiweb+webmachine web server</ADDRESS></body></html> (DefaultRetrier.java:81)
[error] com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:79)
[error] com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:81)
[error] com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:81)
[error] com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:81)
[error] com.basho.riak.client.cap.DefaultRetrier.attempt(DefaultRetrier.java:53)
[error] com.basho.riak.client.operations.StoreObject.execute(StoreObject.java:148)
但是当我从&#34; abc-client &#34;更改桶名称时到&#34; abc-client1 &#34;,我能够成功存储数据。
以下是源代码的一部分
val bucketName = "abc-client" client.createBucket(bucketName).execute()
val abc = new ABC(id, "abc")
val bucket = client.fetchBucket(bucketName).execute()
bucket.store(abc).execute()
任何人都可以帮我解决这个问题吗?提前致谢
答案 0 :(得分:0)
此记录位
[error] {error,badarg,
[error] [{erlang,iolist_to_binary,
[error] [{hook_crashed,{riak_search_kv_hook,precommit,error,badarg}}],
表示在abc-client
的属性中定义了一个precommit钩子,并且使用您尝试存储的对象执行已定义的函数会引发badarg错误。
简单修复 - 删除预先挂钩。
更多涉及的修复 - 发布函数的来源,我们将看一看。