A customer upgraded from 3.8.0 to 3.16.2. They tried to install the a kar build of the repoisitory-r plugin via the install-dir/deploy directory method.
Startup of NXRM failed because the r-proxy recipe was not found by the FelixStartLevel thread, despite additional log messages suggesting the plugin bundle was found and ACTIVATED by the bundler installer thread.
2019-06-21 17:24:04,496+0100 INFO [pool-2-thread-1] *SYSTEM org.sonatype.nexus.extender.NexusBundleTracker - ACTIVATING org.sonatype.nexus.plugins.nexus-repository-r [282] 2019-06-21 17:24:04,558+0100 WARN [pool-2-thread-1] *SYSTEM com.google.inject.spi.InjectionPoint - Method: public void org.sonatype.nexus.repository.r.internal.RRecipeSupport.setBrowseUnsupportedHandler(org.sonatype.nexus.repository.view.handlers.BrowseUnsupportedHandler) is not annotated with @Inject but is overriding a method that is annotated with @javax.inject.Inject. Because it is not annotated with @Inject, the method will not be injected. To fix this, annotate the method with @Inject. 2019-06-21 17:24:04,558+0100 WARN [pool-2-thread-1] *SYSTEM com.google.inject.spi.InjectionPoint - Method: public void org.sonatype.nexus.repository.r.internal.RRecipeSupport.setBrowseUnsupportedHandler(org.sonatype.nexus.repository.view.handlers.BrowseUnsupportedHandler) is not annotated with @Inject but is overriding a method that is annotated with @javax.inject.Inject. Because it is not annotated with @Inject, the method will not be injected. To fix this, annotate the method with @Inject. 2019-06-21 17:24:04,558+0100 WARN [pool-2-thread-1] *SYSTEM com.google.inject.spi.InjectionPoint - Method: public void org.sonatype.nexus.repository.r.internal.RRecipeSupport.setBrowseUnsupportedHandler(org.sonatype.nexus.repository.view.handlers.BrowseUnsupportedHandler) is not annotated with @Inject but is overriding a method that is annotated with @javax.inject.Inject. Because it is not annotated with @Inject, the method will not be injected. To fix this, annotate the method with @Inject. 2019-06-21 17:24:05,277+0100 WARN [pool-2-thread-1] *SYSTEM com.google.inject.spi.InjectionPoint - Method: public void org.sonatype.nexus.repository.r.internal.RRecipeSupport.setBrowseUnsupportedHandler(org.sonatype.nexus.repository.view.handlers.BrowseUnsupportedHandler) is not annotated with @Inject but is overriding a method that is annotated with @javax.inject.Inject. Because it is not annotated with @Inject, the method will not be injected. To fix this, annotate the method with @Inject. 2019-06-21 17:24:05,293+0100 WARN [pool-2-thread-1] *SYSTEM com.google.inject.spi.InjectionPoint - Method: public void org.sonatype.nexus.repository.r.internal.RRecipeSupport.setBrowseUnsupportedHandler(org.sonatype.nexus.repository.view.handlers.BrowseUnsupportedHandler) is not annotated with @Inject but is overriding a method that is annotated with @javax.inject.Inject. Because it is not annotated with @Inject, the method will not be injected. To fix this, annotate the method with @Inject. 2019-06-21 17:24:05,293+0100 WARN [pool-2-thread-1] *SYSTEM com.google.inject.spi.InjectionPoint - Method: public void org.sonatype.nexus.repository.r.internal.RRecipeSupport.setBrowseUnsupportedHandler(org.sonatype.nexus.repository.view.handlers.BrowseUnsupportedHandler) is not annotated with @Inject but is overriding a method that is annotated with @javax.inject.Inject. Because it is not annotated with @Inject, the method will not be injected. To fix this, annotate the method with @Inject. 2019-06-21 17:24:16,027+0100 ERROR [FelixStartLevel] *SYSTEM org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl - Failed transition: NEW -> STARTED java.lang.IllegalStateException: Missing recipe: r-proxy at com.google.common.base.Preconditions.checkState(Preconditions.java:585) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.recipe(RepositoryManagerImpl.java:150) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.newRepository(RepositoryManagerImpl.java:168) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.restoreRepositories(RepositoryManagerImpl.java:260) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.doStart(RepositoryManagerImpl.java:242) at org.sonatype.nexus.common.stateguard.StateGuardLifecycleSupport.start(StateGuardLifecycleSupport.java:67) at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39) at org.sonatype.nexus.common.stateguard.StateGuard$TransitionImpl.run(StateGuard.java:193) at org.sonatype.nexus.common.stateguard.TransitionsInterceptor.invoke(TransitionsInterceptor.java:56) at org.sonatype.nexus.extender.NexusLifecycleManager.startComponent(NexusLifecycleManager.java:199) at org.sonatype.nexus.extender.NexusLifecycleManager.to(NexusLifecycleManager.java:111) at org.sonatype.nexus.extender.NexusContextListener.moveToPhase(NexusContextListener.java:304) at org.sonatype.nexus.extender.NexusContextListener.frameworkEvent(NexusContextListener.java:201) at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1429) at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) at java.lang.Thread.run(Thread.java:748) 2019-06-21 17:24:16,027+0100 ERROR [FelixStartLevel] *SYSTEM org.sonatype.nexus.extender.NexusContextListener - Failed to start nexus java.lang.IllegalStateException: Missing recipe: r-proxy at com.google.common.base.Preconditions.checkState(Preconditions.java:585) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.recipe(RepositoryManagerImpl.java:150) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.newRepository(RepositoryManagerImpl.java:168) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.restoreRepositories(RepositoryManagerImpl.java:260) at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.doStart(RepositoryManagerImpl.java:242) at org.sonatype.nexus.common.stateguard.StateGuardLifecycleSupport.start(StateGuardLifecycleSupport.java:67) at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39) at org.sonatype.nexus.common.stateguard.StateGuard$TransitionImpl.run(StateGuard.java:193) at org.sonatype.nexus.common.stateguard.TransitionsInterceptor.invoke(TransitionsInterceptor.java:56) at org.sonatype.nexus.extender.NexusLifecycleManager.startComponent(NexusLifecycleManager.java:199) at org.sonatype.nexus.extender.NexusLifecycleManager.to(NexusLifecycleManager.java:111) at org.sonatype.nexus.extender.NexusContextListener.moveToPhase(NexusContextListener.java:304) at org.sonatype.nexus.extender.NexusContextListener.frameworkEvent(NexusContextListener.java:201) at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1429) at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) at java.lang.Thread.run(Thread.java:748) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - java.lang.IllegalStateException: Missing recipe: r-proxy 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at com.google.common.base.Preconditions.checkState(Preconditions.java:585) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.recipe(RepositoryManagerImpl.java:150) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.newRepository(RepositoryManagerImpl.java:168) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.restoreRepositories(RepositoryManagerImpl.java:260) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.repository.manager.internal.RepositoryManagerImpl.doStart(RepositoryManagerImpl.java:242) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.common.stateguard.StateGuardLifecycleSupport.start(StateGuardLifecycleSupport.java:67) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.common.stateguard.StateGuard$TransitionImpl.run(StateGuard.java:193) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.common.stateguard.TransitionsInterceptor.invoke(TransitionsInterceptor.java:56) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.extender.NexusLifecycleManager.startComponent(NexusLifecycleManager.java:199) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.extender.NexusLifecycleManager.to(NexusLifecycleManager.java:111) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.extender.NexusContextListener.moveToPhase(NexusContextListener.java:304) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.sonatype.nexus.extender.NexusContextListener.frameworkEvent(NexusContextListener.java:201) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1429) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) 2019-06-21 17:24:16,043+0100 ERROR [FelixStartLevel] *SYSTEM java.lang.Throwable - at java.lang.Thread.run(Thread.java:748) 2019-06-21 17:24:16,059+0100 INFO [pool-2-thread-1] *SYSTEM org.sonatype.nexus.extender.NexusBundleTracker - ACTIVATED org.sonatype.nexus.plugins.nexus-repository-r [282]
Reproduce of Problem
Pick a format plugin from the community and follow these instructions:
1. compile it against 3.18.0-01 using -PbuildKar to build the KAR
(if using master you will need to revert https://github.com/sonatype/nexus-internal/commit/a20a3de34ea30a9a696486c13d616833ac70ca68)
unpack NXRM master
2. copy the community KAR over to $install-dir/deploy directory
3. boot NXRM and create a repository with the community format
4. restart NXRM
Workaround
The customer eventually worked around the issue by not using the deploy directory install method, and instead edited the karaf pro features file manually and installed the jar instead. When they did this, the plugin was found, startup succeeded and there was no r-proxy recipe missing error.
Expected
NXRM should successfully restart without exceptions while using a custom format deployed as a KAR file in the deploy directory, and any previously created repositories in that format should be successfully loaded.
- is related to
-
NEXUS-12808 provide a non-invasive way for third-party karaf bundles to be installed and started automatically
-
- Closed
-
- relates
-
NEXUS-14671 Missing repository recipe prevents startup
-
- Closed
-