I had a offline chat with Tammo and found out that this happens due to isActive check in line 299 of BpelProcess.java.
boolean invokeProcess(final MyRoleMessageExchangeImpl mex, boolean enqueue) { return invokeProcess(mex, new InvokeHandler() { public boolean invoke(PartnerLinkMyRoleImpl target, PartnerLinkMyRoleImpl.RoutingInfo routing, boolean createInstance) { if (routing.messageRoute == null && createInstance && isActive()) { // No route but we can create a new instance target.invokeNewInstance(mex, routing); return true; } else if (routing.messageRoute != null) { // Found a route, hitting it _engine.acquireInstanceLock(routing.messageRoute.getTargetInstance().getInstanceId()); target.invokeInstance(mex, routing); return true; } return false; } }, enqueue); } Due to this check process state checking in invokeNewInstance will never get executed. if (_process._pconf.getState() == ProcessState.RETIRED) { throw new InvalidProcessException("Process is retired.", InvalidProcessException.RETIRED_CAUSE_CODE); } Is it ok to remove this isActive check or will there be any issues if I remove this? Thanks Milinda On Wed, Oct 20, 2010 at 5:10 PM, Milinda Pathirage < milinda.pathir...@gmail.com> wrote: > Hi Devs, > > Current way of handling instance creation requests to retired processes > doesn't throw any error to client and client will get a timeout when mex > timeout happens. And the request will be queued in the job processor. Is > this the correct behavior. Don't we need to send a error back to the client > saying the process is retired. > > Thanks, > Milinda > >