## 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.12

#### 1.1.1 Improvements and new features

None

#### 1.1.2 Fixed Bugs and malfunctions

- Mnesia could hang if mnesia:add_table_copy/3 was called before all tables had been loaded.
  Own Id: OTP-5065
  Aux Id: EABln14388

#### 1.1.3 Incompatibilities

None

#### 1.1.4 Known bugs and problems

None.

### 1.2 Mnesia 4.1.11

#### 1.2.1 Improvements and new features

None

#### 1.2.2 Fixed Bugs and malfunctions

- Mnesia's internal state could be inconsistent between nodes on ram-only systems. Data could be commited on nodes despite that the lock was not grabbed on all nodes (that could happen on all type of nodes).
  Own Id: OTP-5039
  Aux Id: EABln12188

#### 1.2.3 Incompatibilities

None

#### 1.2.4 Known bugs and problems

None.

### 1.3 Mnesia 4.1.10

#### 1.3.1 Improvements and new features

None

#### 1.3.2 Fixed Bugs and malfunctions

- Mnesia could crash if a cleartable operation was made during startup of any node.
  Own Id: OTP-5012
  Aux Id: seq8431
- Restarting mnesia (fast) could lead to synchronization problems, leaving transactions unfinished.
  Own Id: OTP-5013
  Aux Id: seq8485
- Mnesia could fail to load tables that only existed on 2 nodes and mnesia couldn't grab a lock on that table in 20 tries.
  Own Id: OTP-5014
  Aux Id: seq8629

#### 1.3.3 Incompatibilities

None

#### 1.3.4 Known bugs and problems

None.

### 1.4 Mnesia 4.1.9

#### 1.4.1 Improvements and new features

None

#### 1.4.2 Fixed Bugs and malfunctions

- Mnesia's monitor process could crash with `badarg` or `badmatch` in mnesia-4.1.8.
  Own Id: OTP-4964
  Aux Id: Seq8448

#### 1.4.3 Incompatibilities

None

#### 1.4.4 Known bugs and problems

None.

### 1.5 Mnesia 4.1.8

#### 1.5.1 Improvements and new features

None

#### 1.5.2 Fixed Bugs and malfunctions

- Fixed startup problems with ram based mnesia nodes, multiple synchronization problems could cause mnesia to either hang or crash.
  Own Id: OTP-4926
  Aux Id: Seq8410 Seq8317 Seq8256

#### 1.5.3 Incompatibilities

None

#### 1.5.4 Known bugs and problems

None.

### 1.6 Mnesia 4.1.7

#### 1.6.1 Improvements and new features

None

#### 1.6.2 Fixed Bugs and malfunctions

- This release is the same as `mnesia-4.1.6` but keeps backward compability with `OTP-R8`, the previous release used erlang:phash2/2 which didn't exist there.

#### 1.6.3 Incompatibilities

None

#### 1.6.4 Known bugs and problems

None.

### 1.7 Mnesia 4.1.6

#### 1.7.1 Improvements and new features

None

#### 1.7.2 Fixed Bugs and malfunctions

- Mnesia couldn't mix normal transactions and activities (fragmented tables) in nested transactions.
  Own Id: OTP-4863
  Aux Id: seq8254
- Mnesia copied to much data when connecting to an old node, this could cause slow startup times.
  Own Id: OTP-4864
  Aux Id: seq8270

#### 1.7.3 Incompatibilities

None

#### 1.7.4 Known bugs and problems

None.

### 1.8 Mnesia 4.1.5

#### 1.8.1 Improvements and new features

None

#### 1.8.2 Fixed Bugs and malfunctions

- Mnesia could deadlock if add_table_copy was called during a node startup.
  Own Id: OTP-4803
  Aux Id: seq8151

#### 1.8.3 Incompatibilities

None

#### 1.8.4 Known bugs and problems

None.

### 1.9 Mnesia 4.1.4

#### 1.9.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 to `DIR` 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.9.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.9.3 Incompatibilities

- Soft upgrade is not possible, a restart of mnesia must be performed.
- Calling `mnesia:restore()` with option `recreate` will crash mnesia if not all mnesia nodes have been upgraded to mnesia-4.1.4 or later.

#### 1.9.4 Known bugs and problems

None.

### 1.10 Mnesia 4.1.3

#### 1.10.1 Improvements and new features

None.

#### 1.10.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.10.3 Incompatibilities

None

#### 1.10.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.11 Mnesia 4.1.2

#### 1.11.1 Improvements and new features

None.

#### 1.11.2 Fixed Bugs and malfunctions

- Calls to `mnesia:transaction()` which makes a badarg, e.g. calls to `mnesia: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.11.3 Incompatibilities

None

#### 1.11.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.12 Mnesia 4.1.1

#### 1.12.1 Improvements and new features

None.

#### 1.12.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 from `disc_only_copies` to `ram_copies`.
  Own Id: OTP-4565

#### 1.12.3 Incompatibilities

None

#### 1.12.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.13 Mnesia 4.1

#### 1.13.1 Improvements and new features

- The table fragmentation functionality in Mnesia has been improved.
  `Select` and `match_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 the `mnesia_frag_hash` callback behaviour (see the reference manual). The default hash module for new tables is `mnesia_frag_hash`, while old already existing tables are using the `mnesia_frag_old_hash` module. The `mnesia_frag_old_hash` is still using the poor depricated `erlang:hash/1` function, while `mnesia_frag_hash` is using the better `erlang: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 of `disc_only_copies` tables, if possible.
  Own Id: OTP-4473

#### 1.13.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.13.3 Incompatibilities

- Downgrade to previous mnesia versions is not possible if you are using fragmented tables.

#### 1.13.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.14 Mnesia 4.0.2

#### 1.14.1 Improvements and new features

None

#### 1.14.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.14.3 Incompatibilities

None

#### 1.14.4 Known bugs and problems

None.

### 1.15 Mnesia 4.0.1

#### 1.15.1 Improvements and new features

None.

#### 1.15.2 Fixed Bugs and malfunctions

- Using `mnesia:dump_tables/1` or `mnesia: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 on `set` tables.
- `mnesia:select/[2|3]` now works with fragmented tables.

#### 1.15.3 Incompatibilities

Release mnesia-4.0 and later will only run OTP R8 and later.

#### 1.15.4 Known bugs and problems

None.

### 1.16 Mnesia 4.0

#### 1.16.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.16.2 Fixed Bugs and malfunctions

None

#### 1.16.3 Incompatibilities

Release mnesia-4.0 and later will only run OTP R8 and later.

#### 1.16.4 Known bugs and problems

None.

Copyright © 1991-2005 Ericsson AB