From fe9e57f765c428e7e9b94e24250d83474e77f09f Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Wed, 7 Dec 2011 10:09:28 +0100 Subject: [mnesia] Read record from correct node Read from where_to_read otherwise bad data may read during move_table, where where_to_write is updated before where_to_read and the table is available. --- lib/mnesia/src/mnesia_locker.erl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/mnesia') diff --git a/lib/mnesia/src/mnesia_locker.erl b/lib/mnesia/src/mnesia_locker.erl index 5581c6c4a8..de4811f8e4 100644 --- a/lib/mnesia/src/mnesia_locker.erl +++ b/lib/mnesia/src/mnesia_locker.erl @@ -657,7 +657,8 @@ rwlock(Tid, Store, Oid) -> Lock = write, case need_lock(Store, Tab, Key, Lock) of yes -> - {Ns, Majority} = w_nodes(Tab), + {Ns0, Majority} = w_nodes(Tab), + Ns = [Node|lists:delete(Node,Ns0)], check_majority(Majority, Tab, Ns), Res = get_rwlocks_on_nodes(Ns, make_ref(), Store, Tid, Oid), ?ets_insert(Store, {{locks, Tab, Key}, Lock}), -- cgit v1.2.3