RequestReplyHelper call chain

52 views
Skip to first unread message

Roded Bahat

unread,
Feb 5, 2016, 11:13:25 AM2/5/16
to quasar-pulsar-user
Hi,
If you would consider the following pattern:

public class Start extends BasicActor<Object, Void> {
@Override
protected Void doRun() throws InterruptedException, SuspendExecution {
Object call = RequestReplyHelper.call(new Mid().spawn(), new RequestMessage<Object>() {
});
System.out.println(call);
return null;
}
}

public class Mid extends BasicActor<RequestMessage<Object>, Void> {
@Override
protected Void doRun() throws InterruptedException, SuspendExecution {
RequestMessage<Object> receive = receive();
ActorRef<RequestMessage<Object>> spawn = new End().spawn();
Object call = RequestReplyHelper.call(spawn, receive);
RequestReplyHelper.reply(receive, call);
return null;
}
}

public class End extends BasicActor<RequestMessage<Object>, Void> {
@Override
protected Void doRun() throws InterruptedException, SuspendExecution {
RequestMessage<Object> receive = receive();
RequestReplyHelper.reply(receive, new Object());
return null;
}
}

new Start().spawn();

The behavior works fine.
However, the following exception (see below) chain is thrown in relation to ExitMessage signaling (?).
This seems like a RequestReplyHelper chain issue.
Is there anything wrong with the code above?
Thanks


java.lang.Object@7f681f5b
Exception in Fiber "fiber-10000004" java.lang.RuntimeException
at co.paralleluniverse.common.util.Exceptions.rethrow(Exceptions.java:26)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper$1.handleLifecycleMessage(RequestReplyHelper.java:167)
at co.paralleluniverse.actors.SelectiveReceiveHelper.receive(SelectiveReceiveHelper.java:121)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call(RequestReplyHelper.java:174)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call(RequestReplyHelper.java:112)
at com.modelity.marketplace.services.rest.temp.Mid.doRun(Mid.java:17)
at com.modelity.marketplace.services.rest.temp.Mid.doRun(Mid.java:12)
at co.paralleluniverse.actors.Actor.run0(Actor.java:691)
at co.paralleluniverse.actors.ActorRunner.run(ActorRunner.java:51)
at co.paralleluniverse.fibers.Fiber.run(Fiber.java:1026)
WARNING: Uninstrumented methods (marked '**') or call-sites (marked '!!') detected on the call stack: 
at co.paralleluniverse.common.util.Exceptions.rethrow(java.lang.Throwable) (Exceptions.java:26 bci: 29) **
at co.paralleluniverse.actors.behaviors.RequestReplyHelper$1.handleLifecycleMessage (RequestReplyHelper.java:167 bci: 41) **
at co.paralleluniverse.actors.SelectiveReceiveHelper.receive (SelectiveReceiveHelper.java:121 bci: 341) !! (instrumented suspendable calls at: [])
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call (RequestReplyHelper.java:174 bci: 663)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call (RequestReplyHelper.java:112 bci: 335)
at com.modelity.marketplace.services.rest.temp.Mid.doRun (Mid.java:17 bci: 192)
at com.modelity.marketplace.services.rest.temp.Mid.doRun (Mid.java:12 bci: 1) (optimized)
at co.paralleluniverse.actors.Actor.run0 (Actor.java:691 bci: 222)
at co.paralleluniverse.actors.ActorRunner.run (ActorRunner.java:51 bci: 148)
at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1026 bci: 11)
at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1021 bci: 1)
Exception in Fiber "fiber-10000004" java.lang.RuntimeException
at co.paralleluniverse.common.util.Exceptions.rethrow(Exceptions.java:26)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper$1.handleLifecycleMessage(RequestReplyHelper.java:167)
at co.paralleluniverse.actors.SelectiveReceiveHelper.receive(SelectiveReceiveHelper.java:121)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call(RequestReplyHelper.java:174)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call(RequestReplyHelper.java:112)
at com.modelity.marketplace.services.rest.temp.Mid.doRun(Mid.java:17)
at com.modelity.marketplace.services.rest.temp.Mid.doRun(Mid.java:12)
at co.paralleluniverse.actors.Actor.run0(Actor.java:691)
at co.paralleluniverse.actors.ActorRunner.run(ActorRunner.java:51)
at co.paralleluniverse.fibers.Fiber.run(Fiber.java:1026)
WARNING: Uninstrumented methods (marked '**') or call-sites (marked '!!') detected on the call stack: 
at co.paralleluniverse.common.util.Exceptions.rethrow(java.lang.Throwable) (Exceptions.java:26 bci: 29) **
at co.paralleluniverse.actors.behaviors.RequestReplyHelper$1.handleLifecycleMessage (RequestReplyHelper.java:167 bci: 41) **
at co.paralleluniverse.actors.SelectiveReceiveHelper.receive (SelectiveReceiveHelper.java:121 bci: 341) !! (instrumented suspendable calls at: [])
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call (RequestReplyHelper.java:174 bci: 663)
at co.paralleluniverse.actors.behaviors.RequestReplyHelper.call (RequestReplyHelper.java:112 bci: 335)
at com.modelity.marketplace.services.rest.temp.Mid.doRun (Mid.java:17 bci: 192)
at com.modelity.marketplace.services.rest.temp.Mid.doRun (Mid.java:12 bci: 1) (optimized)
at co.paralleluniverse.actors.Actor.run0 (Actor.java:691 bci: 222)
at co.paralleluniverse.actors.ActorRunner.run (ActorRunner.java:51 bci: 148)
at co.paralleluniverse.fibers.Fiber.run (Fiber.java:1026 bci: 11)
at co.paralleluniverse.fibers.Fiber.run1 (Fiber.java:1021 bci: 1)

Fabio Tudone

unread,
Feb 6, 2016, 4:35:54 AM2/6/16
to quasar-pulsar-user
Hi,

the "call" pattern uses a temporary actor watch in order to propagate exceptions. Here the "End" actor terminates (that is, it dies without exception) and it notifies its watches through an ExitMessage, still It's not yet clear to me why in this case it gets processed before the reply one.

I'll have a more thorough look ASAP.

-- Fabio

Fabio Tudone

unread,
Feb 18, 2016, 2:20:23 AM2/18/16
to quasar-pulsar-user
Hi Roded,

would you mind opening an issue about that? The message processing ordering looks a bit strange to me and I'd like to investigate it on GitHub.

Thanks,
-- Fabio

Roded Bahat

unread,
Feb 18, 2016, 4:48:52 AM2/18/16
to quasar-pulsar-user

Fabio Tudone

unread,
Feb 18, 2016, 5:12:33 AM2/18/16
to quasar-pulsar-user
Thanks!
Reply all
Reply to author
Forward
0 new messages