diff options
author | Henrik Nord <[email protected]> | 2011-08-24 16:00:01 +0200 |
---|---|---|
committer | Henrik Nord <[email protected]> | 2011-08-24 16:00:13 +0200 |
commit | d5261ddddfba705ed01540f5d60574c02eec67be (patch) | |
tree | 0cce44885ece0843796dd437ffffe997f5838f68 | |
parent | adeecbacf58888df01d11c74f031581e2aab9520 (diff) | |
parent | 30bcf83fd22ab4f3ab817beef2380e9cb72ba3d1 (diff) | |
download | otp-d5261ddddfba705ed01540f5d60574c02eec67be.tar.gz otp-d5261ddddfba705ed01540f5d60574c02eec67be.tar.bz2 otp-d5261ddddfba705ed01540f5d60574c02eec67be.zip |
Merge branch 'ao/fix-percept-msgs' into dev
* ao/fix-percept-msgs:
Fix message handling in select requests
Add demonitor to avoid keeping DOWN message in the queue
OTP-9490
-rw-r--r-- | lib/percept/src/percept_db.erl | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/percept/src/percept_db.erl b/lib/percept/src/percept_db.erl index 52e9afb78f..61b68ce44f 100644 --- a/lib/percept/src/percept_db.erl +++ b/lib/percept/src/percept_db.erl @@ -92,7 +92,7 @@ restart(PerceptDB)-> stop_sync(PerceptDB), do_start(). -%% @spec do_start(pid()) -> pid() +%% @spec do_start() -> pid() %% @private %% @doc starts the percept database. @@ -131,6 +131,7 @@ stop_sync(Pid)-> {'DOWN', MonitorRef, _Type, Pid, _Info}-> true after ?STOP_TIMEOUT-> + erlang:demonitor(MonitorRef, [flush]), exit(Pid, kill) end. @@ -166,14 +167,14 @@ insert(Trace) -> select(Query) -> percept_db ! {select, self(), Query}, - receive Match -> Match end. + receive {result, Match} -> Match end. %% @spec select(atom(), list()) -> Result %% @equiv select({Table,Options}) select(Table, Options) -> percept_db ! {select, self(), {Table, Options}}, - receive Match -> Match end. + receive {result, Match} -> Match end. %% @spec consolidate() -> Result %% @doc Checks timestamp and state-flow inconsistencies in the @@ -213,7 +214,7 @@ loop_percept_db() -> insert_trace(clean_trace(Trace)), loop_percept_db(); {select, Pid, Query} -> - Pid ! select_query(Query), + Pid ! {result, select_query(Query)}, loop_percept_db(); {action, stop} -> stopped; @@ -222,7 +223,7 @@ loop_percept_db() -> loop_percept_db(); {operate, Pid, {Table, {Fun, Start}}} -> Result = ets:foldl(Fun, Start, Table), - Pid ! Result, + Pid ! {result, Result}, loop_percept_db(); Unhandled -> io:format("loop_percept_db, unhandled query: ~p~n", [Unhandled]), |