查看源代码 Mnesia 发行说明
本文档描述了 Mnesia 系统从一个版本到另一个版本所做的更改。本文档的目的是列出 Mnesia 的每个版本的所有不兼容性以及所有增强功能和错误修复。因此,Mnesia 的每个版本都构成了本文档中的一个部分。每个部分的标题是 Mnesia 的版本号。
Mnesia 4.23.3
修复的错误和故障
从
ext_copies
转换为disc_copies
的 Mnesia 表现在将正确保存到磁盘。如果在检查点初始化期间删除了表,Mnesia 可能会崩溃。
自身 ID:OTP-19368 辅助 ID:ERIERL-1154,PR-9093
Mnesia 4.23.2
修复的错误和故障
mnesia_registry
模块已被弃用。自身 ID:OTP-18994
改进和新功能
文档已迁移为使用 Markdown 和 ExDoc。
自身 ID:OTP-18955 辅助 ID:PR-8026
Mnesia 4.23.1.1
修复的错误和故障
如果在检查点初始化期间删除了表,Mnesia 可能会崩溃。
自身 ID:OTP-19368 辅助 ID:ERIERL-1154,PR-9093
Mnesia 4.23.1
修复的错误和故障
如果在加载表时调用
del_table_copy/2
和add_table_copy/3
,Mnesia 可能会在启动期间崩溃。自身 ID:OTP-19076 辅助 ID:ERIERL-1073
Mnesia 4.23
修复的错误和故障
文档
mnesia:foldl/4
和mnesia:foldr/4
。自身 ID:OTP-18798
当节点启动时,
mnesia:add_table_copy/3
不再因系统限制而失败。自身 ID:OTP-18850
改进和新功能
如果 disc_only 表具有索引,则恢复重建可能会崩溃。
自身 ID:OTP-18843 辅助 ID:GH-7766
Mnesia 4.22.1
修复的错误和故障
如果新备份失败,则不要删除旧备份文件。
自身 ID:OTP-18711 辅助 ID:ERIERL-963
Mnesia 4.22
改进和新功能
添加了活动事务的调试统计信息。
自身 ID:OTP-18309 辅助 ID:PR-6377
已修复实现,以在适当的情况下使用
proc_lib:init_fail/2,3
,而不是proc_lib:init_ack/1,2
。* 可能不兼容 *
自身 ID:OTP-18490 辅助 ID:OTP-18471,GH-6339,PR-6843
Mnesia 4.21.4.3
修复的错误和故障
如果在加载表时调用
del_table_copy/2
和add_table_copy/3
,Mnesia 可能会在启动期间崩溃。自身 ID:OTP-19076 辅助 ID:ERIERL-1073
Mnesia 4.21.4.2
修复的错误和故障
当节点启动时,
mnesia:add_table_copy/3
不再因系统限制而失败。自身 ID:OTP-18850
Mnesia 4.21.4.1
修复的错误和故障
如果新备份失败,则不要删除旧备份文件。
自身 ID:OTP-18711 辅助 ID:ERIERL-963
Mnesia 4.21.4
修复的错误和故障
当使用
add_table_copy/3
添加表时,提高了脏写的兼容性。修复了粘性写入问题,该问题可能导致数据不一致。
自身 ID:OTP-18412
改进和新功能
将 size/1 替换为 tuple_size/1 或 byte_size/1
JIT 不会优化
size/1
BIF,并且其使用可能会导致 Dialyzer 的类型更差。当知道被测试的值必须是元组时,应始终首选
tuple_size/1
。当知道被测试的值必须是二进制时,应首选
byte_size/1
。但是,byte_size/1
也接受位串(将大小向上舍入为整数个字节),因此必须确保在调用byte_size/
之前调用is_binary/1
以确保拒绝位串。请注意,编译器会删除对is_binary/1
的冗余调用,因此如果不确定之前的代码是否已确保参数是二进制,则在调用byte_size/1
之前添加is_binary/1
测试不会造成任何损害。自身 ID:OTP-18432 辅助 ID:GH-6672,PR-6793,PR-6784,PR-6787,PR-6785,PR-6682,PR-6800,PR-6797,PR-6798,PR-6799,PR-6796,PR-6813,PR-6671,PR-6673,PR-6684,PR-6694,GH-6677,PR-6696,PR-6670,PR-6674
Mnesia 4.21.3
修复的错误和故障
修复了如果从远程节点发送过多的决策,则可能在启动期间发生的崩溃。
自身 ID:OTP-18319 辅助 ID:ERIERL-875
Mnesia 4.21.2
修复的错误和故障
如果由于分区网络导致 mnesia 无法连接到所有节点,则不要填写日志。
自身 ID:OTP-18288 辅助 ID:ERIERL-868
Mnesia 4.21.1
修复的错误和故障
修复了
add_table_copy
,如果在操作期间接收节点关闭,则可能留下表锁。自身 ID:OTP-18128 辅助 ID:PR-6013
Mnesia 4.21
改进和新功能
文档修复。
自身 ID:OTP-17930
Mnesia 4.20.4.4
修复的错误和故障
当节点启动时,
mnesia:add_table_copy/3
不再因系统限制而失败。自身 ID:OTP-18850
Mnesia 4.20.4.3
修复的错误和故障
如果新备份失败,则不要删除旧备份文件。
自身 ID:OTP-18711 辅助 ID:ERIERL-963
Mnesia 4.20.4.2
修复的错误和故障
如果由于分区网络导致 mnesia 无法连接到所有节点,则不要填写日志。
自身 ID:OTP-18288 辅助 ID:ERIERL-868
修复了如果从远程节点发送过多的决策,则可能在启动期间发生的崩溃。
自身 ID:OTP-18319 辅助 ID:ERIERL-875
Mnesia 4.20.4.1
修复的错误和故障
修复了
add_table_copy
,如果在操作期间接收节点关闭,则可能留下表锁。自身 ID:OTP-18128 辅助 ID:PR-6013
Mnesia 4.20.4
修复的错误和故障
修复了
mnesia:add_table_copy/3
,以便在另一个节点上启动 mnesia 时调用它不会失败或导致节点挂起。自身 ID:OTP-18056
Mnesia 4.20.3
改进和新功能
优化锁定器以处理同一记录上的多个读取锁。
自身 ID:OTP-17973 辅助 ID:ERIERL-772
Mnesia 4.20.2
改进和新特性
减少表复制期间获取的锁的数量,应缩短大型系统上的启动时间。
自身 ID:OTP-17656 辅助 ID:ERIERL-688
Mnesia 4.20.1
修复的错误和故障
文档和少量代码清理。
自身 ID:OTP-17727
Mnesia 4.20
修复的错误和故障
修复了当 mnesia:delete_object/1 尝试删除不存在的记录时,集合表的索引键被删除的问题。
自身 ID:OTP-17564 辅助 ID:GH-5040
改进和新特性
优化了表加载,并添加了
max_transfer_size
配置参数。自身 ID:OTP-17508
Mnesia 4.19.1
修复的错误和故障
已将弃用警告的抑制添加到 Mnesia 应用程序的源文件中。
自身 ID:OTP-17217
修复了后端插件初始化仅执行一次的问题。
自身 ID:OTP-17294 辅助 ID:GH-4525 PR-4674
Mnesia 4.19
修复的错误和故障
修复了
disc_only_copies
的类型规范。自身 ID:OTP-17249 辅助 ID:PR-4578
如果 mnesia 正在停止或启动,则不要在
mnesia:change_config/2
中崩溃。自身 ID:OTP-17274 辅助 ID:GH-4616
改进和新特性
优化了在加载期间更新的表的表加载时间。
自身 ID:OTP-17271 辅助 ID:PR-4575
Mnesia 4.18.1
修复的错误和故障
避免潜在的性能问题,如果
mnesia_tm
的输入队列很长。自身 ID:OTP-17066 辅助 ID:PR-2889
Mnesia 4.18
修复的错误和故障
修复了事务存储中 mnesia 删除对象的处理。在事务中,
mnesia:read/1
可能会指示在删除另一个对象后,存在的对象不存在。自身 ID:OTP-16782 辅助 ID:PR-2663
改进和新特性
修复了启动期间可能发生的崩溃,如果另一个节点上删除了表。
自身 ID:OTP-16815 辅助 ID:ERIERL-500
Mnesia 4.17
修复的错误和故障
使
mnesia:create_table/2
返回正确的 badarg 值。自身 ID:OTP-16072 辅助 ID:PR-2320
修复了 mnesia 有时在启动期间不等待非对称事务提交决定的错误。
自身 ID:OTP-16634 辅助 ID:PR-2610 ERL-1227
改进和新特性
删除 I/O 协议旧请求的使用和文档。
自身 ID:OTP-15695
避免使用
rpc
调用来读取表,这将减少 rpc 服务器的负载并提高性能。自身 ID:OTP-16189
Mnesia 4.16.3.1
改进和新特性
修复了启动期间可能发生的崩溃,如果另一个节点上删除了表。
自身 ID:OTP-16815 辅助 ID:ERIERL-500
Mnesia 4.16.3
修复的错误和故障
修复了卸载回退功能中的定时问题。
自身 ID:OTP-16468 辅助 ID:ERL-1151
Mnesia 4.16.2
修复的错误和故障
修复了尝试从包含
sticky_locks
的事务失败中恢复时可能发生的 mnesia 崩溃。自身 ID:OTP-16286 辅助 ID:ERL-1077
修复了 mnesia 索引问题。当使用索引插件后端更新记录时可能会发生。
自身 ID:OTP-16291 辅助 ID:ERL-1091
Mnesia 4.16.1
修复的错误和故障
如果在新节点启动时调用
mnesia:add_table_copy/3
,可能会导致死锁。自身 ID:OTP-15933 辅助 ID:ERL-872
带有粘性锁的事务可能会使用 async_asym 事务以错误的顺序提交,因为 asym 事务是在远程节点上生成的。
为了修复此错误,必须更新 mnesia 节点之间的通信协议,因此 mnesia 将不再能够连接到早于 mnesia-4.14、OTP-19.0 的节点。
* 可能不兼容 *
自身 ID:OTP-15979 辅助 ID:ERL-768
Mnesia 4.16
修复的错误和故障
如果数据在同一事务中写入,则优化 mnesia:read/1。
自身 ID:OTP-15550 辅助 ID:PR-2029
修复了表索引插件处理中的错误。
自身 ID:OTP-15689 辅助 ID:PR-1695 ERL-556
改进和新特性
优化了使用插件后端的表的转储。
自身 ID:OTP-15588 辅助 ID:PR-2102
如果脏活动出错,则在异常中包含堆栈跟踪,因此如果用户匹配抛出的错误,则可能不再匹配。
* 可能不兼容 *
自身 ID:OTP-15804 辅助 ID:PR-2216
Mnesia 4.15.6
修复的错误和故障
避免由于竞争条件引起的过载警告。
自身 ID:OTP-15619 辅助 ID:ERIERL-310
Mnesia 4.15.5
修复的错误和故障
修复了
mnesia:change_config/2
的类型规范。自身 ID:OTP-15201 辅助 ID:PR-1881
当没有可用的 disc_copies 时,如果设置了主节点,请不要强制从 ram_copies 副本加载,因为那样会加载一个空表。等待直到磁盘副本可用或直到用户显式强制加载该表。
自身 ID:OTP-15221 辅助 ID:ERIERL-217
即使所有其他副本都已关闭,也允许添加副本,如果其他副本未存储在磁盘上。
自身 ID:OTP-15226 辅助 ID:ERIERL-221
修复了
mnesia:delete_object/1
错误,其中如果 delete_object 在同一事务中写入,即使写入了不同的值,也会删除记录。自身 ID:OTP-15231 辅助 ID:PR-1858
修复了删除对象时未删除包表索引数据的错误。
自身 ID:OTP-15243
Mnesia 4.15.4
改进和新特性
删除了对
erlang:get_stacktrace()
的调用。自身 ID:OTP-14861
Mnesia 4.15.3.1
修复的错误和故障
当没有可用的 disc_copies 时,如果设置了主节点,请不要强制从 ram_copies 副本加载,因为那样会加载一个空表。等待直到磁盘副本可用或直到用户显式强制加载该表。
自身 ID:OTP-15221 辅助 ID:ERIERL-217
即使所有其他副本都已关闭,也允许添加副本,如果其他副本未存储在磁盘上。
自身 ID:OTP-15226 辅助 ID:ERIERL-221
Mnesia 4.15.3
修复的错误和故障
删除了启动时的二次行为。此更改意味着必须在创建架构时或在 mnesia 启动之前通过配置参数设置后端插件(如果使用)。
自身 ID:OTP-14829 辅助 ID:ERIERL-84
在具有相同检查点名称的不同表上停用并重新激活检查点后,糟糕的计时可能会导致 mnesia 崩溃。
自身 ID:OTP-14841 辅助 ID:ERIERL-113
Mnesia 4.15.2
修复的错误和故障
修复了备份错误处理,未返回真正的失败原因。
自身 ID:OTP-14776 辅助 ID:ERIERL-103
Mnesia 4.15.1
改进和新特性
常规 Unicode 改进。
自身 ID:OTP-14462
Mnesia 4.15
改进和新特性
删除了扩展插件处理中选择延续的包装。如果使用,这可能需要用户重写用户后端插件。
* 可能不兼容 *
自有 ID: OTP-14039
Mnesia 4.14.3
修复的 Bug 和故障
修复了在备份期间删除表时检查点处理中的崩溃问题。
自有 ID: OTP-14167
Mnesia 4.14.2
修复的 Bug 和故障
mnesia:select/[14] 返回的延续应可在不同的非事务性活动中重用。
自有 ID: OTP-13944 辅助 ID: PR-1184
修复了多次调用 block_table 时发生的崩溃问题。当长时间持有锁并重启 mnesia 时可能发生这种情况。
自有 ID: OTP-13970 辅助 ID: Seq-13198
更改 mnesia_tm 进程以拥有堆外消息,因为 mnesia_tm 可以是来自其他节点的许多非同步消息的接收者。
自有 ID: OTP-14074
Mnesia 4.14.1
改进和新功能
修正了一些小的文档问题。
自有 ID: OTP-13891
Mnesia 4.14
改进和新功能
添加了实验性的外部后端插件 API。这增加了用户编写其他数据存储后端的可能性,例如通过使用共享内存或 RAM 缓存的磁盘存储。
该插件 API 在经过实战测试后,可能会在未来的版本中发生变化。
自有 ID: OTP-13058
Mnesia 4.13.4
修复的 Bug 和故障
Mnesia 事务在等待已停止的节点的响应时可能会挂起。
自有 ID: OTP-13423
Mnesia 4.13.3
修复的 Bug 和故障
避免
mnesia:del_table_copy/2
中发生死锁的可能性自有 ID: OTP-13284
Mnesia 4.13.2
修复的 Bug 和故障
修复了 mnesia:restore/2 中的进程和文件描述符泄漏问题。
自有 ID: OTP-13025 辅助 ID: seq12957
Mnesia 4.13.1
修复的 Bug 和故障
改进了索引更新,以避免 dirty_index_read 中的时序故障。
自有 ID: OTP-12972
Mnesia 4.13
修复的 Bug 和故障
当发生错误时,Mnesia 的 dirty 函数并非总是按文档记录的那样以
{aborted, Reason}
退出。自有 ID: OTP-12714
将文件描述符限制 (emfile) 视为致命错误,并且不删除日志文件。以前,该错误被视为磁盘损坏,并且删除了日志文件,从而导致数据丢失。
自有 ID: OTP-12807
改进和新功能
使 Mnesia DCD 在启动时的转储行为成为可选的,关闭后,mnesia 加载大型 disc_copies 表的速度会更快。
自有 ID: OTP-12481
Mnesia 4.12.5
修复的 Bug 和故障
修复了协议协商中的竞争条件。
自有 ID: OTP-12473
改进和新功能
语法更正。(感谢 Derek Brown)
自有 ID: OTP-12400
Mnesia 4.12.4
修复的 Bug 和故障
修复了 mnesia 文档中的拼写错误。
自有 ID: OTP-12278
当在调用匹配之前在同一事务中写入数据时,使用
mnesia:match_object/1
匹配数据在某些情况下无法按预期工作。自有 ID: OTP-12304 辅助 ID: Seq12745
Mnesia 4.12.3
修复的 Bug 和故障
各种日志修复,包括:将运行队列索引添加到崩溃转储中的进程转储中。
崩溃时将线程索引添加到 enomem 标语中。
删除向同一节点的旧实例发送消息的错误记录器消息。自有 ID: OTP-12115
Mnesia 4.12.2
修复的 Bug 和故障
修复了在事务期间节点关闭时可能导致 create_table 失败的竞争问题。
自有 ID: OTP-12124 辅助 ID: seq12694
Mnesia 4.12.1
修复的 Bug 和故障
当节点在启动期间消失时,强制加载表可能会挂起。
自有 ID: OTP-11948 辅助 ID: seq12585
大大减少了为具有大量锁的事务插入锁的时间。
自有 ID: OTP-11981
Mnesia 4.12
修复的 Bug 和故障
一些从列表中删除最后一个元素的本地实现被
lists:droplast/1
替换。请注意,这至少需要stdlib-2.0
,它是 OTP 17.0 中提供的 stdlib 版本。(感谢 Hans Svensson)自有 ID: OTP-11678
以下应用程序的应用程序升级 (appup) 文件已更正
asn1、common_test、compiler、crypto、debugger、dialyzer、edoc、eldap、erl_docgen、et、eunit、gs、hipe、inets、observer、odbc、os_mon、otp_mibs、parsetools、percept、public_key、reltool、runtime_tools、ssh、syntax_tools、test_server、tools、typer、webtool、wx、xmerl
在 test_server 中添加了一个用于测试 appup 文件的新测试实用程序。现在,OTP 中的大多数应用程序都使用它。
(感谢 Tobias Schlager)
自有 ID: OTP-11744
改进和新功能
为了防止在收到节点关闭和节点启动事件时出现短暂的通信问题,现在存储这些事件,并在 mnesia 将节点标记为关闭之前检查该节点是否刚刚启动。(感谢 Jonas Falkevik)
自有 ID: OTP-11497
添加了
mnesia:sync_log/0
以显式同步 mnesia 的事务日志。自有 ID: OTP-11729
Mnesia 4.11
修复的 Bug 和故障
修复了 mnesia 中的一个竞争问题,该问题在使用粘性锁时可能导致事务挂起。感谢 janchochol。
自有 ID: OTP-11375
修复了 dirty_update_counter 可能返回 ok 的问题,感谢 Anton Ryabkov。
自有 ID: OTP-11485
Mnesia 4.10
修复的 Bug 和故障
修复了检查点创建中的时序问题。
自有 ID: OTP-10957
改进和新功能
修复了在调用 mnesia:uninstall_fallback 且 mnesia 未启动时删除回退 BUP 文件的问题。
自有 ID: OTP-11241
Mnesia 4.9
修复的 Bug 和故障
如果在表加载期间在该表上调用 mnesia:clear_table/2,则会将模式记录写入表,而不是清除表。
自有 ID: OTP-11030 辅助 ID: seq12267
改进和新功能
优化了 Mnesia set 表的索引创建。感谢 Nick Marino。
自有 ID: OTP-11103
Mnesia 4.8
修复的 Bug 和故障
使用链式 send_after 而不是 send_interval,以减少睡眠后发送的消息数量(感谢 James Wheare)
自有 ID: OTP-10636
修复了 mnesia 过载消息的格式(感谢 Ahmed Omar)
自有 ID: OTP-10639
改进和新功能
添加了一个用于执行 Erlang/OTP 基准测试的通用框架。Erlang VM 和 mnesia 的基准测试已纳入该框架中。
有关如何添加更多基准测试的详细信息,请参阅源代码发行版中的 $ERL_TOP/HOWTO/BENCHMARKS.md。
自有 ID: OTP-10156
在必要时,已将声明编码的注释添加到 Erlang 文件中。当 UTF-8 成为默认编码时,该注释将在 Erlang/OTP R17B 中删除。
自有 ID: OTP-10630
删除了对查询关键字和查询表达式的支持。感谢 Loïc Hoguin。
自有 ID: OTP-10729
Mnesia 4.7.1
修复的 Bug 和故障
添加测试以表明尝试删除不存在的对象可能会损坏该对象
对于 bag 表,尝试删除不存在的对象会导致索引损坏。如果我们要删除的不存在的对象恰好与其键和索引字段值与表中的单个现有对象共享,则会发生这种情况。结果:删除与现有对象对应的索引条目。
防止在删除不存在的项目时索引损坏
我们必须确保在删除索引之前实际删除具有给定 (key, index) 对的最后一个对象。感谢 Bartlomiej Puzon
自有 ID: OTP-10220
Mnesia 4.7
修复的 Bug 和故障
如果找不到表副本,则为 mnesia_loader:disc_load_table/2 返回与 mnesia_loader:net_load_table/4 相同的值。(感谢 Uwe Dauernheim)
自有 ID: OTP-10015
改进和新特性
改进了表锁算法。
内部ID: OTP-9890
Mnesia 4.6
修复的 Bug 和故障
减少 key_to_frag_number 中的 phash 调用次数
原始代码根据哈希键的目标片段和现有片段的数量,调用 phash 1..2 次。新代码始终只调用 phash 一次。
添加 mnesia_frag_hash 测试 (感谢 Philip Robinson)
内部ID: OTP-9722
修复了一个粘滞锁的 bug,该 bug 导致 mnesia:read(Tab, Key, write) 返回 undefined。
内部ID: OTP-9786
在 mnesia_log:ets2dcd() 中使用同步 log_terms 代替 alog_terms
这避免了 mnesia 将一个非常大的 ets 表完全转储到 disk_log 进程的消息队列中,从而导致内存爆炸并阻塞磁盘记录器的情况。(感谢 Richard Carlsson)
内部ID: OTP-9804
改进和新特性
为 mnesia:create_table/2 实现了一个新选项,允许用户分配 mnesia 中不可用的 'ets' 和 'dets' 选项。
内部ID: OTP-8970
Mnesia 4.5.1
修复的 Bug 和故障
修复了 mnesia:del_table_copy/2 中的死锁。
内部ID: OTP-9689 辅助ID: seq11927
改进和新特性
允许在使用不同 mnesia 版本时进行模式操作。
内部ID: OTP-9657 辅助ID: seq11926
Mnesia 4.5
修复的 Bug 和故障
修复了协议问题。Mnesia-4.4.19 无法与旧节点通信。
内部ID: OTP-9473
XML 文件已更正。
内部ID: OTP-9550 辅助ID: OTP-9541
改进和新特性
即使本地节点上没有调用任何事务,也会转储日志,否则日志会随着其他在磁盘上有表的节点的决策而无限增长。感谢 Marek Majkowski。
内部ID: OTP-9551
使用专用的 api 来清除表,即使用 delete_all_objects 代替 match_delete。感谢 KukHyun Lee。
内部ID: OTP-9558
Mnesia 4.4.19
修复的 Bug 和故障
如果在所有节点上加载表之前调用 mnesia:add_table_index/2,Mnesia 可能会崩溃。
内部ID: OTP-9285 辅助ID: seq11844
添加每个表的 {majority, boolean()} 选项。
如果表的 {majority, true} 设置,则如果写入事务无法提交到拥有该表副本的大多数节点,则该事务将中止。目前,该实现挂钩到 prepare_commit,如果提交集影响任何设置了 majority 标志的表,则强制执行不对称事务。在提交本身中,如果事务无法满足所有涉及的表的多数要求,则该事务将中止。(感谢 Ulf Wiger)
内部ID: OTP-9304
Mnesia 4.4.18
修复的 Bug 和故障
调用 chmod 时不带 "-f" 标志
"-f" 是一个非标准的 chmod 选项,至少 SGI IRIX 和 HP UX 不支持。 由于 "-f" 标志的唯一作用是抑制警告消息,因此可以安全地省略。(感谢 Holger Weiß)
内部ID: OTP-9170
Mnesia 有时无法更新大型系统中的元信息,这可能会导致节点之间的表内容不一致。
内部ID: OTP-9186 辅助ID: seq11728
Mnesia 4.4.17
修复的 Bug 和故障
在空的分片表上调用 mnesia:first/1 可以工作。感谢 Magnus Henoch。
内部ID: OTP-9108
如果 Mnesia 检测到网络在启动期间未完全连接,则 Mnesia 将不会启动,直到所有节点都可访问为止。
内部ID: OTP-9115 辅助ID: seq-11728
改进和新特性
修复了 dialyzer 报告的问题。
内部ID: OTP-9107
Mnesia 4.4.16
修复的 Bug 和故障
当使用 'recreate_tables' 选项调用 mnesia:restore/2 时,有时会在表中添加 'log_header' 记录。感谢 Vance Shipley。
内部ID: OTP-8960
改进和新特性
消除了编译器警告。
内部ID: OTP-8855
Mnesia 4.4.15
改进和新特性
消除了自动导入 BIF 冲突的警告。
内部ID: OTP-8840
Mnesia 4.4.14
改进和新特性
添加了 Bernard Duggan 贡献的 mnesia:subscribe(activity)。
内部ID: OTP-8519
Mnesia 4.4.13
修复的 Bug 和故障
当调用 mnesia:sync_transaction/[1,2] 时,如果节点崩溃,事务可能会挂起。 感谢 Igor Ribeiro Sucupira。
内部ID: OTP-8402
改进和新特性
Igor Ribeiro Sucupira 添加了在 Mnesia 节点之间复制表时压缩数据的选项。
内部ID: OTP-8406
Mnesia 4.4.12
改进和新特性
现在使用大多数平台上都存在的开源工具(xsltproc 和 fop)来构建文档。一个可见的变化是删除了框架。
内部ID: OTP-8250
Mnesia 4.4.11
改进和新特性
修复了在 ordered_set 表上使用 mnesia:index_read() 时的重复结果。由 Sam Bobroff 报告。
修复了 mnesia:index_read() 中的锁定,该锁定现在会获取读取表锁以确保正确性,这可能会减慢操作速度或阻止其他进程尝试访问同一表。
调用 mnesia:dump_log() 可能会导致 mnesia 崩溃,由 Igor Ribeiro Sucupira 报告。
内部ID: OTP-8074
Mnesia 4.4.10
修复的 Bug 和故障
当 mnesia 在另一个节点停止时,如果 qlc 查询在事务内部运行,Mnesia 会崩溃。感谢 Teemu Antti-Poika。
内部ID: OTP-7968
加载 local_content 表时 Mnesia 可能会崩溃。
内部ID: OTP-8002 辅助ID: seq11277
改进和新特性
小的 (smp) 优化。
内部ID: OTP-7928
Mnesia 4.4.9
修复的 Bug 和故障
如果在事务内部调用,mnesia:clear_table/1 会崩溃而不是返回
{aborted,..}
。内部ID: OTP-7911
Mnesia 4.4.8
修复的 Bug 和故障
在 mnesia 关闭时,如果时机不佳,几个 api 函数可能会返回或退出并显示错误消息。
内部ID: OTP-7753 辅助ID: seq11179
mnesia:clear_table/1
清除了所有节点的表内容,即使该表是local_content
类型。内部ID: OTP-7835
Mnesia 4.4.7
修复的 Bug 和故障
不允许将匹配模式 ('_' 和 '$n') 作为
mnesia:delete_object/1
及其相关函数的参数。自有 ID: OTP-7524
改进和新功能
在 Mnesia 中引入了一些新函数:
mnesia:read/2
,mnesia:first/3
,mnesia:last/3
,mnesia:prev/4
,mnesia:next/4
,mnesia_frag:first/1
,mnesia_frag:last/1
,mnesia_frag:prev/2
,mnesia_frag:next/2
。自有 ID: OTP-7625
Mnesia 4.4.6
修复的错误和故障
如果客户端消息队列中出现
EXIT
消息,mnesia:restore/2
将会中止。自有 ID: OTP-7585 辅助 ID: seq11046
Mnesia 4.4.5
改进和新功能
mnesia:clear_table/1 不再要求表的所有副本都可用。
自有 ID: OTP-7466 辅助 ID: seq11015
Mnesia 4.4.4
修复的错误和故障
如果在本地节点上没有进行任何事务,Mnesia 不会对基于磁盘节点的事务决策进行垃圾回收。
自有 ID: OTP-7419
Mnesia 4.4.3
修复的错误和故障
当从模式中移除节点时,外键引用的表没有正确清理 node_pool。感谢 Paul Mineiro。
自有 ID: OTP-7340
如果在 mnesia 停止时正在运行 schema_transaction,Mnesia 会崩溃并生成核心转储。
自有 ID: OTP-7378 辅助 ID: seq10964
改进和新功能
现在即使其他磁盘驻留节点已关闭,也可以删除数据库节点。感谢 Paul Mineiro。
自有 ID: OTP-7383
Mnesia 4.4.2
修复的错误和故障
粘性锁可能会导致事务挂起。
自有 ID: OTP-7205 辅助 ID: seq10793
mnesia:snmp_get_next_index/2
不适用于部分索引键。现在根据文档在函数mnesia:snmp_get_row/2
,mnesia:snmp_get_mnesia_key/2
和mnesia:snmp_get_next_index/2
中进行参数检查。这些函数现在要求RowIndex
是一个列表。* 可能不兼容 *
自有 ID: OTP-7208
Mnesia 4.4.1
修复的错误和故障
Snmp 索引表在
mnesia-4.4
中未正确初始化。自有 ID: OTP-7170 辅助 ID: seq10870
已知错误和问题
重新排列碎片表是一个 O(N^2) 操作。
自有 ID: OTP-6300
Mnesia 4.4
修复的错误和故障
Mnesia 忽略了
mnesia:restore/2
的模块参数。感谢 Paul Minerio。自有 ID: OTP-6981
改进和新功能
Mnesia 的 snmp 操作
snmp_get_row/2
,snmp_get_next_index/2
和snmp_get_mnesia_key/2
已变为上下文感知,即在事务内部,它们将补偿在同一事务中早期进行的表更新。如果在调用这些函数之前进行了大量更新,这可能会导致性能下降。* 可能不兼容 *
自有 ID: OTP-6856 辅助 ID: seq10671
引入 erlang:phash/2 作为碎片表的新默认值。已存在的表将继续使用它们正在使用的任何哈希函数。
自有 ID: OTP-6923
自有 ID: OTP-6995 辅助 ID: seq10812
已知错误和问题
重新排列碎片表是一个 O(N^2) 操作。
自有 ID: OTP-6300