ode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alexis Midon (JIRA)" <j...@apache.org>
Subject [jira] Commented: (ODE-647) Multiple consecutive invocations to a service might incur an axis2.AxisFault of "two services cannot have same name".
Date Tue, 15 Dec 2009 06:05:18 GMT

    [ https://issues.apache.org/jira/browse/ODE-647?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790579#action_12790579

Alexis Midon commented on ODE-647:


thanks for the patch. I reviewed the code and here are my comments:

#1. the _axisServiceWatchDog is supposed to make sure the ServiceClient is updated if the
service config file is updated. I think your patch breaks this in 2 places:
   a. the first time a CachedServiceClient is created, the config file is not applied (Cf.
reconfigureService(null) ). 
   b. the ServiceFileObserver only updates the ServiceClient of the current thread while the
associated WatchDog is shared by all threads. So let's say that thread t1 invokes _axisServiceWatchDog.check()
and update its ServiceClient instance (ServiceFileObserver.onUpdate), thread t2 will not see
the change for two potential reasons: WatchDog.check() actally checks the monitored resource
only every 20 seconds and the service file has not changed since thread t1 checked.

So I think each CachedServiceClient should have its own WatchDog instance to monitor the service
config file. 

#2 same thing for _axisOptionsWatchDog although the initialization is correct.

> Multiple consecutive invocations to a service might  incur an axis2.AxisFault of  "two
services cannot have same name".
> -----------------------------------------------------------------------------------------------------------------------
>                 Key: ODE-647
>                 URL: https://issues.apache.org/jira/browse/ODE-647
>             Project: ODE
>          Issue Type: Bug
>    Affects Versions: 1.3.3
>         Environment: ODE1.3.3, Tomcat 5.5.9, Sun JVM 1.5, Windows XP SP3
>            Reporter: Wenfeng Zhao
>            Assignee: Alexis Midon
>            Priority: Critical
>             Fix For: 1.3.4
>         Attachments: ODE-647-outputs.txt, ODE-647.patch, ODE647.zip
>   Original Estimate: 24h
>  Remaining Estimate: 24h
> Although version 1.3.2 and 2.0 are OK,   with ODE 1.3.3, it seems that multiple consecutive
invocations to a same component service might incur the following exception:
> ERROR - GeronimoLog.error(108) | Error sending message to Axis2 for ODE mex {PartnerRoleMex#hqejbhcnphr4i3dscxlf10
[PID {http://scqr.bupt.edu.cn/solution}process_SyntheticBookService_sol2-12] calling null.operation1(...)}
> org.apache.axis2.AxisFault: Two services cannot have same name.  A service with the axis_service_for_{http://example.org/writerInfo}writerInfoService#writerInfoPort_hqejbhcnphr4i3dscxlf0r
name already exists in the system.
> 	at org.apache.axis2.client.ServiceClient.configureServiceClient(ServiceClient.java:172)
> 	at org.apache.axis2.client.ServiceClient.<init>(ServiceClient.java:139)
> 	at org.apache.ode.axis2.SoapExternalService.getServiceClient(SoapExternalService.java:281)
> 	at org.apache.ode.axis2.SoapExternalService.invoke(SoapExternalService.java:140)
> 	at org.apache.ode.axis2.MessageExchangeContextImpl.invokePartner(MessageExchangeContextImpl.java:52)
> 	at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.invoke(BpelRuntimeContextImpl.java:781)
> 	at org.apache.ode.bpel.runtime.INVOKE.run(INVOKE.java:100)
> 	at sun.reflect.GeneratedMethodAccessor58.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:585)
> 	at org.apache.ode.jacob.vpu.JacobVPU$JacobThreadImpl.run(JacobVPU.java:451)
> 	at org.apache.ode.jacob.vpu.JacobVPU.execute(JacobVPU.java:139)
> 	at org.apache.ode.bpel.engine.BpelRuntimeContextImpl.execute(BpelRuntimeContextImpl.java:875)
> 	at org.apache.ode.bpel.engine.BpelProcess.handleWorkEvent(BpelProcess.java:438)
> 	at org.apache.ode.bpel.engine.BpelEngineImpl.onScheduledJob(BpelEngineImpl.java:439)
> 	at org.apache.ode.bpel.engine.BpelServerImpl.onScheduledJob(BpelServerImpl.java:441)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:411)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4$1.call(SimpleScheduler.java:405)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:218)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:404)
> 	at org.apache.ode.scheduler.simple.SimpleScheduler$4.call(SimpleScheduler.java:401)
> 	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> 	at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> 	at java.lang.Thread.run(Thread.java:595)
> And I noted that a similar problem has been discussed in 2007( https://issues.apache.org/jira/browse/AXIS2-1182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12476874
).  But I'm not clear whether there are relations between the two problems.

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

View raw message