5 Replies Latest reply on Nov 27, 2012 7:07 AM by komododave

    Why is my 'Available Features - Repository:' list empty?

    komododave

      I've been trying to get this to work for the past few hours with no success.

       

      After installing Fuse Fabric I entered the Fuse Fabric ESB command console via ..fabric/bin/fusefabric, which itself simply calls ..fabric/bin/karaf.

       

      I then ran the fabric:create shell command to create an initial ensemble node named root as is the default.

       

      We have a local network Nexus installation (Maven repo manager by Sonatype). For every original repository URL listed by the fabric agent and fabric maven proxy, a proxy repository has been created on Nexus.

       

      I used

       

        fabric:profile-edit --pid org.fusesource.fabric.agent/patch.repositories=... default

       

      to set the fabric agent patch repository URLs for the default profile.

       

      Likewise, I ran:

       

        fabric:profile-edit --pid org.fusesource.fabric.agent/org.ops4j.pax.url.mvn.repositories=... default

       

      to set the fabric agent feature/bundle repository URLs for the default profile.

       

      Lastly, this command was used:

       

        fabric:profile-edit --pid org.fusesource.fabric.maven/remoteRepositories=... fabric

       

      to set the fabric maven proxy repository URLs for the fabric profile.

       

      Following this the fabric agent has remote repo properties configured like so:

       

      org.ops4j.pax.url.mvn.repositories=http\://maven/nexus/content/repositories/fusesource-m2,http\://maven/nexus/content/repositories/fusesource-nexus,http\://maven/nexus/content/repositories/fusesource-nexus-groups-ea,http\://maven/nexus/content/repositories/fusesource-nexus-public,http\://maven/nexus/content/repositories/springsource,http\://maven/nexus/content/repositories/springsource-external,http\://maven/nexus/content/repositories/scala-repo-releases,http\://maven/nexus/content/repositories/fusesource-features-releases,http\://maven/nexus/content/repositories/fusesource-features-snapshots

       

      patch.repositories=http\://maven/nexus/content/repositories/fusesource-nexus,http\://maven/nexus/content/repositories/fusesource-nexus-groups-ea,http\://maven/nexus/content/repositories/fusesource-features-releases,http\://maven/nexus/content/repositories/fusesource-features-snapshots

       

      These are all the Nexus proxies which have as remote URL the original repository locations, plus two additional repos for the top property which will contain our own releases and snapshots.

       

      The fabric maven proxy has remote repo properties configured like so:

       

      remoteRepositories=http\://maven/nexus/content/repositories/fusesource-m2,http\://maven/nexus/content/repositories/fusesource-nexus,http\://maven/nexus/content/repositories/fusesource-nexus-groups-ea,http\://maven/nexus/content/repositories/fusesource-nexus-public,http\://maven/nexus/content/repositories/springsource,http\://maven/nexus/content/repositories/springsource-external,http\://maven/nexus/content/repositories/scala-repo-releases,http\://maven/nexus/content/repositories/fusesource-features-releases,http\://maven/nexus/content/repositories/fusesource-features-snapshots

       

       

      Fuse Management Console ("FMC") was installed on another Virtual IP ("VIP") on the same box. I chose Join for the root fabric. The SSH access had been tested manually already, and indeed the Join was successful.

       

      Now the containers listed in FMC are Fuse Management Console and root.

       

      After a few minutes the following error displayed for the default profile:

       

        Error fetching features repository: URL mvn:org.fusesource.fabric/fuse-fabric/7.0.1.fuse-084/xml/features could not be resolved.

       

      This profile has only the default feature repository defined, namely:

       

        mvn:org.fusesource.fabric/fuse-fabric/7.0.1.fuse-084/xml/features

       

      After running log:tail in the root ESB command console, I can see the following warnings:

       

      2012-11-21 07:26:09,639 | WARN  | -70-084-thread-2 | Activator                        | 18 - org.apache.karaf.diagnostic.common - 2.2.5.fuse-70-084 | Feature service is not present, Feature dump provider will be disabled

       

      2012-11-21 07:26:09,704 | WARN  | use-084-thread-2 | Activator                        | 97 - org.fusesource.fabric.fabric-commands - 7.0.1.fuse-084 | Feature service is not present, Feature / Repository completion will be disabled

       

       

      Visiting the Features tab for default profile presents four installed features:

       

       

          fabric-agent

          karaf

          fabric-jaas

          fabric-core

       

      Below these is the Available Features header, and just below that is the Repository: dropdown. This is empty when the page is refreshed, or else after a few minutes contains the lone feature repository specified earlier. It is in red and presents a red box containing the Error mentioned previously.

       

      I tried uploading the fmc-pinger-example to our releases repository, then created the profiles described in that project's readme. I reconfigured the POM to deploy to our Nexus repo, and deployment of the artifacts was successful.

       

      All three of the new profiles relating to this project also present an empty Repository: dropdown when selected in FMC.

       

      However, if I try to create a new container in FMC that uses any of the new profiles, I can see the ping-features artifact has been successfully downloaded to the relevant container:

       

      root@host:/home/my-user# find -regex '.ping.'

      ./containers/my-container/fuse-fabric-7.0.2.fuse-097/system/org/fusesource/examples/ping

      ./containers/my-container/fuse-fabric-7.0.2.fuse-097/system/org/fusesource/examples/ping/ping-features

      ./containers/my-container/fuse-fabric-7.0.2.fuse-097/system/org/fusesource/examples/ping/ping-features/1.0

      ./containers/my-container/fuse-fabric-7.0.2.fuse-097/system/org/fusesource/examples/ping/ping-features/1.0/ping-features-1.0-features.xml

       

      I'd be tremendously grateful if someone could help me identify what's wrong. I've read every document available, watched all the webinars, yet seem to be having issues no-one else is experiencing.

       

      The installation of both Fuse Fabric and Fuse Management Console was performed as prescribed, to the letter.

       

      Would someone be kind enough to help me resolve this?

        • 1. Re: Why is my 'Available Features - Repository:' list empty?
          komododave

          Some new information. I'll post this as a separate question, but include here in case it's related to the features repo issue stated above.

           

          I created a root container (profile: mq) via SSH on another VIP. This was named demo-mq-itfus004.

           

          When attempting to create a child container under this I received a large exception popup, the top portion of which is shown below.

           

          Then container name it lists has karaf- prefixed onto the name I specified for the container I selected as parent. Is this an FMC bug? I'm about to try doing the same thing through the command line instead.

           

          Here's the exception:

           

          Server Error : Fuse container creation failed due to error : ?<html>

          <head>

          <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

          <title>Error 500 java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: karaf-demo-mq-itfus004</title>

          </head>

          +h2. HTTP ERROR 500

          +

          <p>Problem accessing /agents.json. Reason:

          +

          java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: karaf-demo-mq-itfus004



          h3. Caused by:

          org.fusesource.fabric.api.FabricException: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: karaf-demo-mq-itfus004+

              at org.fusesource.fabric.service.ContainerTemplate.createConnector(ContainerTemplate.java:167)

              at org.fusesource.fabric.service.ContainerTemplate$1.createConnector(ContainerTemplate.java:50)

              at org.fusesource.fabric.service.NonCachingJmxTemplate.execute(NonCachingJmxTemplate.java:36)

              at org.fusesource.fabric.service.ContainerTemplate.execute(ContainerTemplate.java:95)

              at org.fusesource.fabric.service.ChildContainerProvider.create(ChildContainerProvider.java:54)

              at org.fusesource.fabric.service.ChildContainerProvider.create(ChildContainerProvider.java:29)

              at org.fusesource.fabric.service.FabricServiceImpl.createContainers(FabricServiceImpl.java:258)

              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 org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50)

              at org.apache.aries.proxy.impl.DefaultWrapper.invoke(DefaultWrapper.java:31)

              at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78)

              at $Proxy32.createContainers(Unknown Source)

              at com.fusesource.fmc.webui.agents.AgentsResource.create(AgentsResource.scala:80)

              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 com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)

              at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)

              at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)

              at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)

              at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)

              at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)

              at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)

              at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)

              at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)

              at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)

              at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)

              at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)

              at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)

              at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:895)

              at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:843)

              at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:804)

              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330)

              at org.ops4j.pax.web.service.internal.WelcomeFilesFilter.doFilter(WelcomeFilesFilter.java:169)

              at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1330)

              at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:478)

              at org.ops4j.pax.web.service.jetty.internal.HttpServiceServletHandler.doHandle(HttpServiceServletHandler.java:70)

              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)

              at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)

              at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)

              at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941)

              at org.ops4j.pax.web.service.jetty.internal.HttpServiceContext.doHandle(HttpServiceContext.java:117)

              at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)

              at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)

              at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875)

              at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)

              at org.ops4j.pax.web.service.jetty.internal.JettyServerHandlerCollection.handle(JettyServerHandlerCollection.java:72)

              at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)

              at org.eclipse.jetty.server.Server.handle(Server.java:349)

              at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)

              at org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:936)

              at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)

              at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)

              at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)

              at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)

              at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)

              at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)

              at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)

              at java.lang.Thread.run(Thread.java:662)

          Caused by: java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NameNotFoundException: karaf-demo-mq-itfus004

              at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:340)

              at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248)

              at org.fusesource.fabric.service.ContainerTemplate.createConnector(ContainerTemplate.java:163)

              ... 62 more

          Caused by: javax.naming.NameNotFoundException: karaf-demo-mq-itfus004

              at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:99)

              at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)

              at javax.naming.InitialContext.lookup(InitialContext.java:392)

              at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1888)

              at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1858)

              at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:257)

              ... 64 more

          • 2. Re: Why is my 'Available Features - Repository:' list empty?
            stlewis

            So FMC uses the pax mvn url resolver to get the XML files for each feature repository.  In this case since FMC has been joined to a fabric it's running as a non-managed container.

             

            What this means is that the config from the fabric registry isn't bridged to the FMC container, so configuration changes you make in the registry won't be seen by the FMC webapp, and more importantly the pax mvn url resolver.  So what you'll need to do for now is edit the etc/org.ops4j.pax.url.mvn.cfg file to point to your in-house nexus as well, similar changes that were made to your fabric configuration.

             

            Note that in the next version will have FMC available in a profile and as a feature so you can just install the console into your ESB without having to run a second container.

            • 3. Re: Why is my 'Available Features - Repository:' list empty?
              komododave

              Sincere thanks for your response slewis (gashcrumb!), I very much appreciate you taking the time to explain.

               

              It's interesting how you describe it, because I'd previously read  this page which comments that "Once /joined to an ensemble node/ Fuse Management Console can manage the fabric.". I took the description there to mean that creating a fabric ensemble container on the FMC node made it unmanageable.

               

              I believe you're stating the same fact from another perspective: although the Join has allowed FMC to manage the other container, it means FMC isn't a managed container. Is that correct?

               

              I'm eager for clear understanding

              • 4. Re: Why is my 'Available Features - Repository:' list empty?
                komododave

                I can confirm this worked like a charm. Many thanks Stan.

                • 5. Re: Why is my 'Available Features - Repository:' list empty?
                  komododave

                  Stan - is there information on when the next Fuse Fabric release will be available which offers FMC as a feature?

                   

                  I ask because we'd like the reassurance of knowing we have high availability on FMC, not just the containers it manages.

                   

                  EDIT: I'll post this as a new question instead...