This patch fixes akka-stream's OSGi manifest by adding
an explicit exclusion for scala.* packages known to have
different versions, so they do not get expanded by scalaImport()
and subsequent "*".
Signed-off-by: Robert Varga <nite@hq.sk>
As documented in the code:
// Leader is moving itself from Leaving to Exiting. Let others know (best effort)
// before shutdown. Otherwise they will not see the Exiting state change
// and there will not be convergence until they have detected this node as
// unreachable and the required downing has finished. They will still need to detect
// unreachable, but Exiting unreachable will be removed without downing, i.e.
// normally the leaving of a leader will be graceful without the need
// for downing. However, if those final gossip messages never arrive it is
// alright to require the downing, because that is probably caused by a
// network failure anyway.
That is fine, but this change improves the selection of the nodes to
send the final gossip messages to.
I could reproduce the failure in ClusterSingletonManagerLeaveSpec and with
additional logging I verified that in the failure case it picked the "first"
node 3 times (it's random) and that node had already been shutdown (left earlier
in the test) but was not removed yet.
StreamConverters.asOutputStream did never complete if the buffer size was greater than zero,
this lead to a bad state, where the close was unblocked, but the stage was never completed.
Also the OutputStream uses getAsyncCallback which had the problem that it always lead to races,
if flush or close was called to early.
* treat snapshot load failure in same way as other recovery failures
* if load of snapshot fails the persistent actor will be stopped, since
we can't assume that a consistent state would be recovered just by
replaying all events, since events may have been deleted
* additional recovery docs
* improve log message
* optimize recovering from snapshot in LocalSnapshotStore #20821
* replaced FilenamePattern regex with String operations when scanning snapshot filenames
* further optimization of the string operations
* fixed the logic in order to pass the SnapshotRecoveryLocalStoreSpec test
* Move (de)compression helpers to akka-stream #21395
* Move compression and decompression -related classes from
akka-http-experimental to akka-stream
* Add Compression helper object with functions to create
decompressing Flows
* Add a short cookbook entry
* =str move compression impl classes into their own directory (and change visibility)
* =str also expose gzip/deflate compression flows
* Fix formatting of plural ByteStrings in cookbook
* =str #21395 make compressor call Deflater.end in postStop to release resources
Also simplified the creation of the flow given a compressor.
* =str #21395 decompressors call Inflater.end in postStop to release resources
* =str #21395 smallish Scaladoc fixes
Do all (Akka)SSLConfig magic in one place directly in the TLS API.
Also, introduce new low-level entrypoint in TLS that allows to specify
an SSLEngine constructor directly without relying on SSLContext. This
allows users to use third-party SSLEngine implementations like netty's
OpenSslEngine together with akka-stream.
Otherwise, with 2.12,
ByteString().toString == "ByteString.ByteString1C()"
which would expose implementation details in the string representation.
This can lead to failing tests due to test expecting a particular string
representation of a ByteString which might be bad practice, yes, but is also
convenient.
The change is due to a fix in Scala for SI-9019 for which the string representation
of TraversableLike was changed which ByteString inherits.
See https://github.com/scala/scala/pull/5258/files
* In the logs of the failing test we can see that the first node is removed
as expected and then come back in the membership, which is possible in
case of conflicting membership state merge. It is supposed to be
removed again by the auto-down. That doesn't happen within the barrier-timeout.