-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
[2.5.x] Upgrade Akka to version 2.4.4 #6050
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Hey @gmethvin, build is broken: https://travis-ci.org/playframework/playframework/jobs/123501044#L2551 If I recall correctly, this is the same test that broke when I've tried to upgrade Play 2.5.x to Akka 2.4.3 (not sure though). |
|
@marcospereira Yes, I think it is the same test. It passed on master because we removed WebSocket.acceptWithActor, which is what's being tested there. But it could be caused by a legit bug either in Play or in Akka. |
|
Actually, something might be broken on master as well. If I update that test to: "close when the consumer is done" in closeWhenTheConsumerIsDone { implicit app =>
import app.materializer
implicit val as = app.actorSystem
WebSocket.accept[String, String] { req =>
ActorFlow.actorRef { out =>
Props(new Actor() {
out ! Status.Success(())
def receive = PartialFunction.empty
})
}
}
}it still fails, so it has nothing to do with the deprecated methods. Those tests should probably have been updated on master to use |
|
Looks like its a timeout issue: https://travis-ci.org/playframework/playframework/jobs/123505529#L2597 |
This fixes playframework#5883 since Akka 2.4.3 contains akka/akka-core#20031.
| out => | ||
| Props(new Actor() { | ||
| out ! Status.Success(()) | ||
| app.actorSystem.scheduler.scheduleOnce(10.millis, out, Status.Success(())) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This fixes the test failure. I suspect the actor is being terminated before the client actually connects to it, so the client is never able to receive the close message. Adding a small delay gives the client enough time to connect. I'm not sure if this was supposed to work before, though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Curious to know how did you figured this out. :-)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, it's clear the timeout is because the the client never gets the close frame. So one situation I could think of where that would happen is if the client wasn't connected yet, since the message is being sent when the actor is initialized (probably not a realistic situation anyway...).
Makes sense to me. Looks like ActorFlow is untested. |
Backports #5984 and #6048.