Petals ESB Container

A suite of life cycle changes results in end-point leak

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Critical Critical
  • Resolution: Fixed
  • Affects Version/s: 3.1.1
  • Fix Version/s: 3.1.2, 4.0.0
  • Security Level: Public
  • Description:
    Hide

    In some cases, Petals can loose end-points and not be able to restore them.
    Here is a scenario:

    • Configure the EIP SE 2.5 with the attached properties files (it must be referenced as an URL in its jbi.xml file).
    • Install the EIP SE 2.5 nd the SOAP BC 4.0.4.
    • Install the attached SA.
    • Launch the Petals web console. Stop the SA and sutdown it.
    • Still in the console, stop the components and shutdown them.
    • Restart the components and the SA. Take a look at the list of end-points...


    The SA's end-points do not appear anymore.
    You can also try listing them with the Petals command line ("l" command).

    Show
    In some cases, Petals can loose end-points and not be able to restore them. Here is a scenario:
    • Configure the EIP SE 2.5 with the attached properties files (it must be referenced as an URL in its jbi.xml file).
    • Install the EIP SE 2.5 nd the SOAP BC 4.0.4.
    • Install the attached SA.
    • Launch the Petals web console. Stop the SA and sutdown it.
    • Still in the console, stop the components and shutdown them.
    • Restart the components and the SA. Take a look at the list of end-points...

    The SA's end-points do not appear anymore. You can also try listing them with the Petals command line ("l" command).
  • Environment:
    Windows 7
    java version "1.6.0_23"
    Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
    Java HotSpot(TM) 64-Bit Server VM (build 19.0-b09, mixed mode)
  1. test.properties
    (0.1 kB)
    Vincent Zurczak
    Tue, 7 Jun 2011 - 14:37:47 +0200
  2. TestEIP.zip
    (7 kB)
    Vincent Zurczak
    Tue, 7 Jun 2011 - 14:37:47 +0200
  3. TestWSESB.war
    (5 kB)
    Vincent Zurczak
    Tue, 7 Jun 2011 - 14:37:47 +0200

Activity

Vincent Zurczak made changes - Tue, 7 Jun 2011 - 14:37:47 +0200
Field Original Value New Value
Attachment test.properties [ 10600 ]
Attachment TestEIP.zip [ 10601 ]
Attachment TestWSESB.war [ 10602 ]
Hide
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 14:42:20 +0200

Using the petals-samples-client at each step to check the registered endpoint, we can see that the endpoint is deregister when shutdowning the SE EIP.

Moreover, undeploying the SA just after to have restart the component, we get the following error:

