diff options
author | Kenneth Lundin <[email protected]> | 2012-03-28 13:28:40 +0200 |
---|---|---|
committer | Kenneth Lundin <[email protected]> | 2012-03-29 17:07:54 +0200 |
commit | f2802b90d02f41079dd7db4e14dbe9b6fea91255 (patch) | |
tree | d02271d1aa9e13c7cc6d904ca37b6114d25893b9 /lib/asn1 | |
parent | a24997ac5526cb7cbb5f3248aaa4abd403bf406a (diff) | |
download | otp-f2802b90d02f41079dd7db4e14dbe9b6fea91255.tar.gz otp-f2802b90d02f41079dd7db4e14dbe9b6fea91255.tar.bz2 otp-f2802b90d02f41079dd7db4e14dbe9b6fea91255.zip |
replace 5 sec timeout (too short) with monitor in asn1_db requests
This bug was introduced as part of the parallelization of test suites and is notpart of any released version
Diffstat (limited to 'lib/asn1')
-rw-r--r-- | lib/asn1/src/asn1_db.erl | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/asn1/src/asn1_db.erl b/lib/asn1/src/asn1_db.erl index 0862ef6e02..843fc66c9c 100644 --- a/lib/asn1/src/asn1_db.erl +++ b/lib/asn1/src/asn1_db.erl @@ -48,11 +48,19 @@ dbstop() -> Resp = req(stop), erase(?MODULE), Resp. %% Internal functions req(Request) -> - get(?MODULE) ! {self(), Request}, - receive {?MODULE, Reply} -> Reply after 5000 -> exit(db_timeout) end. + DbPid = get(?MODULE), + Ref = erlang:monitor(process,DbPid), + get(?MODULE) ! {{Ref, self()}, Request}, + receive + {{Ref,?MODULE}, Reply} -> + erlang:demonitor(Ref,[flush]), + Reply; + {'DOWN',Ref,_,_,Info} -> + exit({db_error,Info}) + end. -reply(From, Response) -> - From ! {?MODULE, Response}. +reply({Ref,From}, Response) -> + From ! {{Ref,?MODULE}, Response}. init(Parent, Includes) -> MRef = erlang:monitor(process, Parent), |