Age | Commit message (Collapse) | Author |
|
We no longer lock more than one base node at a time.
We do however trylock a second base node at join.
|
|
for different lock instances.
|
|
|
|
The original implementation did not do this due to fear of bad
performance. But we think the negative effect of "leaking" empty
base nodes is more important to fix.
To get the bad performance a special kind of access patterns is
needed where base nodes are frequently emptied and then repopulated
soon again. ets_SUITE:throughput_benchmark for example did not show
any negative effect from this commit at all.
|
|
This greatly increases the performance of '--'/2 which does a lot
of term comparisons.
|
|
|
|
The first stage wasn't bounded by reductions, and it bumped far
more reductions than it should have due to a logic bug.
|
|
In the implementation of the zero-copying term storage, we
want to preserve sharing, but not copy literals because the
modules holding the literals could be unloaded under our feet.
|
|
* maint:
beam_lib: Remove obsolete module() from the beam() type
hipe: Don't use beam_lib:info/1 with an atom as filename
Honor the max heap size when copying literals after purging
|
|
|
|
Easier to read and debug, and about the same lines of code.
|
|
It's possible to first find an empty base node
and then retry and find the same base node as invalid.
It's a benign race with join which first makes the old invalid
'neighbor' accessible from 'gparent' before replacing it with
'new_neighbor'.
|
|
|
|
|
|
to actually pass the copy to lock checker.
|
|
Once an iteration key has been found, never fall back to first/last key in
next/prev tree as trees may split or join under our feet. I.e we must always
use previous key when searching for the next key.
|
|
to not have to backtrack up on the stack.
|
|
to easier generate a routing tree for test
without having to spend cpu to provoke actual repeated lock conflicts.
|
|
{RouteNodes, BaseNodes, MaxRouteTreeDepth}
|
|
|
|
|
|
Brute force solution will always iterate tree from slot 0 and forward.
ToDo1: Yield.
ToDo2: Maybe optimize by caching AVL tree size in each base node.
|
|
|
|
|
|
DbTableCATree has no static stack.
|
|
Move lookup from analyze_pattern to callers.
|
|
|
|
|
|
|
|
When a module has been purged from memory, any literals belonging
to that module will be copied to all processes that hold references
to them.
The max heap size limit would be ignored in the garbage collection
initiated when copying literals to a process. If the max heap size
was exceeded, the process would typically be terminated in the
following garbage collection.
Since the process would be killed anyway later, kill the process
before copying a literal that would make it exceed its max heap
size.
While at it, also fix a potential bug in `erlang:garbage_collect/0`.
If it was found that the max heap sized had been exceeded while
executing `erlang:garbage_collect/0`, the process would enter a
kind of zombie state instead of being properly terminated.
|
|
|
|
* sverker/erts/debug_free_null:
erts: Fix bug in debug_free for NULL pointer
|
|
* john/erts/update-zlib/OTP-15351/ERL-749:
Update zlib to 1.2.11
Allow undefined macros when building zlib
|
|
* maint:
"cork" tcp socket around file:sendfile
Add nopush TCP socket option
|
|
* igor/tcp-nopush-ERL-698/OTP-15357:
"cork" tcp socket around file:sendfile
Add nopush TCP socket option
|
|
john/erts/update-zlib/OTP-15351/ERL-749
* fhunleth/fix-muslc-compiler-error:
Allow undefined macros when building zlib
|
|
|
|
causing ASSERT in sys_memset to fail.
|
|
* maint:
Updated OTP version
Prepare release
erts: Fix UNC path handling on Windows
erts: Fix a compiler warning
eldap: Fix race at socket close
Fix bug for sockopt pktoptions on BSD
erts: Fix memory leak on file read errors
|
|
* maint-21:
Updated OTP version
Prepare release
erts: Fix UNC path handling on Windows
erts: Fix a compiler warning
eldap: Fix race at socket close
Fix bug for sockopt pktoptions on BSD
erts: Fix memory leak on file read errors
|
|
* john/erts/fix-unc-paths-windows/OTP-15333/ERL-737:
erts: Fix UNC path handling on Windows
erts: Fix a compiler warning
|
|
* raimo/BSD-sockopt-pktoptions/ERIERL-187/OTP-14297:
Fix bug for sockopt pktoptions on BSD
|
|
Conflicts:
erts/preloaded/ebin/prim_inet.beam
|
|
RaimoNiskanen/raimo/getifaddrs-netns/ERIERL-189/OTP-15121
Implement {netns,NS} option for inet:getifaddrs/1 and friends
|
|
When building Erlang on a system that uses the Musl C library, it's
possible to get the following error:
In file included from zlib/adler32.c:11:0:
zlib/zutil.h:172:39: error: "_LFS64_LARGEFILE" is not defined [-Werror=undef]
(!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0)
^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
On the same systems, zlib is built without `-Werror=undef` so do the
same when building it with Erlang.
Signed-off-by: Frank Hunleth <[email protected]>
|
|
This is unlikely to be the last of the path problems seen after
OTP 21, and I'm starting to regret my decision to unconditionally
use long paths. The idea to hit all long-path problems all the time
was good in theory as it makes such bugs far more visible, but
there just aren't enough people who test pre-release versions on
Windows, making this the world's slowest game of whack-a-mole.
|
|
This would've been a bug if the value was used.
|
|
This translates to TCP_CORK on Linux and TCP_NOPUSH on
BSD.
In effect, this acts as super-Nagle: no partial TCP segments
are sent out until this option is turned off. Once turned off,
all accumulated unsent data is sent out immediately. The latter
is *not* the case on OSX, hence the implementation ignores
"nopush" on OSX to reduce confusion.
|
|
f4f409ff28185b3308359ca5ca91921bc51f536f
|
|
# Conflicts:
# erts/emulator/beam/erl_db_tree.c
|