Age | Commit message (Collapse) | Author |
|
* dgud/mnesia/sticky-bug/ERL-768/OTP-15979:
mnesia: Bump protocol version
mnesia: Introduce sync_asym_trans protocol
|
|
Remove unsupported conversions from the old protocols.
This means mnesia on OTP-R18 nodes is no longer able to connect to
OTP-22 mnesia nodes.
Add protocol conversion for old nodes and sync_asym_trans transactions.
|
|
If add_table_copy was called when a node was starting it deadlock
waiting for mnesia_controller, when schema was not merged.
Abort if that is the case.
|
|
Fix a bug, when delete_object was deleting the record if it was written
in the same transaction even if it was written to a different value.
To verify:
%% Create a set table
mnesia:create_table(foo, []).
%% Write and delete_object in transaction
mnesia:transaction(fun() ->
mnesia:write({foo, bar, one}),
mnesia:delete_object({foo, bar, not_one})
end).
{atomic, [{foo, bar, one}]} = mnesia:transaction(fun() -> mnesia:read(foo, bar) end).
Added a section to isolation tests to check for non-matching delete_object
requests.
|
|
|
|
Cleanup warnings
|
|
|
|
del_table_copy grabs a write lock in a new process in prepare_op/3 to
change 'where_to_read' when a table copy is updated.
When del_table_copy(schema, Node) is called all copies located on Node
are deleted, and thus many locks are taken. Since this was done outside
of the schema-transaction, mnesia's deadlock prevention algorithms
was sidestepped and a deadlock could occur.
Fix by always grabbing write-locks for all changed tabs early and in the same
transaction, this might slow done the operation some but it must be done
and it also cleans up the code.
|
|
|
|
|
|
match_object returned wrong objects when matching on non key fields
and updates in the same transaction had been performed.
|
|
|
|
|
|
|
|
|
|
|