Skip to content

Conversation

@gunjambi
Copy link

Fixes #7966

Changes

This PR removes the use of FSM from RemotingTerminator and manually implements it using Become() API.

RemotingTerminator is initialized during Provider Start. FSM constructor
initializes the _log with `context.GetLogger()` which eventually leads into
`LogSource.FromActorRef()`. This method attempts to access
`Provider.DefaultAddress`, which is being initialized.

If Provider `Init()` loses the race, either its `RemoteInternals` is not set,
causing NRE, or if `Remoting.Start()` is not completed, the `_defaultAddress`
is not set and returns null.

This commit removes the FSM from `RemotingTerminator` and manually implements
it using `Become()` API.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Race condition in Akka.Remote RemoteActorRefProvider initialization

1 participant