专家们,
我的 couchDB 安装遇到了一个令人惊讶的问题:从某个时刻到另一个时刻都无法发出请求,并且 couchDB 不再运行。
查看错误日志后发现以下堆栈跟踪(这些是第一个,后面有很多类似的)。上述数据库文件确实存在于指定目录中,并且具有正确的访问权限(couchdb:couchdb, 640)。
系统是FreeBSD 10.1-RELEASE-p16,couchdb 1.6.1
[Thu, 20 Aug 2015 13:37:29 GMT] [error] [<0.28818.72>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:37:29 GMT] [error] [<0.25245.72>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:50:45 GMT] [error] [<0.13142.73>] Could not open file /var/db/couchdb/db1/def.couch: no such file or directory
[Thu, 20 Aug 2015 13:52:29 GMT] [error] [<0.15770.73>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:52:29 GMT] [error] [<0.17891.73>] Could not open file /var/db/couchdb/db1/abc.couch: no such file or directory
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.23972.73>] {error_report,<0.31.0>,
{<0.23972.73>,crash_report,
[[{initial_call,{couch_file,init,['Argument__1']}},
{pid,<0.23972.73>},
{registered_name,[]},
{error_info,
{exit,
{{badmatch,{error,eacces}},
[{couch_file,init,1,
[{file,"couch_file.erl"},{line,314}]},
{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]},
[{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,352}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}},
{ancestors,[<0.25603.73>]},
{messages,[]},
{links,[#Port<0.1119512>,<0.25603.73>]},
{dictionary,[]},
{trap_exit,true},
{status,running},
{heap_size,376},
{stack_size,27},
{reductions,564}],
[{neighbour,
[{pid,<0.25603.73>},
{registered_name,[]},
{initial_call,{erlang,apply,2}},
{current_function,{gen,do_call,4}},
{ancestors,[]},
{messages,[]},
{links,[<0.85.0>,<0.23972.73>]},
{dictionary,[]},
{trap_exit,false},
{status,waiting},
{heap_size,610},
{stack_size,16},
{reductions,61}]}]]}}
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.23088.73>] httpd 500 error response:
{"error":"error","reason":"{{badmatch,{error,eacces}},\n [{couch_file,init,1,[{file,\"couch_file.erl\"},{line,314}]},\n {gen_server,init_it,6,[{file,\"gen_server.erl\"},{line,328}]},\n {proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,239}]}]}"}
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.26398.73>] {error_report,<0.31.0>,
{<0.26398.73>,crash_report,
[[{initial_call,{couch_file,init,['Argument__1']}},
{pid,<0.26398.73>},
{registered_name,[]},
{error_info,
{exit,
{{badmatch,{error,eacces}},
[{couch_file,init,1,
[{file,"couch_file.erl"},{line,314}]},
{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]},
[{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,352}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}},
{ancestors,[<0.15629.73>]},
{messages,[]},
{links,[#Port<0.1119284>,<0.15629.73>]},
{dictionary,[]},
{trap_exit,true},
{status,running},
{heap_size,610},
{stack_size,27},
{reductions,573}],
[{neighbour,
[{pid,<0.15629.73>},
{registered_name,[]},
{initial_call,{erlang,apply,2}},
{current_function,{proc_lib,sync_wait,2}},
{ancestors,[]},
{messages,
[{ack,<0.26398.73>,
{error,
{{badmatch,{error,eacces}},
[{couch_file,init,1,
[{file,"couch_file.erl"},{line,314}]},
{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}}}]},
{links,[<0.85.0>,<0.26398.73>]},
{dictionary,[]},
{trap_exit,false},
{status,runnable},
{heap_size,233},
{stack_size,20},
{reductions,28}]}]]}}
[Thu, 20 Aug 2015 13:59:47 GMT] [error] [<0.85.0>] ** Generic server couch_server terminating
** Last message in was {'EXIT',<0.25603.73>,
{{badmatch,{error,eacces}},
[{couch_file,init,1,
[{file,"couch_file.erl"},{line,314}]},
{gen_server,init_it,6,
[{file,"gen_server.erl"},{line,328}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}}
** When Server state == {server,"/var/db/couchdb",
{re_pattern,0,0,0,
<<69,82,67,80,140,0,0,0,16,0,0,0,1,0,0,0,255,
255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,
0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,125,0,72,25,106,0,0,0,
0,0,0,0,0,0,0,0,0,254,255,255,7,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,106,0,0,0,0,16,171,255,
3,0,0,0,128,254,255,255,7,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,98,27,114,0,72,0>>},
100,99,"Wed, 19 Aug 2015 12:57:47 GMT"}
** Reason for termination ==
** {{case_clause,[]},
[{couch_server,handle_info,2,[{file,"couch_server.erl"},{line,435}]},
{gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,615}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,681}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}
由于我对 erlang 一无所知,所以我一个字也听不懂 - 这些错误意味着什么以及可能产生这些错误的原因是什么?
非常感谢, 塞巴斯蒂安
最佳答案
唯一相关的错误是{badmatch,{error,eacces}
,它表明发生了 POSIX EACCES 错误。输出的其余部分是显示崩溃“状态”的 erlang 方式,这是并行运行时所需的东西。
根据 erlang 文档 ( http://www.erlang.org/doc/man/file.html ),错误 eacces
也可能意味着:“缺少读取文件或搜索父目录之一的权限。”
您是否还检查了正确的父目录权限?
是否有什么东西改变了文件系统?
/var/db
是 NFS 挂载还是其他什么?
关于CouchDB 突然崩溃并出现 "Could not open file"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32122176/