Age | Commit message (Collapse) | Author |
|
with keys containing off-heap terms.
The passed key may actually be the one already saved
(if nodes have been joined), in which case we do nothing.
Calling destroy_route_key() may destroy off-heap data.
|
|
to provoke iteration over a moving ordered_set with write_concurrency
and make sure we hit all "stable" keys.
|
|
to generate a routing tree with keys that fit each test case.
|
|
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.
|
|
|
|
|
|
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.
|
|
with ets_force_split
|
|
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.
|
|
|
|
|
|
|
|
* sverker/erts/erts-fix-merge-commit:
erts: Fix bug introduced in merge commit
|
|
f4f409ff28185b3308359ca5ca91921bc51f536f
|
|
# Conflicts:
# erts/emulator/beam/erl_db_tree.c
|
|
* sverker/erts/ets-select_replace-bug/OTP-15346:
erts: Fix bug in ets:select_replace for bound key
|
|
which may cause following calls to ets:next or ets:prev to fail.
|
|
* origin/sverker/erts/freeing-ordered_set-nodes/OTP-15323:
erts: Refactor out DbRouteKey struct
erts: Remove dead code in erl_db_catree
erts: Fix bug in erl_db_catree
erts: Remove "dynamic" lock order support
erts: Add lock order check for route nodes
erts: Add lock order check of erl_db_catree base nodes
erts: Add Erlang term order to lock checker
erts: Add some ERTS_RESTRICT pointers
erts: Do some refactoring in erl_db_catree.c
erts: Improve deallocation of CATree nodes
erts: Refactor rename union in DbTableCATreeNode
erts: Fix compiler warning in erl_bif_binary.c
|
|
* maint:
inets: Fix handling of 'Content-Type' (httpc)
inets: Fix handling of 'Content-Length' (httpc)
Change-Id: I3c8b4ef664d1888efb87d7799365df66eb4b2ff3
|
|
* peterdmv/inets/httpc-content-type/ERL-736/OTP-15339:
inets: Fix handling of 'Content-Type' (httpc)
Change-Id: I8c9f48d8474dba7a83e4ecba6b8146faffb559fc
|
|
* peterdmv/inets/httpc-content-length/ERL-733/OTP-15338:
inets: Fix handling of 'Content-Length' (httpc)
Change-Id: I3281949d47d2494dc8d6f3af3e93b46cdbbc24b9
|
|
Conflicts:
lib/ssl/src/ssl_connection.erl
lib/ssl/src/tls_connection.erl
|
|
* ingela/ssl/close-alert-ERL-738/OTP-15337:
ssl: ERL-738 - Correct alert handling with new TLS sender process
|
|
With the new TLS sender process, solving ERL-622, TLS ALERTs sent in
the connection state must be encrypted and sent by the TLS sender
process. This to make sure that the correct encryption state is used
to encode the ALERTS. Care must also be taken to ensure a graceful
close down behavior both for normal shutdown and downgrading from TLS
to TCP.
The original TR ERL-738 is verified by cowboy tests, and close down
behavior by our tests. However we alas have not been able to yet
create a minimal test case for the originating problem.
Also it seems it has become less likely that we run in to the TCP
delivery problem, that is the guarantee is only on transport level,
not application level. Keep work around function in ssl_test_lib but
we can have better test as long as we do not get to much wobbling
tests.
|
|
Use os:getenv/2 where possible
|
|
* maint:
compiler: Forward +source flag to epp and fix bug in +deterministic
epp: Allow user to set source name independently of input file name
|
|
* john/compiler/deterministic-paths/OTP-15245/ERL-706:
compiler: Forward +source flag to epp and fix bug in +deterministic
epp: Allow user to set source name independently of input file name
|
|
* john/compiler/fix-literal-fun-stackframes:
beam_ssa_pre_codegen: Literal funs need stack frames too
|
|
Fixes a crash during code generation of the following code:
call_atom() ->
fun({send = Send}) ->
Send()
end.
|
|
The source file path as given to `erlc` was included in an implicit
file attribute inserted by epp, even when the +source flag was
set to something else which was a bit surprising. It was also
included when +deterministic was specified, breaking the flag's
promise.
This commit forwards the +source flag to epp so it inserts the
right information, and if +deterministic is given it will be shaved
to just the base name of the file, guaranteeing the same result
regardless of how the input is reached.
|
|
Note that this does *not* affect -include()'d files or the -file()
directive.
|
|
|