You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@couchdb.apache.org by GitBox <gi...@apache.org> on 2018/09/06 17:25:34 UTC
[GitHub] nickva edited a comment on issue #1596: Fix couch server race
condition
nickva edited a comment on issue #1596: Fix couch server race condition
URL: https://github.com/apache/couchdb/pull/1596#issuecomment-419169919
The issue is reproducible with this script (in a remsh):
```
f(FuzzIt), FuzzIt = fun(DbName, Tries, WaitMax) ->
Ref = erlang:monitor(process, whereis(couch_server)),
[begin
[begin
CallRefs = [Open1Ref, DeleteRef, Open2Ref] = [make_ref(), make_ref(), make_ref()],
whereis(couch_server) ! {'$gen_call', {self(), Open1Ref}, {create, DbName, []}},
timer:sleep(W),
whereis(couch_server) ! {'$gen_call', {self(), DeleteRef}, {delete, DbName, []}},
whereis(couch_server) ! {'$gen_call', {self(), Open2Ref}, {open, DbName, []}},
[receive {R, _} -> ok end || R <- CallRefs]
end || W <- lists:seq(0, WaitMax)]
end || _ <- lists:seq(1, Tries)],
receive {'DOWN', Ref, _, _, Reason} -> {bam, Reason}
after 5000 -> nope
end
end.
```
When run like this for example:
```
FuzzIt(<<"blah">>, 100, 15).
```
It might help to have a few dbs open and some activity, like say a bunch of replication jobs running as well.
The node would crash and possibly restart leaving something like this in the log:
```
[error] 2018-09-06T17:01:48.085468Z node1@127.0.0.1 <0.243.0> -------- couch_server terminating with {function_clause,[{couch_server,'-handle_call/3-lc$^1/1-1-',[undefined],[{file,"src/couch_server.erl"},{line,434}]},{couch_server,handle_call,3,[{file,"src/couch_server.erl"},
```
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
With regards,
Apache Git Services