Commit graph

1982 commits

Author SHA1 Message Date
Johan Andrén
4588a3904f
Include host and port in mdc if clustered or remote #28073 2019-11-28 11:35:11 +01:00
Johan Andrén
61bd3d42b6
Document and fix getAsyncCallback thread safety issues #27999 2019-11-22 13:38:06 +01:00
Johan Andrén
a341343f2c latestPatchOf 2.5.26 (#28031)
* latestPatchOf 2.5.26

* Bincomp fixes
2019-10-18 16:30:55 +02:00
Johan Andrén
74adecb4e7
Align lazy and future operators #26446 2019-10-16 17:02:12 +02:00
Patrik Nordwall
5de5dec6ee
Merge pull request #27988 from akka/wip-protobuf-3.10.0-patriknw
Update protobuf-java and protoc to 3.10.0
2019-10-15 11:09:30 +02:00
Johan Andrén
3620017edf Tags from actor props goes into MDC, #27791 (#27856)
* Initialize logging things together. Save 2 fields in ActorContextAdapter (if logging isn't used)
* Dealt with bincomp by handcoding things in Deploy.
* Pass tags in remote deploy messages (serialization)
* Docs plus signature that works for Java API
* Allow tags to be empty or else we can't create an `.empty`
2019-10-14 17:57:11 +02:00
Patrik Nordwall
4e8a5d333b
More structured logger names, #27922 (#27934)
* some cluster logging improvements
* most logger names are actually good, when using ActorLogging since
  config can be setup on the package (prefix)
* override logSource when StageLogging is used
* replace system.log with more specific logger
2019-10-14 17:55:12 +02:00
Scala Steward
63df007685 protoc version 3.10.0 2019-10-14 11:11:21 +02:00
Patrik Nordwall
bb6d6365b1
Scaladoc improvements (#27929)
* private[akka] visibility on some internal classes
  * found via unidoc
* fix Scaladoc links
2019-10-10 14:17:01 +02:00
Patrik Nordwall
a9d1572999 harden access to outboundControlIngress, #27732 (#27834)
* _outboundControlIngress is cleared from removedAfterQuarantined via the
  startRemoveQuarantinedAssociationTask
* in sendControl it is checking isRemovedAfterQuarantined but a race condition
  of the clearing at the same time can cause it to access the outboundControlIngress
  anyway, resulting in the IllegalStateException "not initialized yet"
* in the reported case there were severe jvm problems (seen in logs as delayed heartbeats)
* additional check in outboundControlIngress access solves that,
  control messages can be dropped
2019-10-09 14:00:03 +02:00
Patrik Nordwall
e8a1556060
Streams TLS and Tcp with SSLEngine, #21753 (#27766)
* SSLEngine factory instead of SSLContext and AkkaSSLConfig parameters
  in TLS and Tcp
* Update TlsSpec to use SSLEngine
* Keep copy of old TlsSpec for test coverage of deprecated methods
* Update doc example of how to setup a SSLEngine
* full API and deprecations
* don't use default param values
* java doc example
* migration guide
* mima
* update to sslconfig 0.4.0
  * hostname verification changed in sslconfig, so use jvm verifier
* change to mima file
* update doc sample, init SSLContext once
* remove FIXME for halfClosed
2019-10-08 12:30:41 +02:00
Patrik Nordwall
c856960441
Remove deprecated secure cookie (#27809)
Co-Authored-By: Arnout Engelen <arnout@bzzt.net>
2019-10-04 16:38:26 +02:00
Patrik Nordwall
1a90d45bdd
Only allow deserialization for know classes in ProtobufSerializer, #27730 (#27731)
* similar approach as in JacksonSerializer
2019-10-01 16:20:35 +02:00
Johannes Rudolph
650068aa45
Convert 2.5.x MiMa excludes to subdirectory style
Using this script:

```sh

set -ex

FILE=$1
DIR=`dirname $FILE`
TMP_FILE=$DIR/_existing.excludes
FINAL_FILE=$DIR/2.5.x.backwards.excludes/_existing.excludes

mv $FILE $TMP_FILE
mkdir $DIR/2.5.x.backwards.excludes
(echo "# This file contains all excludes added before changing to the subdirectory style" && cat $TMP_FILE) > $FINAL_FILE
rm $TMP_FILE
git add $FINAL_FILE
```
2019-10-01 13:59:56 +02:00
Scala Steward
6b17a7a15f Update scalafmt-core to 2.1.0 (#27831)
* Update scalafmt-core to 2.1.0

* scalafmt
2019-10-01 12:24:51 +02:00
Patrik Nordwall
a7c43cf573
Config to exclude class prefix from serialize-messages, #24273 (#27517)
* Config to exclude class prefix from serialize-messages, #24273

* Adding no-serialization-verification-needed-class-prefix, with "akka." included
  by default
* This is important now when we disable Java serialization by default.
  There will be many complaints about Akka internal classes that are not marked with
  NoSerializationVerificationNeeded, and we can't really sprinkle that everywhere.
* Not removing NoSerializationVerificationNeeded usage in Akka classes because that
  may break bin compat, even though it's needed any more.

* fix DisabledJavaSerializerWarningSpec
2019-09-26 22:51:12 +02:00
Johan Andrén
4f9a4b5403 System materializer guardian (#27723)
* Eager creation of system materializer on system startup #26850

* System level materializers always spawned under a specific system actor #26850

* No need for RepointableActorRef logic anymore

* MiMa filter

* Make the creation timeout higher
2019-09-26 22:49:33 +02:00
Patrik Nordwall
13f4d0ffa2 Use ActorSystem's ThreadFactory for the Aeron threads, #27603 (#27665) 2019-09-16 20:19:46 -07:00
Arnout Engelen
e6859253e5 Update to MiMa 0.6.0 (#27558) 2019-09-11 11:28:12 +02:00
tanaka takaya
9aa0e593b0 Bump up dependencies. (#27586)
* Bump up dependencies.

* revert sslConfigVersion and sigarLoader.

* only used in tests.

* Bump up dependencies.
2019-09-09 14:54:09 +02:00
Johan Andrén
b68d67008a
Deprecate actor materializer (#27538) 2019-09-05 16:08:37 +02:00
Johan Andrén
84cd059bb2
Remove the Artery flight recorder (#27591) 2019-09-05 13:11:22 +02:00
Johan Andrén
aca63ea198
Materializer settings as attributes (#27499)
* Replace MaterializerSettings with Attributes #25559 
 * Field access to settings deprecated to make stages use attributes instead
 * Internal stages updated to use attributes
 * Docs on ActorMaterializerSettings updated to recommend away from using it
 * Verify all stages stopped after each testcase in FlowGroupBySpec
 * Subscription timeout attributes merged into one
2019-09-04 13:37:06 +02:00
Arnout Engelen
bc4a4a5837 Create a new flightrecorder instance per connection (#27577) 2019-08-28 19:19:46 +02:00
Patrik Nordwall
5c0f213fba fix config in ArteryUpdSendConsistencySpec (#27575)
* was still using default, i.e. tcp
2019-08-28 13:36:59 +02:00
Arnout Engelen
b1746d6258
Fix race when binding to port '0' in artery tcp (#27525)
* Fix race when binding to port '0' in artery tcp

Splitting the 'binding' and 'starting inbound streams' seems to make
it a bit easier to follow as well
2019-08-27 10:26:15 +02:00
Christopher Batey
6c13949aec Use protobuf3 for internal serialization (#27366)
* Only load akka protobuf serializer if protobuf on the classpath
2019-08-15 17:43:19 +02:00
Arnout Engelen
38cda5147f Fix race conditions in Artery TCP binding to 0 (#27456) 2019-08-06 06:21:28 -07:00
Christopher Batey
e55ac350c3
Fix race in AkkaProtocolSpec (#27431)
The heartbeat happens after the send associate in
AkkaProtocolTransport so test can't assume the heartbeat
has happened.

Fixes #26974
2019-07-31 09:05:58 +01:00
Christopher Batey
89e269d5d8 Remove catchall silents from prod code (#27432)
* WIP

* Remove catch all silent annocations from prod code
2019-07-30 11:12:23 +02:00
Helena Edelson
96abaf2168 Add clarification to doc on cluster cross boundary use of DeathWatch (#27385)
* Add clarification to doc on cluster cross boundary use of DeathWatch #27376

* Clarrified reasoning and behavior update, and updated warning config name to same convention.
2019-07-25 14:12:57 +02:00
Arnout Engelen
6d4fbfc43d Loosen expectation of TlsTcpWithHostnameVerificationSpec (#27394) (#27396) 2019-07-24 08:34:25 +01:00
Christopher Batey
6c416c2818 User serializer for protobuf3 (#27362)
* User serializer for protobuf3
2019-07-23 16:22:07 +02:00
Arnout Engelen
c3e8a968d9
Test hostname verification (#27355) 2019-07-16 15:32:50 +02:00
Christopher Batey
d2f5d2daa3 Allow java serialization for TypedActorRemoteDeploySpec (#27354)
* Allow java serialization for TypedActorRemoteDeploySpec

* Also delete ignore for 2.12 annotation
2019-07-15 14:00:34 +02:00
rohitkumbhar
50b63464fa Hostname verification should be done by the client only (#26906)
Setting the endpoint identification algorithm to HTTPS on the server engine
forces the client to preset a certificate that contains the server name. This
is rather unlikely and it fails TLS handshake today

This change will allow hostname verification to be done by the client only
2019-07-15 13:43:50 +02:00
Helena Edelson
a110be8f69
Fix intercept of Watch in use of safe remote features #27333 (#27334)
And added one more case for cluster watcher, watching remote no cluster watchee, and the reverse.
2019-07-12 12:18:37 -07:00
Patrik Nordwall
3efc1c2877
Disable Java serialization by default, #22333 (#27285)
* akka.actor.allow-java-serialization = off
* Moved primitive (Long, Int, String, ByteString) serializers
  from akka-remote to akka-actor since they had no dependency
  and are useful also in local systems, e.g. persistence.
  * e.g. needed for persistence-tck
  * less allow-java-serialization=on in tests
* CborSerializable in Jackson/test module for ease of use
* JavaSerializable for Java serialization in tests, already in akka-testkit,
  but misconfigured
* Made tests pass
  * allow-java-serialization=on in akka-persistence
  * allow-java-serialization=on in classic remoting tests
  * JavaSerializable and CborSerializable in other remoting tests
* Added serialization for
  * Boolean
  * java.util.concurrent.TimeoutException, AskTimeoutException
* support for testing serialization with the inmem journal
* utility to verifySerialization, in SerializationTestKit
* remove AccountExampleWithCommandHandlersInState becuase not possible to serialize State when it's not static
  * Effect() is factory in EventSourcedBehavior  class
* test the account examples
* SharedLeveldbJournal.configToEnableJavaSerializationForTest
* support for exceptions from remote deployed child actors
  * fallback to akka.remote.serialization.ThrowableNotSerializableException
    if exception is not serializable when wrapped in system messages from
    remote deployed child actors and Status.Failure messages
  * it's implemented in `WrappedPayloadSupport.payloadBuilder`
* update reference documentation
* serialize-messages=off in most places, separate ticket for
  improving or removing that feature
* migration guide, including description of rolling update

* fix 2.13 compiler error

* minor review feedback
2019-07-11 14:04:24 +02:00
Patrik Nordwall
8d69388d0a Deprecate classic remoting classes (#27237)
* Sprinkle deprecated annotation to public classes for classic remoting
* Use right dispatcher setting for a few remoting actors
* New Artery events for QuarantinedEvent, GracefulShutdownQuarantinedEvent
  and ThisActorSystemQuarantinedEvent because old were not good
  and would cause binary compatibility trouble when we remove classic
* silence more deprecation warnings
2019-07-10 14:26:51 +02:00
Patrik Nordwall
e5dbd939be
Merge pull request #27256 from akka/wip-26684-additional-bindings-patriknw
Remove additional-serialization-bindings, #26684
2019-07-10 12:14:37 +02:00
Arnout Engelen
47c65d266a Don't WARN when the user explicitly enabled unsafe features (#27289) 2019-07-05 18:25:35 +01:00
Patrik Nordwall
3f4179c316 Remove additional-serialization-bindings, #26684
This should be safe for a rolling update between Akka 2.5.x and 2.6.0
also if additional-bindings were disabled in 2.5.x because:
* if 2.6.0 sends one of those the serializer (akka-misc) exists in 2.5.x
  so deserialization will work via the serializerId
* if 2.5.x sends one of those with java serialization it can be
  deserialized in 2.6.0 since the java serializer exists
  (disabling java serialization by default is another ticket)

* historical problems with serialization of remote Deploy messages
  in Akka 2.4.x should be gone now
2019-07-05 13:12:36 +02:00
Patrik Nordwall
16f2009786 fix two log messages related to use-unsafe-remote-features-without-cluster (#27241)
* one was always logged at startup when using cluster provider
* the other was logged (at debug) each time an ordinary local actor was started
2019-07-05 08:11:33 +01:00
Patrik Nordwall
f9d76aa030
Log Dropped from DeadLetterListener, #26432 (#27160)
* Log Dropped from DeadLetterListener, #26432

* Move Dropped from akka-actor-typed to akka-actor
* Use it in Artery
* Use in right way from GroupRouter, not via deadLetters
* Remove "without sender" in log message from DeadLetterListener,
  since there is no sender in Typed
* mima filter
* add sender to Dropped
2019-07-04 14:52:42 +02:00
Helena Edelson
cc430fe4d0
Fixed test tagged as IgnoreForScala212 ran in nightly not hit in other CI jobs, just needed the new akka.remote.use-unsafe-remote-features-without-cluster = on. (#27202) 2019-06-22 08:29:03 -07:00
Helena Edelson
611e32de91 Disable remote watch and remote deployment outside Cluster (#27126) 2019-06-21 14:15:36 +02:00
Johan Andrén
44043447d1 Some old netty config paths in tests fixed (#27159) 2019-06-18 10:20:06 +02:00
Patrik Nordwall
af525fd82a
Make Artery connect failure logging less verbose, #26865 (#27073)
* silence "Restarting graph due to failure" logging by RestartFlow, #26865
* only log first error in connectionFlowWithRestart as warning and then debug
* avoid double logging of connection refused
* mima
2019-06-14 11:17:16 +02:00
Christopher Batey
fd1acb9326 Upgrade to Aeron 1.19.1 (#27043)
* Upgrade to Aeron 1.19.1

No mention of on the wire incompatibilities in release notes for
versions 1.15->1.19

* fix compilation issue with new aeron

* Set default publication unblock timeout to 40s

This needs to be bigger than the liveness timeout. Aeron
defaults these to 5seconds and 10seconds. Akka uses 20s
for the liveness so use 40s for the unblock to keep the same
relation between the properties as Aeron has.

* Add publication unblock timeout in sharedmedia driver

* Update akka-remote/src/main/scala/akka/remote/artery/ArterySettings.scala

Co-Authored-By: Helena Edelson <helena@users.noreply.github.com>
2019-06-13 21:44:29 +02:00
Patrik Nordwall
10d32fceb9 scheduleWithFixedDelay vs scheduleAtFixedRate, #26910
* previous `schedule` method is trying to maintain a fixed average frequency
  over time, but that can result in undesired bursts of scheduled tasks after a long
  GC or if the JVM process has been suspended, same with all other periodic
  scheduled message sending via various Timer APIs
* most of the time "fixed delay" is more desirable
* we can't just change because it's too big behavioral change and some might
  depend on previous behavior
* deprecate the old `schedule` and introduce new `scheduleWithFixedDelay`
  and `scheduleAtFixedRate`, when fixing the deprecation warning users should
  make a concious decision of which behavior to use (scheduleWithFixedDelay in
  most cases)

* Streams
* SchedulerSpec
  * test both fixed delay and fixed rate
* TimerSpec
* FSM and PersistentFSM
* mima
* runnable as second parameter list, also in typed.Scheduler
* IllegalStateException vs SchedulerException
* deprecated annotations
* api and reference docs, all places
* migration guide
2019-06-05 11:38:04 +02:00