diff options
author | Damien F. Katz <damien@apache.org> | 2010-03-04 01:09:22 +0000 |
---|---|---|
committer | Damien F. Katz <damien@apache.org> | 2010-03-04 01:09:22 +0000 |
commit | 3a3a9c1efab1c9fe4cd5ebb6c80da4005eb0806b (patch) | |
tree | f850ff24c113465531aab2bdcdb2f2e70855d00c /src/couchdb/couch_ref_counter.erl | |
parent | 2ea7ab6a8525184ecdbfcee69667e200511b9f9b (diff) |
Changed process tree shutdown to be synchronous, to eliminate spurious test failures caused by processes not shutdown fast enough or at the wrong time.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@918805 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_ref_counter.erl')
-rw-r--r-- | src/couchdb/couch_ref_counter.erl | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/couchdb/couch_ref_counter.erl b/src/couchdb/couch_ref_counter.erl index 5c8e7437..96d92333 100644 --- a/src/couchdb/couch_ref_counter.erl +++ b/src/couchdb/couch_ref_counter.erl @@ -40,17 +40,18 @@ count(RefCounterPid) -> -record(srv, { - referrers=dict:new() % a dict of each ref counting proc. + referrers=dict:new(), % a dict of each ref counting proc. + child_procs=[] }). init({Pid, ChildProcs}) -> [link(ChildProc) || ChildProc <- ChildProcs], Referrers = dict:from_list([{Pid, {erlang:monitor(process, Pid), 1}}]), - {ok, #srv{referrers=Referrers}}. + {ok, #srv{referrers=Referrers, child_procs=ChildProcs}}. -terminate(Reason, _Srv) -> - couch_util:terminate_linked(Reason), +terminate(_Reason, #srv{child_procs=ChildProcs}) -> + [couch_util:shutdown_sync(Pid) || Pid <- ChildProcs], ok. |