[Petals.Container.Components.petals-se-eip]-SEVERE 2011-06-08 14:38:29,224 Service unit 'su-EIP-taxesService-provide' failed to undeploy
org.ow2.petals.jbi.messaging.registry.RegistryException: Can not unregister not registered endpoint...
	at org.ow2.petals.jbi.messaging.registry.BaseEndpointRegistry.deactivateEndpoint(BaseEndpointRegistry.java:173)
	at org.objectweb.fractal.julia.generated.C2304ecde_0.deactivateEndpoint(INTERCEPTOR[EndpointRegistry])
	at org.objectweb.fractal.julia.generated.C2eb804c9_0.deactivateEndpoint(INTERFACE[EndpointRegistry])
	at org.ow2.petals.jbi.component.context.ComponentContextImpl.deactivateEndpoint(ComponentContextImpl.java:230)
	at org.ow2.petals.component.framework.su.AbstractServiceUnitManager.undeploy(AbstractServiceUnitManager.java:656)
	at org.ow2.petals.jbi.management.task.deployment.undeploy.UndeployAllSUsTask.undeploySU(UndeployAllSUsTask.java:142)
	at org.ow2.petals.jbi.management.task.deployment.undeploy.UndeployAllSUsTask.undeploySUS(UndeployAllSUsTask.java:99)
	at org.ow2.petals.jbi.management.task.deployment.undeploy.UndeployAllSUsTask.execute(UndeployAllSUsTask.java:70)
	at org.ow2.petals.jbi.management.TaskProcessor.process(TaskProcessor.java:78)
	at org.ow2.petals.jbi.management.deployment.DeploymentServiceImpl.undeploy(DeploymentServiceImpl.java:649)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37)
	at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
	at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074)
	at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)
	at mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBeanServerInterceptor.java:221)
	at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:120)
	at mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityMBeanServerInterceptor.java:84)
	at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:120)
	at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:120)
	at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke(ContextClassLoaderMBeanServerInterceptor.java:203)
	at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1043)
	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
	at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
	at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
	at sun.rmi.transport.Transport$1.run(Transport.java:159)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Show
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 14:42:20 +0200 Using the petals-samples-client at each step to check the registered endpoint, we can see that the endpoint is deregister when shutdowning the SE EIP. Moreover, undeploying the SA just after to have restart the component, we get the following error:
[Petals.Container.Components.petals-se-eip]-SEVERE 2011-06-08 14:38:29,224 Service unit 'su-EIP-taxesService-provide' failed to undeploy
org.ow2.petals.jbi.messaging.registry.RegistryException: Can not unregister not registered endpoint...
	at org.ow2.petals.jbi.messaging.registry.BaseEndpointRegistry.deactivateEndpoint(BaseEndpointRegistry.java:173)
	at org.objectweb.fractal.julia.generated.C2304ecde_0.deactivateEndpoint(INTERCEPTOR[EndpointRegistry])
	at org.objectweb.fractal.julia.generated.C2eb804c9_0.deactivateEndpoint(INTERFACE[EndpointRegistry])
	at org.ow2.petals.jbi.component.context.ComponentContextImpl.deactivateEndpoint(ComponentContextImpl.java:230)
	at org.ow2.petals.component.framework.su.AbstractServiceUnitManager.undeploy(AbstractServiceUnitManager.java:656)
	at org.ow2.petals.jbi.management.task.deployment.undeploy.UndeployAllSUsTask.undeploySU(UndeployAllSUsTask.java:142)
	at org.ow2.petals.jbi.management.task.deployment.undeploy.UndeployAllSUsTask.undeploySUS(UndeployAllSUsTask.java:99)
	at org.ow2.petals.jbi.management.task.deployment.undeploy.UndeployAllSUsTask.execute(UndeployAllSUsTask.java:70)
	at org.ow2.petals.jbi.management.TaskProcessor.process(TaskProcessor.java:78)
	at org.ow2.petals.jbi.management.deployment.DeploymentServiceImpl.undeploy(DeploymentServiceImpl.java:649)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:37)
	at sun.reflect.GeneratedMethodAccessor40.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:244)
	at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1074)
	at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:955)
	at mx4j.server.interceptor.InvokerMBeanServerInterceptor.invoke(InvokerMBeanServerInterceptor.java:221)
	at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:120)
	at mx4j.server.interceptor.SecurityMBeanServerInterceptor.invoke(SecurityMBeanServerInterceptor.java:84)
	at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:120)
	at mx4j.server.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:120)
	at mx4j.server.interceptor.ContextClassLoaderMBeanServerInterceptor.invoke(ContextClassLoaderMBeanServerInterceptor.java:203)
	at mx4j.server.MX4JMBeanServer.invoke(MX4JMBeanServer.java:1043)
	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1427)
	at javax.management.remote.rmi.RMIConnectionImpl.access$200(RMIConnectionImpl.java:72)
	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1265)
	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1360)
	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:788)
	at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
	at sun.rmi.transport.Transport$1.run(Transport.java:159)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Christophe DENEUX made changes - Wed, 8 Jun 2011 - 14:42:20 +0200
Status New [ 10000 ] Open [ 10002 ]
Priority Blocker [ 1 ]
Assignee Roland Naudin [ rnaudin ] Christophe DENEUX [ cdeneux ]
Hide
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 14:55:44 +0200

