aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mnesia/src/mnesia_locker.erl
AgeCommit message (Collapse)Author
2015-02-23mnesia: Flush late messagesDan Gudmundsson
2014-06-16Merge branch 'gorillainduction/improve_mnesia_locker_complexity' into maintHenrik Nord
* gorillainduction/improve_mnesia_locker_complexity: Optimize tid lock table OTP-11981
2014-05-26Optimize tid lock tableTobias Lindahl
By making the ets table mnesia_tid_locks an ordered set instead of a bag, the time for inserting locks for a transaction with large number of locks is reduced significantly.
2014-04-11mnesia: Fix timing issueDan Gudmundsson
Be sure to gather release_tid msgs even though we have a mnesia_down in the queue.
2014-03-28mnesia: Dialyzer fixesDan Gudmundsson
2014-02-20mnesia: cleanup some dialyzer unmatched return warningsDan Gudmundsson
2013-11-25mnesia: Synchronize lock cleanup after mnesia downDan Gudmundsson
Bad timing could lead to hanging transactions after a mnesia down from a node with sticky locks. Excellent bug report from janchochol Situation: * node A and B have copies of table T * node A ows sticky of table T * node A goes down (e.g. crash) * node B tries to perform transactional operation on table T (e.g. mnesia:select) In this situation there is possibility that first (and maybe other) transaction on node B will hang indefinitely. This is caused by race condition, when transaction process send lock request operation to node A and waits for reply. When node A is down it will never send reply, so process on node B will be stuck forever. Reason is that message sent to mnesia_locker gen_server from mnesia_locker:mnesia_down can be received after mnesia_locker gen_server already replies to transaction processes with {switch, N, Req} and node N is down. Monitoring remote process when sending request to other node should be safe solution.
2013-01-09Prepare OTP files for Unicode as default encodingHans Bolinder
2012-01-31[Mnesia] More optimizationsDan Gudmundsson
If a transaction releases a write, it can be deleted directly since no read locks or other write locks can be present
2012-01-31[Mnesia] Optimize double ets_lookupsDan Gudmundsson
2012-01-31[Mnesia] Optimize for lookup instead of match_objectDan Gudmundsson
5% faster on tpcb
2012-01-31[Mnesia] First try with ordered_set instead of bagDan Gudmundsson
Switch to ordered_set so match_object matches partially bound keys, more efficient.
2011-12-07[mnesia] Read record from correct nodeDan Gudmundsson
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.
2011-12-06[mnesia] Fixed sticky read lock bugDan Gudmundsson
wread on locks stuck at non-local node could return unexpected value. Thanks to Magnus Henoch who posted a nice testcase showing the bug.
2011-12-06[mnesia] Whitespace fixesDan Gudmundsson
2011-05-16where_to_wlock optimization + change_table_majority/2Ulf Wiger
2011-05-16optimize sticky_lock maj. checkUlf Wiger
2011-05-16check majority for sticky locksUlf Wiger
2011-05-16Write locks now check majority when needed.Ulf Wiger
Since the table loader also sets (table) write locks, a special lock type, 'load', was needed. Unfortunately, this affects mnesia activity callbacks that redefine the lock operation.
2011-03-02Mnesia dialyzer fixesDan Gudmundsson
With help from Kostis
2010-09-15mnesia: Do not auto-import error/2Tuncer Ayaz
Resolve name clash with auto-imported BIF error/2.
2009-11-20The R13B03 release.OTP_R13B03Erlang/OTP