Age | Commit message (Collapse) | Author |
|
The previous commit contained a regression that would trigger a crash
when attempting to add an index to an Mnesia table of type ordered_set.
|
|
ETS bag tables have very poor performance on insertion if you have lots
of rows with duplicate keys, since it has to check each existing record
and make sure it's not inserting any duplicates. This can lead to some
pretty drastic slowdowns when inserting lots of rows into an Mnesia
table, IF you're introducing lots of duplicate values into an indexed
column.
As it turns out, we can fix this by switching to duplicate_bag tables
for storing Mnesia indexes on tables of type 'set', and it ultimately
makes no functional difference since we will never actually attempt to
insert any duplicate records anyway. (We would have to make some bigger
changes to make this work for Mnesia bag tables though, so that is left
as a possible enhancement for the future.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* lh/forget-mnemosyne/OTP-10729:
Remove what remains of the Mnemosyne code
Remove support for the query keyword and query expressions
|
|
* nox/enable-silent-rules/OTP-10726:
Implement ./otp_build configure --enable-silent-rules
|
|
|
|
With silent rules, the output of make is less verbose and compilation
warnings are easier to spot. Silent rules are disabled by default and
can be disabled or enabled at will by make V=0 and make V=1.
|
|
|
|
* ao/fix_mnesia_overload_msg_format:
Fix format of mnesia overload message
OTP-10639
|
|
Using ~p in mnesia overload message could lead to wrong messages.
mnesia_tm overload message contains a list of two numbers (queue length)
example:
instead of:
Mnesia is overloaded: {mnesia_tm,message_queue_len,[100,105]}
it prints :
Mnesia is overloaded: {mnesia_tm,message_queue_len,"di"}
Replacing ~p with ~w fixes the problem as it doesn't try
to detect lists of printable characters
|
|
timer:send_interval behaves badly when resuming from sleep on some
platforms. For example, if I sleep for 10 minutes, and have a
send_interval running once per minute, when I resume, 10 messages
will be sent immediately, eliminating the benefit of only running
the work periodically. This is admittedly a separate bug with
send_interval, but the workaround is straightforward, and also
protects from messages piling up in the queue when the work takes
longer than the interval.
This patch fixes piled up error reports on resume from sleep:
** WARNING ** Mnesia is overloaded: {dump_log, write_threshold}
You'll still be warned if mnesia is overloaded, just not repeatedly.
Additionally, erlang:send_after is more efficient than using the
timer module equivalent [1]
[1] http://www.erlang.org/doc/efficiency_guide/commoncaveats.html#id57251
|
|
Crashes on windows XP otherwise path > 256..
|
|
The R15B02 release
|
|
|
|
Conflicts:
lib/diameter/autoconf/vxworks/sed.general
xcomp/README.md
|
|
|
|
* maint:
Bumped version nr
ssl & public_key: Workaround that some certificates encode countryname as utf8 and close down gracefully if other ASN-1 errors occur.
Add more cross reference links to ct docs
Remove config option from common_test args
Update user config to use nested tuple keys
Allow mixed IPv4 and IPv6 addresses to sctp_bindx
Add checks for in6addr_any and in6addr_loopback
Fix SCTP multihoming
observer: fix app file (Noticed-by: Motiejus Jakstys)
Fix lib/src/test/ssh_basic_SUITE.erl to fix IPv6 option typos
Prevent index from being corrupted if a nonexistent item is deleted
Add tests showing that trying to delete non-existing object may corrupt the table index
Fix Table Viewer search crash on new|changed|deleted rows
Escape control characters in Table Viewer
Fix Table Viewer crash after a 'Found' -> 'Not found' search sequence
inet_drv.c: Set sockaddr lengths in inet_set_[f]address
Conflicts:
erts/preloaded/ebin/prim_inet.beam
|
|
|
|
* egil/r16/remove-vxworks-support/OTP-10146: (30 commits)
erts: Update doc to reflect VxWorks removal
erts: Remove VxWorks from documentation
Update preloaded erl_prim_loader and prim_file
snmp: Remove VxWorks
megaco: Remove VxWorks
diameter: Remove VxWorks
mnesia: Remove VxWorks
typer: Remove VxWorks
ssh: Remove VxWorks
inets: Remove VxWorks
hipe: Remove VxWorks
cosFileTransfer: Remove VxWorks
asn1: Remove VxWorks
orber: Remove VxWorks
os_mon: Remove VxWorks
runtime_tools: Remove VxWorks
test_server: Remove VxWorks references in doc
test_server: Remove VxWorks
stdlib: Remove VxWorks
kernel: Remove VxWorks from tests
...
Conflicts:
erts/emulator/test/Makefile
|
|
|
|
|
|
We have to ensure that we actually delete the last object with a
given (key, index) pair before removing the index.
|
|
table index
In case of bag tables, trying to delete a non-existing object leads to
the index becoming corrupt. This happens if the non-existing object we
try to delete happens to share its key and index field value with a single
existing object in the table.
Result: The index entry corresponding to the existing object is
removed.
|
|
OTP-10106
OTP-10107
|
|
|
|
|
|
* ud/fix-return-do_get_disc_copy2:
Fixes value returned by mnesia_loader:do_get_disc_copy2/4
OTP-10015
OTP-10016
|
|
|
|
If a transaction releases a write, it can be deleted directly since no read locks
or other write locks can be present
|
|
|
|
5% faster on tpcb
|
|
Switch to ordered_set so match_object matches partially bound keys,
more efficient.
|
|
Returns the same value for `mnesia_loader:disc_load_table/2' as
`mnesia_loader:net_load_table/4' if a table copy can not be found.
This patch was stuck as a pull request in GitHub (authored by Uwe
Dauernheim):
https://github.com/erlang/otp/pull/16
|
|
|
|
|
|
* dgud/mnesia/read-sticky-bug/OTP-9786:
[mnesia] Read record from correct node
[mnesia] Fixed sticky read lock bug
[mnesia] Whitespace fixes
Conflicts:
lib/mnesia/src/mnesia_log.erl
|
|
* rc/mnesia_log-no-async:
Use the synchronous log_terms instead of alog_terms in mnesia_log:ets2dcd()
OTP-9804
|
|
This avoids the situation where mnesia could dump a very large ets table in
its entirety into the message queue of the disk_log process, causing memory
blowup and choking the disk logger.
|
|
Read from where_to_read otherwise bad data may read during
move_table, where where_to_write is updated before where_to_read
and the table is available.
|
|
* dgud/mnesia/impl-table-options/OTP-8970:
[mnesia] Add possibility for implementation dependent storage options to create_table
|
|
wread on locks stuck at non-local node could return unexpected value.
Thanks to Magnus Henoch who posted a nice testcase showing the bug.
|
|
|
|
|
|
create_table
|