Skip to content

Conversation

alexvaluyskiy
Copy link
Contributor

@Danthar
Copy link
Member

Danthar commented Apr 9, 2016

@alexvaluyskiy can you rebase on dev please? And please squash your commits per the contributors guidelines. Thx for effort!

@alexvaluyskiy
Copy link
Contributor Author

@Danthar done

@Danthar
Copy link
Member

Danthar commented Apr 11, 2016

The failing unit test is a race condition. i verified that it works locally.

@Danthar
Copy link
Member

Danthar commented Apr 12, 2016

Ok, we have a a consistently failing MNTK spec.

Akka.Remote.Tests.MultiNode.RemoteNodeRestartDeathWatchMultiNode1.Must_receive_terminated_when_remote_actor_system_is_restarted

This needs to be investigated and fixed before this PR can be merged.

@Aaronontheweb
Copy link
Member

Needs to be rebased :(

@Danthar
Copy link
Member

Danthar commented May 14, 2016

Since alot of fixes has been made to the MNTK. Could you please rebase on the latest dev? Some of the issues reported in this thread might 'magically' fix themselves now ;)

@alexvaluyskiy alexvaluyskiy force-pushed the deadletter branch 2 times, most recently from b504ee6 to d8ea4da Compare May 18, 2016 13:30
@Danthar
Copy link
Member

Danthar commented May 20, 2016

Restarted test builds. Tests still failing.

@alexvaluyskiy alexvaluyskiy force-pushed the deadletter branch 6 times, most recently from f5e5754 to 7f6d477 Compare June 6, 2016 10:07
@Aaronontheweb
Copy link
Member

Throws a NullReferenceException inside the PatternSpec.GracefulStop specs

@alexvaluyskiy
Copy link
Contributor Author

@Aaronontheweb It throws NullReferenceException, because the new DeadLetter should not be created, if Sender is null. But gracefulStop send NoSender

@veblush
Copy link
Contributor

veblush commented Jul 9, 2016

@alexvaluyskiy @Aaronontheweb Oh I found what caused this problem.

Akka seems to keep sender not-null in packing a message into the Envelop. AbstractDispatcher.scala

object Envelope { 
  def apply(message: Any, sender: ActorRef, system: ActorSystem): Envelope = { 
    if (message == null) throw new InvalidMessageException("Message is null") 
      new Envelope(message, if (sender ne Actor.noSender) sender else system.deadLetters) 
  } 
} 

But Akka.NET doesn't do like this. It just packs a message into Envelop without changes and
it keeps Envelope.Sender null if sender is null.

var m = new Envelope {
  Sender = sender,
  Message = message,
};

This looks like a fundamental difference and should be considered.

@alexvaluyskiy alexvaluyskiy removed this from the 1.2.0 milestone Jul 10, 2016
@alexvaluyskiy
Copy link
Contributor Author

@Aaronontheweb what do you think about last commit?

@alexvaluyskiy
Copy link
Contributor Author

@Horusiath this test "FSharp.Tests.ApiTests.actor that accepts unit will receive unit message" sends an empty message. But never versions of Akka Jvm forbid it, as @veblush mentioned before. How could we change this test?

@Horusiath
Copy link
Contributor

If nullish values are going to be explicitly forbidden, then that test is no longer needed. However this also means, that it's a breaking change and should be mentioned as that in release notes.

@Danthar
Copy link
Member

Danthar commented Jul 27, 2016

Looks good!. Links back to: #2160

@Danthar Danthar merged commit 411eeda into akkadotnet:dev Jul 27, 2016
@alexvaluyskiy alexvaluyskiy deleted the deadletter branch July 28, 2016 12:44
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.

5 participants