Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-112

activate() calls do not match with deactivate() calls for a delayed component (immediate="false") and service instances are multiple (although there is no factory)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • framework-0.8.0
    • scr-1.0.0
    • None
    • WinXP, Sun JDK 5.0

    Description

      activate() calls do not match with deactivate() calls for a delayed component (immediate="false")
      and service instances are multiple (although there is no factory)
      See the first trace.

      If the component is immediate (immediate="false"), the behavior is correct : see the second trace.
      The instance is the same singleton for the two clients.

      Didier

      ========================
      TRACE WITH immediate="false"
      ========================
      <?xml version="1.0" encoding="UTF-8"?>
      <component name="Hello.Service" immediate="false">
      <!-- for immediate="false", see 112.5.4 Delayed Component -->

      <implementation class="fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl"/>

      <property name="language" value="fr"/>

      <service>
      <provide interface="fr.imag.adele.bundle.hello.HelloService"/>
      </service>
      </component>

      -> ps
      START LEVEL 1
      ID State Level Name
      [ 0] [Active ] [ 0] System Bundle (0.8.0.SNAPSHOT)
      [ 1] [Active ] [ 1] ShellService (0.8.0.SNAPSHOT)
      [ 2] [Active ] [ 1] ShellTUI (0.8.0.SNAPSHOT)
      [ 3] [Active ] [ 1] BundleRepository (0.8.0.SNAPSHOT)
      [ 4] [Active ] [ 1] servlet (2.1)
      [ 5] [Active ] [ 1] osgi.compendium (4)
      [ 6] [Active ] [ 1] Service Component Runtime (0.8.0.SNAPSHOT)
      [ 7] [Resolved ] [ 1] Hello Service Specification 1.2 (0.3.0)
      [ 8] [Resolved ] [ 1] Hello Command (with SCR) (0.1.0)
      [ 9] [Resolved ] [ 1] Hello Service Impl 1.1 SCR (0.1.0)
      [ 10] [Resolved ] [ 1] Hello Requester Impl 1.1 SCR (0.1.0)
      -> start 9
      [Hello.Service] Validated and registered component
      [Hello.Service] ManagerFactory.createManager
      [Hello.Service] Enabling component
      [Hello.Service] State transition : CREATING -> CREATED
      [Hello.Service] State transition : CREATED -> VALIDATING
      [Hello.Service] State transition : VALIDATING -> VALID
      [Hello.Service] registering services
      -> start 8
      [Hello.Cmd] Validated and registered component
      [Hello.Cmd] ManagerFactory.createManager
      [Hello.Cmd] Enabling component
      [Hello.Cmd] State transition : CREATING -> CREATED
      [Hello.Cmd] State transition : CREATED -> VALIDATING
      [Hello.Cmd] State transition : VALIDATING -> VALID
      [Hello.Cmd] registering services
      [Hello.Cmd] DelayedComponentServiceFactory.getService()
      [Hello.Service] DelayedComponentServiceFactory.getService()
      (Bundle #9) call activate
      (Bundle #8) call activate
      -> hello Didier

      Hello Didier (from fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@e83912) !!

      -> stop 8
      [Hello.Cmd] State transition : VALID -> DESTROYING
      [Hello.Cmd] unregistering the services
      (Bundle #8) call deactivate
      [Hello.Cmd] getting unbind: unbindHelloService
      [Hello.Cmd] State transition : DESTROYING -> DESTROYED
      -> start 8
      [Hello.Cmd] Validated and registered component
      [Hello.Cmd] ManagerFactory.createManager
      [Hello.Cmd] Enabling component
      [Hello.Cmd] State transition : CREATING -> CREATED
      [Hello.Cmd] State transition : CREATED -> VALIDATING
      [Hello.Cmd] State transition : VALIDATING -> VALID
      [Hello.Cmd] registering services
      [Hello.Cmd] DelayedComponentServiceFactory.getService()
      [Hello.Service] DelayedComponentServiceFactory.getService()
      (Bundle #9) call activate
      (Bundle #8) call activate
      -> hello Rick

      Hello Rick (from fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@7ffe01) !!

      -> start 10
      [Hello.Requester.11] Validated and registered component
      [Hello.Requester.11] ManagerFactory.createManager
      [Hello.Requester.11] Enabling component
      [Hello.Requester.11] State transition : CREATING -> CREATED
      [Hello.Requester.11] State transition : CREATED -> VALIDATING
      [Hello.Service] DelayedComponentServiceFactory.getService()
      (Bundle #9) call activate
      (Bundle #10) call activate
      [Hello.Requester.11] State transition : VALIDATING -> VALID
      -> (Bundle #10) 1:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5 says '
      Hello World !!
      '
      (Bundle #10) 2:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5 says '
      Hello World !!
      '
      (Bundle #10) 3:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5 says '
      Hello World !!
      '
      (Bundle #10) 4:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5 says '
      Hello World !!
      '
      (Bundle #10) 5:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5 says '
      Hello World !!
      '
      hello Rick

      (Bundle #10) 6:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceI
      mpl@fd13b5 says '
      Hello World !!
      '

      Hello Rick (from fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@7ffe01) !!

      -> (Bundle #10) 7:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5 says '
      Hello World !!
      '
      (Bundle #10) 8:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5
      says '
      Hello World !!
      '
      (Bundle #10) 9:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@fd13b5
      says '
      Hello World !!
      '
      stop 10
      [Hello.Requester.11] State transition : VALID -> DESTROYING
      (Bundle #10) call deactivate
      [Hello.Requester.11] getting unbind: unbindHelloService
      [Hello.Requester.11] State transition : DESTROYING -> DESTROYED

      -> services 9

      Hello Service Impl 1.1 SCR (9) provides:
      ----------------------------------------
      language = fr
      objectClass = fr.imag.adele.bundle.hello.HelloService
      service.id = 37

      -> (Bundle #10) thread completed
      stop 8
      [Hello.Cmd] State transition : VALID -> DESTROYING
      [Hello.Cmd] unregistering the services
      (Bundle #8) call deactivate
      [Hello.Cmd] getting unbind: unbindHelloService
      [Hello.Cmd] State transition : DESTROYING -> DESTROYED
      -> stop 9
      [Hello.Service] State transition : VALID -> DESTROYING
      [Hello.Service] unregistering the services
      (Bundle #9) call deactivate
      [Hello.Service] State transition : DESTROYING -> DESTROYED
      ->

      ========================
      TRACE WITH immediate="true"
      ========================
      <?xml version="1.0" encoding="UTF-8"?>
      <component name="Hello.Service" immediate="true">
      <!-- for immediate="false", see 112.5.4 Delayed Component -->

      <implementation class="fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl"/>

      <property name="language" value="fr"/>

      <service>
      <provide interface="fr.imag.adele.bundle.hello.HelloService"/>
      </service>
      </component>

      -> ps
      START LEVEL 1
      ID State Level Name
      [ 0] [Active ] [ 0] System Bundle (0.8.0.SNAPSHOT)
      [ 1] [Active ] [ 1] ShellService (0.8.0.SNAPSHOT)
      [ 2] [Active ] [ 1] ShellTUI (0.8.0.SNAPSHOT)
      [ 3] [Active ] [ 1] BundleRepository (0.8.0.SNAPSHOT)
      [ 4] [Active ] [ 1] servlet (2.1)
      [ 5] [Active ] [ 1] osgi.compendium (4)
      [ 6] [Active ] [ 1] Service Component Runtime (0.8.0.SNAPSHOT)
      [ 7] [Resolved ] [ 1] Hello Service Specification 1.2 (0.3.0)
      [ 8] [Resolved ] [ 1] Hello Command (with SCR) (0.1.0)
      [ 9] [Resolved ] [ 1] Hello Service Impl 1.1 SCR (0.1.0)
      [ 10] [Resolved ] [ 1] Hello Requester Impl 1.1 SCR (0.1.0)
      ->
      ->
      -> start 9
      [Hello.Service] Validated and registered component
      [Hello.Service] ManagerFactory.createManager
      [Hello.Service] Enabling component
      [Hello.Service] State transition : CREATING -> CREATED
      [Hello.Service] State transition : CREATED -> VALIDATING
      (Bundle #9) call activate
      [Hello.Service] State transition : VALIDATING -> VALID
      [Hello.Service] registering services
      -> start 8
      [Hello.Cmd] Validated and registered component
      [Hello.Cmd] ManagerFactory.createManager
      [Hello.Cmd] Enabling component
      [Hello.Cmd] State transition : CREATING -> CREATED
      [Hello.Cmd] State transition : CREATED -> VALIDATING
      [Hello.Cmd] State transition : VALIDATING -> VALID
      [Hello.Cmd] registering services
      [Hello.Cmd] DelayedComponentServiceFactory.getService()
      (Bundle #8) call activate
      -> hello Rick

      Hello Rick (from fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@291aff) !!

      -> start 10
      [Hello.Requester.11] Validated and registered component
      [Hello.Requester.11] ManagerFactory.createManager
      [Hello.Requester.11] Enabling component
      [Hello.Requester.11] State transition : CREATING -> CREATED
      [Hello.Requester.11] State transition : CREATED -> VALIDATING
      (Bundle #10) call activate
      — [(Bundle #10) 1:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@291aff says '
      Hello World !!
      '
      Hello.Requester.11] State transition : VALIDATING -> VALID
      -> (Bundle #10) 2:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@291aff says '
      Hello World !!
      '
      (Bundle #10) 3:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@291aff
      says '
      Hello World !!
      '
      (Bundle #10) 4:fr.imag.adele.bundle.helloservicescr.impl.HelloServiceImpl@291aff
      says '
      Hello World !!
      '
      stop 10
      [Hello.Requester.11] State transition : VALID -> DESTROYING
      (Bundle #10) call deactivate
      [Hello.Requester.11] getting unbind: unbindHelloService
      [Hello.Requester.11] State transition : DESTROYING -> DESTROYED
      -> (Bundle #10) thread completed
      stop 8
      [Hello.Cmd] State transition : VALID -> DESTROYING
      [Hello.Cmd] unregistering the services
      (Bundle #8) call deactivate
      [Hello.Cmd] getting unbind: unbindHelloService
      [Hello.Cmd] State transition : DESTROYING -> DESTROYED
      -> stop 9
      [Hello.Service] State transition : VALID -> DESTROYING
      [Hello.Service] unregistering the services
      (Bundle #9) call deactivate
      [Hello.Service] State transition : DESTROYING -> DESTROYED
      ->

      Attachments

        Activity

          People

            Unassigned Unassigned
            donsez Didier Donsez
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: