use of com.yahoo.messagebus.Error in project vespa by vespa-engine.
the class MbusServer method dispatchErrorReply.
private void dispatchErrorReply(final Message msg, final int errCode, final String errMsg) {
final Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(errCode, errMsg));
session.sendReply(reply);
}
use of com.yahoo.messagebus.Error in project vespa by vespa-engine.
the class SharedDestinationSession method handleMessage.
@Override
public void handleMessage(Message msg) {
MessageHandler msgHandler = this.msgHandler.get();
if (msgHandler == null) {
Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(ErrorCode.SESSION_BUSY, "Session not fully configured yet."));
sendReply(reply);
return;
}
msgHandler.handleMessage(msg);
}
use of com.yahoo.messagebus.Error in project vespa by vespa-engine.
the class SharedIntermediateSession method handleMessage.
@Override
public void handleMessage(Message msg) {
MessageHandler msgHandler = this.msgHandler.get();
if (msgHandler == null) {
Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(ErrorCode.SESSION_BUSY, "Session not fully configured yet."));
sendReply(reply);
return;
}
msgHandler.handleMessage(msg);
}
use of com.yahoo.messagebus.Error in project vespa by vespa-engine.
the class RoutingTestCase method requireThatReplyCanBeReusedOnRetry.
@Test
public void requireThatReplyCanBeReusedOnRetry() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("ReuseReply", new SimpleProtocol.PolicyFactory() {
@Override
public RoutingPolicy create(String param) {
return new ReuseReplyPolicy(false, Arrays.asList(ErrorCode.APP_FATAL_ERROR), CustomPolicyFactory.parseRoutes(param));
}
});
protocol.addPolicyFactory("SetReply", new SimpleProtocol.PolicyFactory() {
@Override
public RoutingPolicy create(String param) {
return new SetReplyPolicy(false, Arrays.asList(ErrorCode.APP_FATAL_ERROR), param);
}
});
srcServer.mb.putProtocol(protocol);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[ReuseReply:[SetReply:foo],dst/session]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(ErrorCode.APP_TRANSIENT_ERROR, "dst"));
dstSession.reply(reply);
assertNotNull(msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60));
dstSession.acknowledge(msg);
assertNotNull(reply = ((Receptor) srcSession.getReplyHandler()).getReply(60));
System.out.println(reply.getTrace());
assertFalse(reply.hasErrors());
}
use of com.yahoo.messagebus.Error in project vespa by vespa-engine.
the class RoutingTestCase method requireThatPolicyCanDisableReselectOnRetry.
@Test
public void requireThatPolicyCanDisableReselectOnRetry() {
SimpleProtocol protocol = new SimpleProtocol();
protocol.addPolicyFactory("Custom", new CustomPolicyFactory(false));
srcServer.mb.putProtocol(protocol);
assertTrue(srcSession.send(createMessage("msg"), Route.parse("[Custom:dst/session]")).isAccepted());
Message msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60);
assertNotNull(msg);
Reply reply = new EmptyReply();
reply.swapState(msg);
reply.addError(new Error(ErrorCode.APP_TRANSIENT_ERROR, "err"));
dstSession.reply(reply);
assertNotNull(msg = ((Receptor) dstSession.getMessageHandler()).getMessage(60));
dstSession.acknowledge(msg);
assertNotNull(reply = ((Receptor) srcSession.getReplyHandler()).getReply(60));
System.out.println(reply.getTrace());
assertFalse(reply.hasErrors());
assertTrace(Arrays.asList("Selecting [dst/session].", "[APP_TRANSIENT_ERROR @ localhost]", "-[APP_TRANSIENT_ERROR @ localhost]", "Merged [dst/session].", "-Selecting [dst/session].", "Sending reply", "Merged [dst/session]."), reply.getTrace());
}
Aggregations