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 <
[email protected]> 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
>
>