Hi Sathwik,

It seems removing mex is not the right solution as it causes a null pointer
exception for the MEX_MATCHER event. I think the right way to solve the
issue is to remove the correlation set of the mex and change the status
from QUEUED to MATCHED.

Regards
Nandika


On Sun, Feb 2, 2014 at 8:35 AM, Nandika Jayawardana <jayaw...@gmail.com>wrote:

> Hi Sathwik,
>
> Thanks for the reply. I will check with hibernate also.
>
> Regards
> Nandika
>
>
> On Thu, Jan 30, 2014 at 10:20 PM, Sathwik B P <sathwik...@gmail.com>wrote:
>
>> Hi Nandika,
>>
>> I wouldn't suggest to change the BpelRuntimeContextImpl.matcherEvent with
>> respect to the DAO, as we have Hibernate and Openjpa implementations.
>>
>> Can you verify the behaviour with hibernate?
>>
>> Will see if I get sometime over the weekend to look into this issue
>>
>> regards,
>> sathwik
>>
>>
>> On Mon, Jan 27, 2014 at 12:25 PM, Nandika Jayawardana <jayaw...@gmail.com
>> >wrote:
>>
>> > Hi Devs,
>> >
>> > I observed the following behavior.
>> >
>> > Consider a process with two receive activities with correlation. Now, if
>> > the messages to these receive activities arrive in correct order,
>> > everything works fine.
>> >
>> > But if the message to the second receive activity arrived first and then
>> > the message to the first receive activity arrived, then the process
>> would
>> > execute and complete. However, the message exchange created for the
>> second
>> > message would not be updated. It would have the correlation set value
>> and
>> > status as QUEUED.
>> >
>> > Now if another message arrived with the same correlation value for the
>> > first request, that process instance would also complete by correlating
>> to
>> > the original second message.
>> >
>> > I  found that in BpelRuntimeContextImpl.matcherEvent, there is a call to
>> > release these mex as follows.
>> >
>> > // Do not release yet if the process is suspended, the mex will be used
>> > again
>> >    if (_dao.getState() != ProcessState.STATE_SUSPENDED){
>> >                 mexdao.releasePremieMessages();
>> >    }
>> >
>> > However, openjpa implementation for releasePremieMessages() is empty.
>> > Adding mexdao.release(true); to above if block fixes the problem.
>> >
>> > Is this the correct way to solve this problem.
>> >
>> > I checked whether there is a method to remove the correlation set from
>> > message exchange and update the status to MATCHED. However, could not
>> find
>> > a method to update the correlation set value in message exchange.
>> >
>> > Attached is a sample process to reproduce the issue.
>> >
>> > Thanks
>> > Nandika
>> >
>>
>
>

Reply via email to