aboutsummaryrefslogtreecommitdiffstats
path: root/lib/mnesia/src
AgeCommit message (Collapse)Author
2018-08-17Clean up bag index tablesDan Gudmundsson
Index records for bag tables with ram_copies was not deleted after "real" objects where deleted and thus a memory leak.
2018-08-09Merge branch 'dgud/mnesia/add_table_copy_ram/OTP-15226' into maint-20Erlang/OTP
* dgud/mnesia/add_table_copy_ram/OTP-15226: Relax add_table_copy restriction
2018-08-09Relax add_table_copy restrictionDan Gudmundsson
Allow to add replicas even if all other replicas are down when the other replicase are not stored on disk.
2018-08-08Do NOT disc_load from ram_copies when master_node is setDan Gudmundsson
Setting master_nodes to a node with ram_copies replica and that node had not loaded the table, could cause it load an empty table, even though (non master) nodes had disc_replicas. This meant that tables where unexpected empty after multiple failures happened. When this happen do not load the table and wait for user to force_load it on some node, preferably with a disk copy.
2017-12-18Merge branch 'dgud/mnesia/checkpoint-crash/OTP-14841' into maint-20Erlang/OTP
* dgud/mnesia/checkpoint-crash/OTP-14841: mnesia: Fix checkpoint crash
2017-12-18Merge branch 'dgud/mnesia/slow-startup/OTP-14829' into maint-20Erlang/OTP
* dgud/mnesia/slow-startup/OTP-14829: mnesia: Read schema user properties directly
2017-12-18mnesia: Fix checkpoint crashDan Gudmundsson
Bad timing can cause retain messages to go to a new process if checkpoint name is reused directly and the checkpoints contain different tables. Ignore those messages instead of crash.
2017-12-14mnesia: Read schema user properties directlyDan Gudmundsson
Doing a proper transaction handling of user properties (in current implmenentation) caused schema_transactions to be quadratic which caused huge startup times for nodes with many tables since the merge schema is a schema_transaction. Do a direct read instead, cheap but implies that the plugin changes will not be visible until the changes are commited and cannot be used later in same transaction, which was possible before if undocumented functions where used.
2017-12-04Merge branch 'dgud/mnesia/backup-error-handling/OTP-14776' into maintDan Gudmundsson
* dgud/mnesia/backup-error-handling/OTP-14776: mnesia: Fix error handling in abort write
2017-11-27Fix type create_option() in mnesiaAndras Boroska
The create_option() type in mnesia lacks the user_properties field which is used by mnesia in various places.
2017-11-14mnesia: Fix error handling in abort writeDan Gudmundsson
The "root cause" error reason was lost when abort_write failed, e.g. file was already closed, and Mod:abort_write(..) returned an error.
2017-09-19Update runtime deps to depend on new stdlib functionalityDan Gudmundsson
~tw and new string functions are new since OTP-20 (stdlib-3.4)
2017-09-05mnesia: Improve handling of UnicodeHans Bolinder
2017-06-14Update copyright yearHans Nilsson
2017-05-31mnesia: Print tables with ~ts to support unicode atomsDan Gudmundsson
2017-05-22mnesia: Correct a type declarationHans Bolinder
2017-05-04Update copyright yearRaimo Niskanen
2017-05-02mnesia: Remove not used mnesia_snmp_supDan Gudmundsson
It is not used anymore, snmp indecies are now ets tables and not processes.
2017-05-02Do not call which_applications()Dan Gudmundsson
Which may hang if an application start does wait for tables during initilization.
2017-02-14Fixed typos in lib/mnesiaAndrew Dryga
2017-02-01Merge branch 'maint'Dan Gudmundsson
* maint: Updated OTP version Prepare release Fixed crash when a table was deleted during checkpoint traversal
2017-01-30Fixed crash when a table was deleted during checkpoint traversalDan Gudmundsson
Set fixtable false will fail on deleted tables, catch that and also report checkpoint deactivate error, so user can see why checkpoint was deactivated and backup fails.
2017-01-25mnesia: Remove mnesia_frag_old_hash hash moduleBjörn-Egil Dahlberg
The module mnesia_frag_old_hash utilized the broken erlang:hash/2 function which has been deprecated for a long time. Since erlang:hash/2 is now removed there is no point in having this module any more.
2016-12-05Merge branch 'maint'Dan Gudmundsson
* maint: Use off_heap memory queue for mnesia_tm Preserve key order in mnesia:table_info
2016-12-05Merge branch 'richcarl/mnesia/table_info_order' into maintDan Gudmundsson
* richcarl/mnesia/table_info_order: Preserve key order in mnesia:table_info
2016-11-28Use off_heap memory queue for mnesia_tmDan Gudmundsson
Helps when mnesia_tm gets drowned in dirty_writes from remote node.
2016-11-18Preserve key order in mnesia:table_infoRichard Carlsson
2016-11-17Merge branch 'dgud/mnesia/type-specs'Dan Gudmundsson
* dgud/mnesia/type-specs: Add basic spec and types
2016-11-17Add basic spec and typesDan Gudmundsson
2016-11-11Don't wrap continuations from mnesia_ext backendsRichard Carlsson
Continuations returned from mnesia_ext backends were originally wrapped with the backend module, but that was a remnant of the earliest implementation, and is not actually needed, since Mnesia already knows what the table storage type is when it applies the continuation. When mnesia_ext was ported to OTP 19, the wrapper got changed to use the table type alias instead of the module, which triggered an error in the mnesia_eleveldb backend. This patch removes the wrapping completely.
2016-10-29Make a separate application module for MnesiaRichard Carlsson
To separate concerns and reduce confusion, avoid implementing two behaviours in a single module. Make a single start_link() helper in mnesia_sup and remove the unused mnesia_sup:start() utility function.
2016-10-24Merge branch 'dgud/mnesia/fix-blocked/OTP-13970' into maintDan Gudmundsson
* dgud/mnesia/fix-blocked/OTP-13970: Avoid some error reports when stopping mnesia mnesia: Fix double blocked tables which could cause a crash
2016-10-17Avoid some error reports when stopping mnesiaDan Gudmundsson
Worker processes can cause error reports if the main mnesia processes dissapear.
2016-10-11mnesia: Fix double blocked tables which could cause a crashDan Gudmundsson
Fast restarts could cause table to be blocked twice.
2016-10-06Allow reusing mnesia select continuationsDániel Szoboszlay
A continuation returned by mnesia:select/[14] should be reusable in different, non-transactional activities. Aborting with wrong_transaction doesn't make sense in a dirty context.
2016-05-24mnesia: Fix index match return patternsDan Gudmundsson
When building match result patterns the tuples they must qouted with { }, which causes a problem with variable patterns. Use element(1, Match) instead of trying to build the two tuple.
2016-05-09Merge branch 'dgud/mnesia/ext-backend/PR-858/OTP-13058'Dan Gudmundsson
* dgud/mnesia/ext-backend/PR-858/OTP-13058: mnesia_ext: Add basic backend extension tests mnesia_ext: reuse snmp field for ext updates mnesia_ext: Create table/data containers from mnesia monitor not temporary processes mnesia_ext: Implement ext copies index mnesia_ext: Load table ext mnesia_ext: Dumper and schema changes mnesia_ext: Refactor mnesia_schema.erl mnesia_ext: Ext support in fragmented tables mnesia_ext: Backup handling mnesia_ext: Create schema functionality mnesia_ext: Add ext copies and db_fold to low level api mnesia_ext: Refactor record_validation code mnesia_ext: Add create_external and increase protocol version to monitor mnesia_ext: Add ext copies to records mnesia_ext: Add supervisor and behaviour modules
2016-05-09mnesia_ext: reuse snmp field for ext updatesDan Gudmundsson
Minimal impact when talking to older nodes.
2016-05-09mnesia_ext: Create table/data containers from mnesia monitor not temporary ↵Dan Gudmundsson
processes Tables or data containers should be owned and monitored by mnesia_monitor and should thus be created by that process. Always create_table before loading it We need to create tables for ram_copies at least before loading them as they are intermittent. It is also needed to get mnesia monitor as the parent and supervisor of the data storage.
2016-05-09mnesia_ext: Implement ext copies indexUlf Wiger
Make ram_copies index always use ordered_set And use index type as prefered type not a implementation requirement, the standard implmentation will currently ignore the prefered type.
2016-05-09mnesia_ext: Load table extUlf Wiger
2016-05-09mnesia_ext: Dumper and schema changesUlf Wiger
2016-05-09mnesia_ext: Refactor mnesia_schema.erlUlf Wiger
2016-05-09mnesia_ext: Ext support in fragmented tablesUlf Wiger
2016-05-09mnesia_ext: Backup handlingUlf Wiger
2016-05-09mnesia_ext: Create schema functionalityUlf Wiger
Add ext to table/system information Add add_backend_type
2016-05-09mnesia_ext: Add ext copies and db_fold to low level apiUlf Wiger
2016-05-09mnesia_ext: Refactor record_validation codeUlf Wiger
Should maybe be moved to mnesia.erl and inlined?? Or is it used elsewhere?
2016-05-09mnesia_ext: Add create_external and increase protocol version to monitorUlf Wiger
new protocol version to handle new schema fields
2016-05-09mnesia_ext: Add ext copies to recordsUlf Wiger