Analysis:

  • Endpoint are deregistered when closing the delivery channel.
  • The delivery channel is closed when shut-downing the component.
Show
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 14:55:44 +0200 Analysis:
  • Endpoint are deregistered when closing the delivery channel.
  • The delivery channel is closed when shut-downing the component.
Hide
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 14:59:36 +0200

IMO, endpoints registered through a service unit MUST be only deregistered when undeploying the service unit.

Show
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 14:59:36 +0200 IMO, endpoints registered through a service unit MUST be only deregistered when undeploying the service unit.
Christophe DENEUX made changes - Wed, 8 Jun 2011 - 16:13:24 +0200
Status Open [ 10002 ] In Progress [ 10003 ]
Hide
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 16:15:05 +0200 - edited

Fixed in branch petals-entreprise-3.1.x

Unregistration of all endpoints has been moved from DeliveryChannelImpl.close() to Installer.doUninstall. So, if endpoints are remaining, they will be unregistered when uninstalling the component.

Show
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 16:15:05 +0200 - edited Fixed in branch petals-entreprise-3.1.x Unregistration of all endpoints has been moved from DeliveryChannelImpl.close() to Installer.doUninstall. So, if endpoints are remaining, they will be unregistered when uninstalling the component.
Christophe DENEUX made changes - Wed, 8 Jun 2011 - 16:15:05 +0200
Status In Progress [ 10003 ] Resolved [ 10004 ]
Fix Version/s 3.1.2 [ 10156 ]
Resolution Fixed [ 1 ]
Hide
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 16:16:46 +0200

To merge in trunk

Show
Christophe DENEUX added a comment - Wed, 8 Jun 2011 - 16:16:46 +0200 To merge in trunk
Christophe DENEUX made changes - Wed, 8 Jun 2011 - 16:16:46 +0200
Status Resolved [ 10004 ] Open [ 10002 ]
Priority Blocker [ 1 ] Critical [ 2 ]
Resolution Fixed [ 1 ]
Mathieu Carrolle made changes - Tue, 13 Sep 2011 - 11:57:29 +0200
Assignee Christophe DENEUX [ cdeneux ] Mathieu Carrolle [ mcarrolle ]
Mathieu Carrolle made changes - Tue, 13 Sep 2011 - 15:12:33 +0200
Status Open [ 10002 ] In Progress [ 10003 ]
Mathieu Carrolle made changes - Tue, 13 Sep 2011 - 16:13:10 +0200
Assignee Nicolas Oddoux [ noddoux ] Mathieu Carrolle [ mcarrolle ]
Mathieu Carrolle made changes - Tue, 13 Sep 2011 - 16:13:16 +0200
Status In Progress [ 10003 ] Resolved [ 10004 ]
Fix Version/s 4.0.0 [ 10108 ]
Resolution Fixed [ 1 ]
Transition Status Change Time Execution Times Last Executer Last Execution Date
New New Open Open
1d 5m
1
Christophe DENEUX
Wed, 8 Jun 2011 - 14:42:20 +0200
Open Open In Progress In Progress
1h 31m
1
Christophe DENEUX
Wed, 8 Jun 2011 - 16:13:24 +0200
In Progress In Progress Resolved Resolved
1m 41s
1
Christophe DENEUX
Wed, 8 Jun 2011 - 16:15:05 +0200
Resolved Resolved Open Open
1m 41s
1
Christophe DENEUX
Wed, 8 Jun 2011 - 16:16:46 +0200
Open Open In Progress In Progress
96d 22h 55m
1
Mathieu Carrolle
Tue, 13 Sep 2011 - 15:12:33 +0200
In Progress In Progress Resolved Resolved
1h
1
Mathieu Carrolle
Tue, 13 Sep 2011 - 16:13:16 +0200



People

Dates

  • Created:
    Tue, 7 Jun 2011 - 14:36:36 +0200
    Updated:
    Tue, 13 Sep 2011 - 16:13:16 +0200
    Resolved:
    Tue, 13 Sep 2011 - 16:13:16 +0200