[ 
https://issues.apache.org/jira/browse/ODE-327?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rafal Rusin resolved ODE-327.
-----------------------------

    Fix Version/s: 1.3.5
                       (was: 2.0)
       Resolution: Duplicate

> Process instance hangs in state ACTIVE after processing concurrently RECEIVE 
> in BPEL Engine and incomming message in JBI transport layer
> ----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ODE-327
>                 URL: https://issues.apache.org/jira/browse/ODE-327
>             Project: ODE
>          Issue Type: Bug
>          Components: JBI Integration
>    Affects Versions: 1.2
>         Environment: ServiceMix, Oracle EXTERNAL, Commons DBCP Managed 
> Connection Pool
>            Reporter: Rafal Rusin
>             Fix For: 1.3.5
>
>
> The scenario is following:
> Process:
> 1. Declare correlation C with ID
> 2. Set some ID to message M
> 3. INVOKE Partner (initiate correlation C on sending)
> 4. RECEIVE PartnerCallback M2 (with correlation C set to initiate = NO)
> Partner Process (external):
> 1. RECEIVE M3
> 2. INVOKE PartnerCallback M3
> The problem is when the message from Partner Process arrives concurrently 
> while processing RECEIVE in 4. 
> The two transactions seem to read state in DB (there's no RECEIVE registered 
> for incoming message; and no message stored in DB for entered RECEIVE). So 
> those two register in DB and there's no more action. 
> Here's a detailed log (cut some lines) of this situation:
> 11:50:28,984 | DEBUG | pool-19-thread-13 | BpelProcess              | 
> l.engine.PartnerLinkMyRoleImpl  127 | INPUTMSG: 42.deliveryReportEvent: MSG 
> RCVD keys=[{CorrelationKey setId=236, values=[168244]}] mySessionId=null 
> partnerSessionId=null
> 11:50:28,987 | DEBUG | pool-19-thread-13 | BpelProcess              | 
> l.engine.PartnerLinkMyRoleImpl  236 | INPUTMSG: 42.deliveryReportEvent: 
> SAVING to DB (no match)
>     
> 11:50:29,104 | DEBUG | pool-19-thread-20 | ScopeFrame               | 
> he.ode.bpel.runtime.ScopeFrame  263 | Write variable: name={Variable 
> __PROCESS_SCOPE:PROCESS:OXsdTyp
> eVarType#35} value=<?xml version="1.0" encoding="UTF-8"?>
> <xsd-complex-type-wrapper>
>                             <status 
> xmlns="http://touk.pl/schema/monitoringVariables"; 
> xmlns:monitoringVariables="http://touk.pl/schema/monitoringVariables";>SENT_CORRECTLY</status>
>                             <monitoringVariables:changeDate 
> xmlns:monitoringVariables="http://touk.pl/schema/monitoringVariables";>2008-07-09T11:50:28+01:00</monitoringVariables:chang
> eDate>
>                         </xsd-complex-type-wrapper>
> 11:50:29,110 | DEBUG | pool-19-thread-20 | BpelProcess              | 
> .engine.BpelRuntimeContextImpl  309 | SELECT: PickResponseChannel#95: USING 
> CORRELATOR 42.deliveryReportEvent
> 11:50:29,110 | INFO  | pool-19-thread-20 | Query                    | 
> log.Log4JLogFactory$LogAdapter   80 | This query on type "class 
> org.apache.ode.dao.jpa.CorrelatorDAOImpl" must l
> oad the entire candidate class extent and evaluate the query in-memory.  This 
> may be very slow.  The query must be executed in memory because OpenJPA is 
> configured with IgnoreCache=f
> alse and FlushBeforeQueries=false and there are dirty instances that may 
> affect the query's outcome in the cache.
> 11:50:29,117 | DEBUG | pool-19-thread-20 | BpelProcess              | 
> .engine.BpelRuntimeContextImpl  388 | SELECT: PickResponseChannel#95: ADDED 
> ROUTE 42.deliveryReportEvent: {Corre
> lationKey setId=236, values=[168244]} --> 168244
> 11:50:29,118 | DEBUG | pool-19-thread-20 | BpelRuntimeContextImpl   | 
> .engine.BpelRuntimeContextImpl  839 | Setting execution state on instance 
> 168244
> 11:50:29,151 | DEBUG | pool-19-thread-25 | InstanceLockManager      | 
> pel.engine.InstanceLockManager   50 | Thread[pool-19-thread-25,5,main]: 
> lock(iid=168244, time=1MICROSECONDS)
> 11:50:29,152 | DEBUG | pool-19-thread-25 | InstanceLockManager      | 
> pel.engine.InstanceLockManager   63 | Thread[pool-19-thread-25,5,main]: 
> lock(iid=168244, time=1MICROSECONDS)-->G
> RANTED
> 11:50:29,155 | DEBUG | pool-19-thread-25 | BpelProcess              | 
> he.ode.bpel.engine.BpelProcess  360 | >> 
> handleWorkEvent(jobData={type=MATCHER, inmem=false, ckey=236~168244, co
> rrelatorId=42.deliveryReportEvent, iid=168244})
> 11:50:29,162 | DEBUG | pool-19-thread-25 | BpelRuntimeContextImpl   | 
> .engine.BpelRuntimeContextImpl  161 | BpelRuntimeContextImpl created for 
> instance 168244. INDEXED STATE={{OScope
>  'SendPROCESSScope' id=229}::42=[SCOPE(...)], {OScope 'SendPROCESSScope' 
> id=229}::41=[ACTIVITYGUARD(...)], 
> OFlow#98-ProcessMessages::15=[ACTIVITYGUARD(...)], 
> OSequence#100-SendPROCESS::19=[ACTIV
> ITYGUARD(...)], {OScope '__PROCESS_SCOPE:PROCESS' id=20}::0=[ACTIVE(...)], 
> {OScope 'ProcessScope' id=99}::18=[SCOPE(...)], {OScope 'ProcessScope' 
> id=229}::42=[ACTIVE(...)], OSequen
> ce#47-PROCESSAlert::1=[ACTIVITYGUARD(...)], 
> OPickReceive#290-receive-activity-line-378::64=[PICK(...)], 
> OSequence#237-SendPROCESS::44=[SEQUENCE(self=(OSequence#237-SendPROCESS,TerminationChannel
> #61,ParentScopeChannel#63), 
> linkframe=org.apache.ode.bpel.runtime.linkfr...@fe0c2, 
> remaining=[OPickReceive#290-receive-activity-line-378, 
> OSwitch#293-if-activity-line-383])], OSequen
> ce#47-PROCESSAlert::2=[SEQUENCE(self=(OSequence#47-PROCESSAlert,TerminationChannel#3,ParentScopeChannel#5),
>  linkframe=org.apache.ode.bpel.runtime.linkfr...@6d11d3, 
> remaining=[OFlow#98-Proces
> sMessages])], 
> OPickReceive#290-receive-activity-line-378::63=[ACTIVITYGUARD(...)], {OScope 
> 'SendPROCESSScope' id=99}::18=[ACTIVE(...)], {OScope 'SendPROCESSScope' 
> id=99}::17=[ACTIVITYGUARD(.
> ..)], 
> OSequence#100-SendPROCESS::20=[SEQUENCE(self=(OSequence#100-SendPROCESS,TerminationChannel#29,ParentScopeChannel#31),
>  linkframe=org.apache.ode.bpel.runtime.linkfr...@fe0c2, remaining=[
> OSwitch#227-PROCESSNotEmpty, OThrow#333-Completed])], 
> OSequence#237-SendPROCESS::43=[ACTIVITYGUARD(...)], 
> OSwitch#227-PROCESSNotEmpty::39=[ACTIVITYGUARD(...)], 
> OFlow#98-ProcessMessages::16=[<T:A
> ct:Flow:ProcessMessages>], {OScope '__PROCESS_SCOPE:PROCESS_Alert' 
> id=20}::0=[SCOPE(...)]}
> 11:50:29,163 | DEBUG | pool-19-thread-25 | BpelProcess              | 
> he.ode.bpel.engine.BpelProcess  406 | Matcher event for iid 168244
> 11:50:29,164 | DEBUG | pool-19-thread-25 | BpelRuntimeContextImpl   | 
> .engine.BpelRuntimeContextImpl 1316 | MatcherEvent handling: 
> correlatorId=42.deliveryReportEvent, ckey={Correlat
> ionKey setId=236, values=[168244]}
> 11:50:29,152 | DEBUG | pool-19-thread-24 | rRoleMessageExchangeImpl | 
> PartnerRoleMessageExchangeImpl   63 | replyAsync mex=hqejbhcnphr3f2nurln3kn
> 11:50:29,168 | DEBUG | pool-19-thread-24 | BpelRuntimeContextImpl   | 
> .engine.BpelRuntimeContextImpl  839 | Setting execution state on instance 
> 168246
> 11:50:28,993 | DEBUG | pool-19-thread-16 | ScopeFrame               | 
> he.ode.bpel.runtime.ScopeFrame  237 | Initialize variable: name={Variable 
> __PROCESS_SCOPE:UnifyFMS.dispatcherPlk
> VarResponse:OMessageVarType#22} value=<?xml version="1.0" encoding="UTF-8"?>
> <message><parameters><sendResponse 
> xmlns="http://.../queue"/></parameters></message>
> 11:50:29,460 | DEBUG | pool-19-thread-25 | BpelRuntimeContextImpl   | 
> .engine.BpelRuntimeContextImpl 1348 | MatcherEvent handling: nothing to do, 
> no matching message in DB
> 11:50:29,461 | DEBUG | pool-19-thread-25 | InstanceLockManager      | 
> pel.engine.InstanceLockManager   88 | Thread[pool-19-thread-25,5,main]: 
> unlock(iid=168244)
>     
> And entry from ODE_MESSAGE_EXCHANGE table (indicating that MEX was committed 
> to DB, however line 11:50:29,460 says it's not found):
> hqejbhcnphr3f2nurln3kj        {http://.../DeliveryReport2     (null)  
> ID:127.0.1.1-11b074d2328-2:3461 236~168244      QUEUED  (null)  77      
> (CLOB)  (null)  (null)  deliveryReportEvent 42  REQUEST_ONLY    (null)  
> (null)  0       ASYNC   174     (null)  104     (null)  177888  (null)
> Regards

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to