Petals ESB Container

Can't recover Components and SAs when the container is in a directory with spaces in its path

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Blocker Blocker
  • Resolution: Fixed
  • Affects Version/s: 4.2.3
  • Fix Version/s: 5.0.0
  • Component/s: Recovery
  • Security Level: Public
  • Description:
    Hide

    From this situation:

    • A container installed in a directory with spaces in it (/home/test/a directory/Petals-ESB/)
    • It is started (should work, see PETALSESBCONT-315)
    • A SE and A SA are deployed
    • It is stopped

    Then when it is restarted two different unexpected things happens:

    1) There is some exception about the SA that can't be recovered.

    container-0 2015/01/22 16:31:40,520 GMT+0100 SEVERE [Petals.JBI-Management.SystemRecoveryService] : org.ow2.petals.microkernel.api.jbi.management.ManagementException: A service assembly consistency is corrupted: sa-xslt-integration
    Its state changes to UNKNOWN
    Please check the repository consistency
    java.util.concurrent.ExecutionException: org.ow2.petals.microkernel.api.jbi.management.ManagementException: A service assembly consistency is corrupted: sa-xslt-integration
    Its state changes to UNKNOWN
    Please check the repository consistency
    	at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    	at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    	at org.ow2.petals.microkernel.jbi.management.recovery.SystemRecoveryServiceImpl.recoverAllServiceAssembly(SystemRecoveryServiceImpl.java:224)
    	at org.ow2.petals.microkernel.jbi.management.recovery.SystemRecoveryServiceImpl.recoverAllEntities(SystemRecoveryServiceImpl.java:136)
    	at org.objectweb.fractal.julia.generated.C95c3da4b_0.recoverAllEntities(INTERCEPTOR[SystemRecoveryService])
    	at org.objectweb.fractal.julia.generated.C2fbde7d6_0.recoverAllEntities(INTERFACE[SystemRecoveryService])
    	at org.ow2.petals.microkernel.server.PetalsServerImpl.recoverSystem(PetalsServerImpl.java:520)
    	at org.ow2.petals.microkernel.server.PetalsServerImpl.start(PetalsServerImpl.java:219)
    	at org.ow2.petals.launcher.PetalsLauncher.launchPetalsServer(PetalsLauncher.java:148)
    	at org.ow2.petals.launcher.PetalsLauncher.run(PetalsLauncher.java:405)
    	at org.ow2.petals.launcher.PetalsLauncher.main(PetalsLauncher.java:345)
    Caused by: org.ow2.petals.microkernel.api.jbi.management.ManagementException: A service assembly consistency is corrupted: sa-xslt-integration
    Its state changes to UNKNOWN
    Please check the repository consistency
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.call(RecoverSaTask.java:94)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.call(RecoverSaTask.java:1)
    	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: org.ow2.petals.microkernel.api.jbi.management.ManagementException: Failed to recover Service Assembly 'sa-xslt-integration'
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverServiceAssembly(RecoverSaTask.java:140)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.call(RecoverSaTask.java:70)
    	... 9 more
    Caused by: org.ow2.petals.microkernel.api.jbi.management.ManagementException: Failed to recover Service Assembly 'sa-xslt-integration'
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverSA(RecoverSaTask.java:164)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverServiceAssembly(RecoverSaTask.java:118)
    	... 10 more
    Caused by: org.ow2.petals.basisapi.exception.PetalsException: JBI descriptor not found in the package '/home/vnoel/Linagora/Petals/dev/svnroot/trunk/product/integration/petals-integration/tests/petals-container/launcher-external-registry-cleaned%20a/target/launcher-external-registry-cleaned/topology/container-0/petals-esb-default-zip-4.3.0-SNAPSHOT/data/repository/service-assemblies/sa-xslt-integration-01-22-2015-043011038/install'
    	at org.ow2.petals.microkernel.api.jbi.management.PackageHelper.loadDescriptor(PackageHelper.java:165)
    	at org.ow2.petals.microkernel.jbi.management.task.AbstractCheckPackageTask.execute(AbstractCheckPackageTask.java:55)
    	at org.ow2.petals.microkernel.api.jbi.management.TaskProcessor.process(TaskProcessor.java:73)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverSA(RecoverSaTask.java:161)
    	... 11 more

    And the component that was unzipped in data/repository/service-assemblies/sa-xslt-integration-01-22-2015-040912598 is moved to data/repository/lost+found/sa-xslt-integration-01-22-2015-040912598.

    2) The component seems to be correctly recovered:

    container-0 2015/01/22 16:31:39,911 GMT+0100 INFO [Petals.JBI-Management.SystemRecoveryService] : Installer of the component 'petals-se-xslt' loaded
    container-0 2015/01/22 16:31:39,916 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt.bootstrap.petals-se-xslt] : Install component [Name : petals-se-xslt, Version : 2.8.0-SNAPSHOT]
    container-0 2015/01/22 16:31:40,018 GMT+0100 INFO [Petals.Container.Lifecycle.Installer] : Component 'petals-se-xslt' installed
    container-0 2015/01/22 16:31:40,018 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Init component...
    container-0 2015/01/22 16:31:40,464 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Component initialized
    container-0 2015/01/22 16:31:40,465 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Start component...
    container-0 2015/01/22 16:31:40,510 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Component started

    But actually it is moved in the lost+found directory as the other, which shouldn't happen (when running the same scenario without spaces in the path, this does not happen).

    An integration test where all of this happens is for example launcher-external-registry-cleaned: just remove the parent maven project directory to add a space and run mvn clean install to see the problem happening to topology/container-0 when test A-4 is executed.

    Show
    From this situation:
    • A container installed in a directory with spaces in it (/home/test/a directory/Petals-ESB/)
    • It is started (should work, see PETALSESBCONT-315)
    • A SE and A SA are deployed
    • It is stopped
    Then when it is restarted two different unexpected things happens: 1) There is some exception about the SA that can't be recovered.
    container-0 2015/01/22 16:31:40,520 GMT+0100 SEVERE [Petals.JBI-Management.SystemRecoveryService] : org.ow2.petals.microkernel.api.jbi.management.ManagementException: A service assembly consistency is corrupted: sa-xslt-integration
    Its state changes to UNKNOWN
    Please check the repository consistency
    java.util.concurrent.ExecutionException: org.ow2.petals.microkernel.api.jbi.management.ManagementException: A service assembly consistency is corrupted: sa-xslt-integration
    Its state changes to UNKNOWN
    Please check the repository consistency
    	at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
    	at java.util.concurrent.FutureTask.get(FutureTask.java:83)
    	at org.ow2.petals.microkernel.jbi.management.recovery.SystemRecoveryServiceImpl.recoverAllServiceAssembly(SystemRecoveryServiceImpl.java:224)
    	at org.ow2.petals.microkernel.jbi.management.recovery.SystemRecoveryServiceImpl.recoverAllEntities(SystemRecoveryServiceImpl.java:136)
    	at org.objectweb.fractal.julia.generated.C95c3da4b_0.recoverAllEntities(INTERCEPTOR[SystemRecoveryService])
    	at org.objectweb.fractal.julia.generated.C2fbde7d6_0.recoverAllEntities(INTERFACE[SystemRecoveryService])
    	at org.ow2.petals.microkernel.server.PetalsServerImpl.recoverSystem(PetalsServerImpl.java:520)
    	at org.ow2.petals.microkernel.server.PetalsServerImpl.start(PetalsServerImpl.java:219)
    	at org.ow2.petals.launcher.PetalsLauncher.launchPetalsServer(PetalsLauncher.java:148)
    	at org.ow2.petals.launcher.PetalsLauncher.run(PetalsLauncher.java:405)
    	at org.ow2.petals.launcher.PetalsLauncher.main(PetalsLauncher.java:345)
    Caused by: org.ow2.petals.microkernel.api.jbi.management.ManagementException: A service assembly consistency is corrupted: sa-xslt-integration
    Its state changes to UNKNOWN
    Please check the repository consistency
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.call(RecoverSaTask.java:94)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.call(RecoverSaTask.java:1)
    	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
    	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: org.ow2.petals.microkernel.api.jbi.management.ManagementException: Failed to recover Service Assembly 'sa-xslt-integration'
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverServiceAssembly(RecoverSaTask.java:140)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.call(RecoverSaTask.java:70)
    	... 9 more
    Caused by: org.ow2.petals.microkernel.api.jbi.management.ManagementException: Failed to recover Service Assembly 'sa-xslt-integration'
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverSA(RecoverSaTask.java:164)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverServiceAssembly(RecoverSaTask.java:118)
    	... 10 more
    Caused by: org.ow2.petals.basisapi.exception.PetalsException: JBI descriptor not found in the package '/home/vnoel/Linagora/Petals/dev/svnroot/trunk/product/integration/petals-integration/tests/petals-container/launcher-external-registry-cleaned%20a/target/launcher-external-registry-cleaned/topology/container-0/petals-esb-default-zip-4.3.0-SNAPSHOT/data/repository/service-assemblies/sa-xslt-integration-01-22-2015-043011038/install'
    	at org.ow2.petals.microkernel.api.jbi.management.PackageHelper.loadDescriptor(PackageHelper.java:165)
    	at org.ow2.petals.microkernel.jbi.management.task.AbstractCheckPackageTask.execute(AbstractCheckPackageTask.java:55)
    	at org.ow2.petals.microkernel.api.jbi.management.TaskProcessor.process(TaskProcessor.java:73)
    	at org.ow2.petals.microkernel.jbi.management.recovery.task.RecoverSaTask.recoverSA(RecoverSaTask.java:161)
    	... 11 more
    And the component that was unzipped in data/repository/service-assemblies/sa-xslt-integration-01-22-2015-040912598 is moved to data/repository/lost+found/sa-xslt-integration-01-22-2015-040912598. 2) The component seems to be correctly recovered:
    container-0 2015/01/22 16:31:39,911 GMT+0100 INFO [Petals.JBI-Management.SystemRecoveryService] : Installer of the component 'petals-se-xslt' loaded
    container-0 2015/01/22 16:31:39,916 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt.bootstrap.petals-se-xslt] : Install component [Name : petals-se-xslt, Version : 2.8.0-SNAPSHOT]
    container-0 2015/01/22 16:31:40,018 GMT+0100 INFO [Petals.Container.Lifecycle.Installer] : Component 'petals-se-xslt' installed
    container-0 2015/01/22 16:31:40,018 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Init component...
    container-0 2015/01/22 16:31:40,464 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Component initialized
    container-0 2015/01/22 16:31:40,465 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Start component...
    container-0 2015/01/22 16:31:40,510 GMT+0100 INFO [Petals.Container.Components.petals-se-xslt] : Component started
    But actually it is moved in the lost+found directory as the other, which shouldn't happen (when running the same scenario without spaces in the path, this does not happen). An integration test where all of this happens is for example launcher-external-registry-cleaned: just remove the parent maven project directory to add a space and run mvn clean install to see the problem happening to topology/container-0 when test A-4 is executed.
  • Environment:
    -

Issue Links

Activity

People

Dates

  • Created:
    Thu, 22 Jan 2015 - 16:32:13 +0100
    Updated:
    Fri, 23 Jan 2015 - 17:25:42 +0100
    Resolved:
    Fri, 23 Jan 2015 - 17:25:42 +0100