Unable to update to NXRM 3.38

I tried updating shortly after 3.38 came out, but it didn’t work. Due to time constraints, I still hadn’t gotten around to it.

As always, I download the newest package to our testing environment, unpack it and setup things like the JDK and some parameters. After that I tried to start Nexus, only to be greeted in the log by huge stacktraces:

2022-03-25 18:42:21,466+0100 WARN  [FelixStartLevel]  *SYSTEM org.ops4j.pax.url.mvn.internal.AetherBasedResolver - Error resolving artifact org.sonatype.nexus.assemblies:nexus-startup-feature:xml:features:3.38.0-01: [Could not transfer artifact org.sonatype.nexus.assemblies:nexus-startup-feature:xml:features:3.38.0-01 from/to central (https://repo1.maven.org/maven2/): transfer failed for https://repo1.maven.org/maven2/org/sonatype/nexus/assemblies/nexus-startup-feature/3.38.0-01/nexus-startup-feature-3.38.0-01-features.xml]
java.io.IOException: Error resolving artifact org.sonatype.nexus.assemblies:nexus-startup-feature:xml:features:3.38.0-01: [Could not transfer artifact org.sonatype.nexus.assemblies:nexus-startup-feature:xml:features:3.38.0-01 from/to central (https://repo1.maven.org/maven2/): transfer failed for https://repo1.maven.org/maven2/org/sonatype/nexus/assemblies/nexus-startup-feature/3.38.0-01/nexus-startup-feature-3.38.0-01-features.xml]
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.configureIOException(AetherBasedResolver.java:803)
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:774)
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:657)
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:598)
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:565)
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:555)
	at org.ops4j.pax.url.mvn.internal.Connection.getInputStream(Connection.java:123)
	at java.net.URL.openStream(URL.java:1045)
	at org.apache.karaf.features.internal.service.RepositoryImpl.load(RepositoryImpl.java:114)
	at org.apache.karaf.features.internal.service.RepositoryImpl.<init>(RepositoryImpl.java:51)
	at org.apache.karaf.features.internal.service.RepositoryCacheImpl.create(RepositoryCacheImpl.java:51)
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.addRepository(FeaturesServiceImpl.java:386)
	at org.apache.karaf.features.internal.service.FeaturesServiceImpl.addRepository(FeaturesServiceImpl.java:381)
	at org.apache.karaf.features.internal.service.BootFeaturesInstaller.addRepositories(BootFeaturesInstaller.java:118)
	at org.apache.karaf.features.internal.service.BootFeaturesInstaller.installBootFeatures(BootFeaturesInstaller.java:87)
	at org.apache.karaf.features.internal.service.BootFeaturesInstaller.start(BootFeaturesInstaller.java:81)
	at org.apache.karaf.features.internal.osgi.Activator.doStart(Activator.java:214)
	at org.apache.karaf.util.tracker.BaseActivator.start(BaseActivator.java:92)
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:698)
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2402)
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2308)
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1539)
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
	at java.lang.Thread.run(Thread.java:748)
	Suppressed: shaded.org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.sonatype.nexus.assemblies:nexus-startup-feature:xml:features:3.38.0-01 from/to central (https://repo1.maven.org/maven2/): transfer failed for https://repo1.maven.org/maven2/org/sonatype/nexus/assemblies/nexus-startup-feature/3.38.0-01/nexus-startup-feature-3.38.0-01-features.xml
		at shaded.org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed(ArtifactTransportListener.java:52)
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:368)
		at shaded.org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:75)
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute(BasicRepositoryConnector.java:642)
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector.get(BasicRepositoryConnector.java:262)
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads(DefaultArtifactResolver.java:489)
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:390)
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215)
		at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192)
		at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247)
		at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767)
		... 22 common frames omitted
	Caused by: shaded.org.apache.maven.wagon.TransferFailedException: transfer failed for https://repo1.maven.org/maven2/org/sonatype/nexus/assemblies/nexus-startup-feature/3.38.0-01/nexus-startup-feature-3.38.0-01-features.xml
		at shaded.org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1250)
		at shaded.org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1140)
		at shaded.org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:126)
		at shaded.org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
		at shaded.org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
		at shaded.org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run(WagonTransporter.java:567)
		at shaded.org.eclipse.aether.transport.wagon.WagonTransporter.execute(WagonTransporter.java:435)
		at shaded.org.eclipse.aether.transport.wagon.WagonTransporter.get(WagonTransporter.java:412)
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$GetTaskRunner.runTask(BasicRepositoryConnector.java:456)
		at shaded.org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run(BasicRepositoryConnector.java:363)
		... 31 common frames omitted
	Caused by: shaded.org.apache.http.conn.ConnectTimeoutException: Connect to repo1.maven.org:443 [repo1.maven.org/199.232.16.209] failed: connect timed out
		at shaded.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
		at shaded.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
		at shaded.org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
		at shaded.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
		at shaded.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
		at shaded.org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
		at shaded.org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
		at shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
		at shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
		at org.ops4j.pax.url.mvn.internal.wagon.ConfigurableHttpWagon.execute(ConfigurableHttpWagon.java:162)
		at shaded.org.apache.maven.wagon.shared.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:1162)
		... 40 common frames omitted
	Caused by: java.net.SocketTimeoutException: connect timed out
		at java.net.PlainSocketImpl.socketConnect(Native Method)
		at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
		at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
		at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
		at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
		at java.net.Socket.connect(Socket.java:589)
		at shaded.org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)
		at shaded.org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
		... 50 common frames omitted
Caused by: shaded.org.eclipse.aether.resolution.ArtifactResolutionException: Error resolving artifact org.sonatype.nexus.assemblies:nexus-startup-feature:xml:features:3.38.0-01
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:413)
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:215)
	at shaded.org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:192)
	at shaded.org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveArtifact(DefaultRepositorySystem.java:247)
	at org.ops4j.pax.url.mvn.internal.AetherBasedResolver.resolve(AetherBasedResolver.java:767)
	... 22 common frames omitted

Seems like the latest version is trying to download all kinds of stuff from the internet… Since we are behind a proxy, this will not work without additional configuration!

Why didn’t I find anything about this in the release notes?? Imho this is a big change that needs to be mentioned and have documentation on how to properly configure NXRM to run again!
Please let me know how to fix this so I can update our systems.

I have no idea why it’s trying to remotely download the bundles - I believe our OSGI container can try to pull them from the internet if they aren’t available but they shouldn’t be missing in the deployment to begin with. How did you fetch and try to run the release?

I download the new version with wget:

https_proxy=<my_proxy> wget https://download.sonatype.com/nexus/3/latest-unix.tar.gz

Then I unpack it, change the JDK and memory settings and then run:

./nexus-3.38.0-01/bin/nexus start

Same as always…

Not sure why it’s causing you problems. I pulled the same version down locally and it started for me with my network disabled. It’s possible that it could be pulling from my local maven repository I suppose, but I’d think it would have logged doing that.

Still don’t know what the problem was, but NXRM 3.38.1 didn’t have it, so I’ll skip 3.38.0…

1 Like

i have the same problem, but when doing ssl config

I just had the same issue (unable to start NXRM with the same exception), with 3.39.0 today
But in my case, it’s not related to an upgrade (I upgraded last week)
Any idea ?

Well, I found out that a configuration file was modified during NXRM startup
../etc/karaf/org.ops4j.pax.url.mvn.cfg

As a workaround, I restored this file from the installation tar.gz, and declared this file “read-only”… and Nexus started correctly
Weird !!!

Do you happen to have a record of what was changed in that file?

No sorry I deleted the files… but it was something like the first half that was suppressed

I’ve created this JIRA issue https://issues.sonatype.org/browse/NEXUS-33524 to report the problem…

1 Like

Was something solved the issue? I’m experiencing the same problem without solution, and its blocking us.

For the previous user they extracted the files from the release archive again as for some reason they were modified at runtime. If that is the issue, you may want to ensure the nexus system account does not have write permission to the nexus-3.xxx directory (it needs it for the sonatype-work directory).