1 Mnesia Release Notes
This document describes the changes made to the Mnesia system from version to version. The intention of this document is to list all incompatibilities as well as all enhancements and bugfixes for every release of Mnesia. Each release of Mnesia thus constitutes one section in this document. The title of each section is the version number of Mnesia.
1.1 Mnesia 4.1.4
1.1.1 Improvements and new features
- Added an environment variable
-mnesia core_dir DIR
which when set always writes (even on ram only nodes) a coredump toDIR
when mnesia crashes.
Own Id: OTP-4726
- Overloaded events are reported as warnings via error_logger:warning_msg/2 (instead of error_msg), if available.
Own Id: OTP-4638
1.1.2 Fixed Bugs and malfunctions
- Mnesia did a controlled crash if a table was created (or moved) with the same name as an already existing named ets table, i.e. the needed resources were not available. Now
{aborted,Reason}
will be returned.
Own Id: OTP-4321
Aux Id: seq7331
1.1.3 Incompatibilities
- Soft upgrade is not possible, a restart of mnesia must be performed.
- Calling
mnesia:restore()
with optionrecreate
will crash mnesia if not all mnesia nodes have been upgraded to mnesia-4.1.4 or later.
1.1.4 Known bugs and problems
1.2 Mnesia 4.1.3
1.2.1 Improvements and new features
1.2.2 Fixed Bugs and malfunctions
- Mnesia-4.1.2 couldn't load tables from mnesia-3.10.* nodes.
Own Id: OTP-4610
Aux Id: seq7754
1.2.3 Incompatibilities
1.2.4 Known bugs and problems
- Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
Own Id: OTP-4321
Aux Id: seq7331
1.3 Mnesia 4.1.2
1.3.1 Improvements and new features
1.3.2 Fixed Bugs and malfunctions
- Calls to
mnesia:transaction()
which makes a badarg, e.g. calls tomnesia:select/2
with a bad match spec as argument, loops forever.
Own Id: OTP-4596
- Mnesia could be deadlocked during start of several nodes.
Own Id: OTP-4597
Aux Id: seq7754
- Mnesia used table names as the name on opened disk_log files, which could cause strange behavoiurs if the name interfered with other opened disk_log files.
Own Id: OTP-4599
Aux Id: seq7705
1.3.3 Incompatibilities
1.3.4 Known bugs and problems
- Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
Own Id: OTP-4321
Aux Id: seq7331
1.4 Mnesia 4.1.1
1.4.1 Improvements and new features
1.4.2 Fixed Bugs and malfunctions
- Nested transactions could be aborted with {aborted,{node_not_running,Node}}.
Own Id: OTP-4564
Aux Id: seq7460
- Mnesia could not load dets files of old format over the network.
Own Id: OTP-4524
mnesia:change_table_copy_type/3
failed to copy data when changing storage type fromdisc_only_copies
toram_copies
.
Own Id: OTP-4565
1.4.3 Incompatibilities
1.4.4 Known bugs and problems
- Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
Own Id: OTP-4321
Aux Id: seq7331
1.5 Mnesia 4.1
1.5.1 Improvements and new features
- The table fragmentation functionality in Mnesia has been improved.
Select
andmatch_object
is done in parallel which should improve performance.
A new concept of hash modules has been introduced. This means that a user now can define its own mapping between record keys and the actual table fragment hosting the record. A hash module must implement themnesia_frag_hash
callback behaviour (see the reference manual). The default hash module for new tables ismnesia_frag_hash
, while old already existing tables are using themnesia_frag_old_hash
module. Themnesia_frag_old_hash
is still using the poor depricatederlang:hash/1
function, whilemnesia_frag_hash
is using the bettererlang:phash/1
.
Own Id: OTP-4403
Aux Id: seq7458
- Improved table loading performance during startup. Mnesia should be able to utilize the network bandwidth better, and Mnesia also uses new
dets
functionality to improve the loading ofdisc_only_copies
tables, if possible.
Own Id: OTP-4473
1.5.2 Fixed Bugs and malfunctions
- Local content tables on ram nodes didn't load during startup.
Own Id: OTP-4369
Aux Id: seq7415
- Sometime Mnesia could hang if schema operations where done during a mnesia node startup.
Own Id: OTP-4474
1.5.3 Incompatibilities
- Downgrade to previous mnesia versions is not possible if you are using fragmented tables.
1.5.4 Known bugs and problems
- Mnesia fatals (controlled crash) if a table is created with the same name as an already existing named ets table.
Own Id: OTP-4321
Aux Id: seq7331
1.6 Mnesia 4.0.2
1.6.1 Improvements and new features
1.6.2 Fixed Bugs and malfunctions
- Checkpoints could crash mnesia when mnesia nodes started.
Own Id: OTP-4318
Aux Id: seq7206
- Some schema operations could return {atomic, ok} but still fail to commit the operation on nodes with disc, e.g. transform_table.
Own Id: OTP-4319
- Mnesia left disk_log files opened in some cases, which could lead to crashes.
Own Id: OTP-4320
Aux Id: seq7338
mnesia:transform_table
didn't work if table had indecies, it returned {atomic, ok} but the meta-data was not transformed.
Own Id: OTP-4325
Aux Id: seq7342
- Transform table on disc_copies tables, sometimes fail to store the transformed records to disc.
Own Id: OTP-4292
- An empty (ram_copies table) file could be created when unpacking a fallback.
Own Id: OTP-4338
- Removed a possibilty for getting inconsistent tables during table copying.
Own Id: OTP-4338
mnesia:select/[2|3]
now works with fragmented tables.
Own Id: OTP-4338
1.6.3 Incompatibilities
1.6.4 Known bugs and problems
1.7 Mnesia 4.0.1
1.7.1 Improvements and new features
1.7.2 Fixed Bugs and malfunctions
- Using
mnesia:dump_tables/1
ormnesia:change_table_copy(Tab, Node, disc_copies)
on a ram node (schema in ram) causes a crash in earlier mnesia-3.10.* releases.
Own Id: OTP-4187
Aux Id: Seq 7188
- If a mnesia node was restarted during a checkpoint (also affects backups) the checkpoint would be trashed, which could lead to hangings, crashes and other undesired behaviours, including that the checkpoint could delete other applications ets tables.
Own Id: OTP-4215
Aux Id: Seq 7206 and probably Seq 7184, Seq 7151
mnesia:delete_object/[1|3]
sometimes failed to delete entries onset
tables.
mnesia:select/[2|3]
now works with fragmented tables.
1.7.3 Incompatibilities
Release mnesia-4.0 and later will only run OTP R8 and later.
1.7.4 Known bugs and problems
1.8 Mnesia 4.0
1.8.1 Improvements and new features
- The function
mnesia:[dirty_]select/[2|3]
has been added, the function can and should be used to write complex queries.
- The function
mnesia:sync_transaction/[1|2|3]
has been added, the function can be used to avoid overloading mnesia on other nodes.
Own Id: OTP-3481
Aux Id: Seq 4362
- Mnesia's locker mechanism has been optimized, and it is now possible to acquire a sticky_write lock in
mnesia:read/3
.
1.8.2 Fixed Bugs and malfunctions
1.8.3 Incompatibilities
Release mnesia-4.0 and later will only run OTP R8 and later.
1.8.4 Known bugs and problems
None.