Uploaded image for project: 'Red Hat Fuse'
  1. Red Hat Fuse
  2. ENTESB-11071

Stale osgi service references in bundles

    XMLWordPrintable

Details

    • Bug
    • Resolution: Not a Bug
    • Major
    • None
    • jboss-fuse-6.3
    • None
    • % %
    • -
    • Hide
      • Create a fabric environment, fabric:create --clean --wait-for-provisioning
      • Build the producer and consumer bundles attached and install them, mvn clean install
      • Create a fabric profile as below:
      JBossFuse:karaf@root> profile-display testProfile
      Profile id: testProfile
      Version   : 1.0
      Attributes:
              parents: karaf
      Containers: root
      
      Container settings
      ----------------------------
      Features :
              camel-core
              camel-jetty9
              camel-blueprint
      
      Bundles :
              mvn:com.redhat/service-test-producer-ws/1.1.0-SNAPSHOT;start-level=95
              mvn:com.redhat/service-test-consumer-ws/1.0.0-SNAPSHOT;start-level=95
      
      
      Configuration details
      
      ----------------------------
      PID: testProperties
        some-property xxy
      
      • curl -si http://localhost:9292/hello. (this is the producer). It should return a response of 'xxx' (or the value of some-property property)
      • curl -si http://localhost:9191/hello (this is the consumer). It should return a constant 'test' string.
      • change some-property to other value (via hawtio gui)
      • Again visit http://localhost:9292/hello (producer) - should be returning the new value
        visit http://localhost:9191/hello (consumer) - returns:
        j
        ava.lang.IllegalStateException: ProducerTemplate has not been started
        	at org.apache.camel.impl.DefaultProducerTemplate.getProducerCache(DefaultProducerTemplate.java:704)
        	at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:119)
        	at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:363)
        	at cz.csobpoj.esb.servicetestproducer.core.TestServiceImpl.test(TestServiceImpl.java:20)
        	at Proxy3b31e234_71a3_4934_bf15_4de377198959.test(Unknown Source)
        	at cz.csobpoj.esb.servicetestconsumer.core.TestBean.process(TestBean.java:18)
        	at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63)
        	at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77)
        	at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468)
        	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)
        	at org.apache.camel.processor.Pipeline.process(Pipeline.java:121)
        	at org.apache.camel.processor.Pipeline.process(Pipeline.java:83)
        	at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196)
        	at org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:191)
        	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        	at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812)
        	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587)
        	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
        	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
        	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
        	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
        	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
        	at org.eclipse.jetty.server.Server.handle(Server.java:499)
        	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
        	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258)
        	at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544)
        	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
        	at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
        	at java.lang.Thread.run(Thread.java:748)
        
      Show
      Create a fabric environment, fabric:create --clean --wait-for-provisioning Build the producer and consumer bundles attached and install them, mvn clean install Create a fabric profile as below: JBossFuse:karaf@root> profile-display testProfile Profile id: testProfile Version : 1.0 Attributes: parents: karaf Containers: root Container settings ---------------------------- Features : camel-core camel-jetty9 camel-blueprint Bundles : mvn:com.redhat/service-test-producer-ws/1.1.0-SNAPSHOT;start-level=95 mvn:com.redhat/service-test-consumer-ws/1.0.0-SNAPSHOT;start-level=95 Configuration details ---------------------------- PID: testProperties some-property xxy curl -si http://localhost:9292/hello . (this is the producer). It should return a response of 'xxx' (or the value of some-property property) curl -si http://localhost:9191/hello (this is the consumer). It should return a constant 'test' string. change some-property to other value (via hawtio gui) Again visit http://localhost:9292/hello (producer) - should be returning the new value visit http://localhost:9191/hello (consumer) - returns: j ava.lang.IllegalStateException: ProducerTemplate has not been started at org.apache.camel.impl.DefaultProducerTemplate.getProducerCache(DefaultProducerTemplate.java:704) at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:119) at org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:363) at cz.csobpoj.esb.servicetestproducer.core.TestServiceImpl.test(TestServiceImpl.java:20) at Proxy3b31e234_71a3_4934_bf15_4de377198959.test(Unknown Source) at cz.csobpoj.esb.servicetestconsumer.core.TestBean.process(TestBean.java:18) at org.apache.camel.processor.DelegateSyncProcessor.process(DelegateSyncProcessor.java:63) at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:468) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196) at org.apache.camel.processor.Pipeline.process(Pipeline.java:121) at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:196) at org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:191) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:587) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) at org.eclipse.jetty.server.Server.handle(Server.java:499) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:258) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) at java.lang. Thread .run( Thread .java:748)

    Description

      When bundle A produces service S and bundle B has a reference to it, and we update bundle A (via osgi:update or i.e. changing a property in a profile via Hawtio), the reference in the bundle B becomes stale.

      In the attachment, if the RouteBuilder does not have any injected dependencies (via @BeanInject, @EndpointInject or @PropertyInject, or via blueprint xml), the problem does not occur and the 'tracked' field of ReferenceRecipe is initialized properly after start (closed=false, and 'tracked' of size 1 and 'inital' of size 0).

      Attachments

        Activity

          People

            ggrzybek Grzegorz Grzybek
            rhn-support-vgohel Viral Gohel
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: