Age | Commit message (Collapse) | Author |
|
Calls to global:whereis_name/1 have been substituted for calls to
global:safe_whereis_name/1 since the latter is not safe at all.
The reason for not doing this earlier is that setting a global lock
masked out a bug concerning the restart of supervised children. The
bug has now been fixed by a modification of global:whereis_name/1.
(Thanks to Ulf Wiger for code contribution.)
|
|
Fixed a minor race conditions in gen_fsm:start*: if one of these
functions returned {error,Reason} or ignore, the name could still be
registered (either locally or in global.
This is the same modification as was done for gen_server in OTP-7669.
|
|
* rickard/bad-rwmtx-assert:
Fix bad assertion in rwmtx implementation
|
|
* rickard/multi-exit-bug/OTP-9705:
Make sure only one thread exits the runtime system
|
|
* rickard/win-cs-mutex/OTP-9671:
Use critical sections as mutex implementation on Windows
|
|
* rickard/generic-thr-queue/OTP-9632:
Use generic lock-free queue for async threads
Use generic lock-free queue for misc aux work
Implement generic lock-free queue
|
|
* rickard/thr-progress-block/OTP-9631:
Replace system block with thread progress block
|
|
* rickard/alloc-opt/OTP-7775:
Optimize memory allocation
Conflicts:
erts/aclocal.m4
erts/emulator/hipe/hipe_bif_list.m4
erts/preloaded/ebin/erl_prim_loader.beam
erts/preloaded/ebin/erlang.beam
erts/preloaded/ebin/init.beam
erts/preloaded/ebin/otp_ring0.beam
erts/preloaded/ebin/prim_file.beam
erts/preloaded/ebin/prim_inet.beam
erts/preloaded/ebin/prim_zip.beam
erts/preloaded/ebin/zlib.beam
|
|
The runtime system crashed if more than one thread tried to exit
the runtime system at the same time.
|
|
Windows native critical sections are now used internally in the
runtime system as mutex implementation. This since they perform
better under extreme contention than our own implementation.
|
|
Queues used for communication between async threads and scheduler threads
have been replaced with lock-free queues.
Drivers using the driver_async functionality are not automatically locked
to the system anymore, and can be unloaded as any dynamically linked in
driver.
Scheduling of ready async jobs is now also interleaved in between other
jobs. Previously all ready async jobs was performed at once.
|
|
|
|
The implementation of an ERTS internal, generic, many to one, lock-free
queue for communication between threads. The many to one scenario is
very common in ERTS, so it can be used in a lot of places in the future.
Changing to this queue from a lock based queue, however, often requires
some redesigning. This since we have often used the lock of the queue
to protect other information too.
|
|
The ERTS internal system block functionality has been replaced by
new functionality for blocking the system. The old system block
functionality had contention issues and complexity issues. The
new functionality piggy-backs on thread progress tracking functionality
needed by newly introduced lock-free synchronization in the runtime
system. When the functionality for blocking the system isn't used
there is more or less no overhead at all. This since the functionality
for tracking thread progress is there and needed anyway.
|
|
A number of memory allocation optimizations have been implemented. Most
optimizations reduce contention caused by synchronization between
threads during allocation and deallocation of memory. Most notably:
* Synchronization of memory management in scheduler specific allocator
instances has been rewritten to use lock-free synchronization.
* Synchronization of memory management in scheduler specific
pre-allocators has been rewritten to use lock-free synchronization.
* The 'mseg_alloc' memory segment allocator now use scheduler specific
instances instead of one instance. Apart from reducing contention
this also ensures that memory allocators always create memory
segments on the local NUMA node on a NUMA system.
|
|
|
|
* anders/diameter/capabilities_cb/OTP-9654:
Update documentation
Add capx suite
Accept any 2xxx result code in CEA
Rename some functions plus comment tweak
Send events for connection establishment failure
Use trivial capabilities callback in traffic suite
Add capabilities_cb transport option
Minor tls_ack simplification
diameter_dbg:log -> diameter_lib:log
|
|
* anders/diameter/make/OTP-9638:
Fix comment typo
Simplify handling of generated hrls in testsuites
Minor dependency fix
Target cleanup in test/Makefile
|
|
* lars/xmerl/unicode-non-characters/OTP-9670:
Fix character check of non-characters due to change in unicode module
|
|
|
|
* nox/xmerl-namespace-axis/OTP-9664:
Fix bugs and add a flag to skip comments
Implement namespace axis
Add `#xmlPI` support to xmerl_xpath:write_node/1
Fix processing-instruction(name?)
Fix path filters
Support more top-level primary expressions
Accumulate comments in element nodes
Add `default_attrs` option
Allow whole documents to be returned
Track parents and namespace in `#xmlAttribute` nodes
Track parents in `#xmlPI` nodes
Set `vsn` field in `#xmlDecl` record
Fix namespace-conformance constraints
|
|
Add flag {comments, Flag} to xmerl_scan for filtering of comments.
Default (true) is that xmlComment records are returned from the scanner
and this flag should be set to false if one don't want comments
in the output.
Fix some bugs to get the test cases to run clean.
|
|
Namespace nodes are represented as `#xmlNsNode` records.
Now that the namespace axis is correctly implemented, attributes nodes
corresponding to attributes that declare namespaces are ignored.
See [5.3 Attribute Nodes][xpath-5.3]:
> There are no attribute nodes corresponding to attributes
> that declare namespaces.
[xpath-5.3]: http://www.w3.org/TR/xpath/#attribute-nodes
|
|
|
|
|
|
|
|
This change allows numbers and literals to be used as top-level primary
expressions without failing:
1> xmerl_xpath:string("3", Doc).
#xmlObj{type = number,value = 3}
2> xmerl_xpath:string("'foo'", Doc).
#xmlObj{type = string,value = "foo"}
We still need to allow arithmetic, comparative, boolean and negative
expressions, as in `xmerl_xpath_pred:expr/2`.
|
|
|
|
When `default_attrs` is `true`, any attribute with a default value defined
in the doctype but not in the attribute axis of the currently scanned
element is added to it.
|
|
Functions `xmerl_scan:file/2` and `xmerl_scan:string/2` now accepts a
new option `{document, true}` to produce a whole document as a
`xmlDocument` record instead of just the root element node.
You may wonder why this would be useful, this option is the only way to
get to the top-level comments and processing instructions without
hooking through the customization functions. Those nodes are needed to
implement [Canonical XML][c14n-xml] support.
[c14n-xml]: http://www.w3.org/TR/2008/PR-xml-c14n11-20080129/
"Canonical XML"
|
|
|
|
|
|
|
|
See [Namespaces in XML 1.0 (Third Edition)][1]:
> The prefix xml is by definition bound to the namespace name
> http://www.w3.org/XML/1998/namespace. It MAY, but need not, be
> declared, and MUST NOT be bound to any other namespace name. Other
> prefixes MUST NOT be bound to this namespace name, and it MUST NOT be
> declared as the default namespace.
>
> The prefix xmlns is used only to declare namespace bindings and is by
> definition bound to the namespace name http://www.w3.org/2000/xmlns/.
> It MUST NOT be declared . Other prefixes MUST NOT be bound to this
> namespace name, and it MUST NOT be declared as the default namespace.
> Element names MUST NOT have the prefix xmlns.
>
> In XML documents conforming to this specification, no tag may containe
> two attributes which have identical names, or have qualified names
> with the same local part and with prefixes which have been bound to
> namespace names that are identical.
[1] http://www.w3.org/TR/REC-xml-names/
|
|
|
|
* egil/fix-release_tests-path:
otp: Add paths to erlc for release_tests
|
|
|
|
Tests error handling at capabilities exchange.
|
|
|
|
In diameter_service:
make_packet -> make_request_packet
make_header -> make_request_header
make_reply_packet -> make_answer_packet
|
|
If a peer fsm process exits then the exit reason is received by
the service process in a 'DOWN' message. If the reason is the one
generated by diameter_peer_fsm:close/2, which is called to signal
a non-transport failure before the completion of capabilities exchange
(eg. receiving an unsuccessful CEA), then an event is sent to any
subscribers.
Also, tweak capabilities_cb return values for more informative
event data.
|
|
|
|
Value is a function that's applied to the transport reference
and capabilities record after capabilities exchange. If a callback
returns anything but 'ok' then the connection is closed. In the case
of an incoming CER, the callback can return a result code with which
to answer. Multiple callbacks can be specified and are applied until
either all return 'ok' or one doesn't.
Also, include Origin-State-Id in answers where it was previously
omitted.
|
|
We're already monitoring the transport process, no need to do
so again.
|
|
Should have been included in 5af64c7d57d83ce35bfd7b15ac3ce6ec7459fd73.
|
|
|
|
Just morph include into include_lib when releasing. Not using
include_lib here is due to generated hrls not residing in
diameter/include until after release. See release.sed.
|
|
|
|
* dgud/mnesia/upgrade-cont/OTP-9657:
Prepare release
[mnesia] Fix deadlock in aborted mnesia:del_table_copy/2
[mnesia] Make all schema operations protocol aware
[mnesia] Remove export of clear_table which is not a schema operation anymore
[mnesia] Cleanly bring down mnesia
|
|
* siri/stdlib/badarg-extract-child/OTP-9669:
Handle undefined pid when reporting error from supervisor
|