我的生产设置中突然出现了意外错误(在_users DB中创建用户文档时)
{
"error": "EXIT",
"reason": "{{badmatch,[]},\n [{couch_query_servers,new_process,3},\n {couch_query_servers,lang_proc,3},\n {couch_query_servers,handle_call,3},\n {gen_server,handle_msg,5},\n {proc_lib,init_p_do_apply,3}]}"
}
这是我的文档结构,自最近2年以来运行良好
{"_id": "org.couchdb.user:name","name": "name","roles": [],"type": "user","password": "password"}
非常感谢您为解决问题提供的帮助
答案 0 :(得分:2)
我找到了解决方案。在我的 _users 表中,创建了一个设计文档 _design / X12635 。删除文档后,它开始正常工作。
{
"_id": "_design/X12635",
"_rev": "1-12bc5863e7f65bad6ddf51c1748c3e42",
"language": "erlang",
"validate_doc_update": "fun ({NewDoc}, OldDoc, UserCtx, SecObj)->\n\t%%Covers CVE-2017-12635\n\tRoles = proplists:lookup_all(<<\"roles\">>,NewDoc),\n\tcase length(Roles) < 2 of\n\t\ttrue -> ok;\n\t\tfalse ->throw({[{<<\"forbidden\">>, <<\"You can’t hack roles,sorry\">>}]})\n\tend,\n\t1\nend."
}
在收到@Flimzy评论后,我花了更多时间,找到了替代的解决方案。我再次恢复了上面的设计文档 _design / X12635 ,并在 CouchDB 1.6.1
中添加了以下配置。Section : native_query_servers
Option : erlang
Value : {couch_native_process, start_link, []}
启用 erlang 可能会影响安全性,最好将 CouchDB 1.6.1 升级到最新版本