You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by Milinda Pathirage <mi...@gmail.com> on 2010/10/20 13:40:17 UTC
Handling requests(specially for new instance creation) to retired processes
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
Re: Handling requests(specially for new instance creation) to retired
processes
Posted by Tammo van Lessen <tv...@gmail.com>.
Sounds reasonable to me to, however I'm wondering what is happening with
the false return value. Wouldn't that result in a similar error (no
route found). If the up-bubbling exception (RETIRED_CAUSE_CODE) leads to
the same situation but with a more specific error message, that's fine
(my concern is just whether this is the best possible position for the
check).
Tammo
On 22.10.2010 05:12, Jeff Yu wrote:
> Removing the isActive() check makes sense to me.
>
> Regards
> Jeff
>
> On Wed, Oct 20, 2010 at 11:42 PM, Milinda Pathirage <
> milinda.pathirage@gmail.com> wrote:
>
>> 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.pathirage@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
>>>
>>>
>>
>
>
>
--
Tammo van Lessen - http://www.taval.de
Re: Handling requests(specially for new instance creation) to retired processes
Posted by Jeff Yu <je...@gmail.com>.
Removing the isActive() check makes sense to me.
Regards
Jeff
On Wed, Oct 20, 2010 at 11:42 PM, Milinda Pathirage <
milinda.pathirage@gmail.com> wrote:
> 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.pathirage@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
> >
> >
>
--
Cheers,
Jeff Yu
----------------
blog: http://jeff.familyyu.net
Re: Handling requests(specially for new instance creation) to retired processes
Posted by Milinda Pathirage <mi...@gmail.com>.
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.pathirage@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
>
>