diff options
Diffstat (limited to 'lib/percept')
-rw-r--r-- | lib/percept/doc/src/notes.xml | 26 | ||||
-rw-r--r-- | lib/percept/src/percept_db.erl | 13 | ||||
-rw-r--r-- | lib/percept/vsn.mk | 2 |
3 files changed, 34 insertions, 7 deletions
diff --git a/lib/percept/doc/src/notes.xml b/lib/percept/doc/src/notes.xml index 33bfa7baab..95c2bbda56 100644 --- a/lib/percept/doc/src/notes.xml +++ b/lib/percept/doc/src/notes.xml @@ -32,6 +32,32 @@ </header> <p>This document describes the changes made to the Percept application.</p> +<section><title>Percept 0.8.6</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix message handling in select requests</p> + <p> + percept_db used to send results in untagged messages, and + use a non selective receive to extract them. When percept + is used from the shell process, this can confuse other + messages with the actual result.</p> + <p> + Add a tag to the message to be {result, Result}. Add + demonitor to avoid keeping DOWN message in the queue fix + one spec in do_start/0</p> + <p> + (Thanks to Ahmed Omar)</p> + <p> + Own Id: OTP-9490</p> + </item> + </list> + </section> + +</section> + <section><title>Percept 0.8.5</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/percept/src/percept_db.erl b/lib/percept/src/percept_db.erl index 52e9afb78f..68eb38d298 100644 --- a/lib/percept/src/percept_db.erl +++ b/lib/percept/src/percept_db.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2007-2010. All Rights Reserved. +%% Copyright Ericsson AB 2007-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -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]), diff --git a/lib/percept/vsn.mk b/lib/percept/vsn.mk index 2a302991aa..3b4d9bbb64 100644 --- a/lib/percept/vsn.mk +++ b/lib/percept/vsn.mk @@ -1 +1 @@ -PERCEPT_VSN = 0.8.5 +PERCEPT_VSN = 0.8.6 |