Problem with Internal Nexus 3 proxy to another internal Nexus 3 restored from external Nexus 3 backup


#1

I am working on a network with no internet access and want to bring in repository artifacts acquired from another instance of Nexus that has internet access.

My old method when using Nexus 2 was to copy the filestore from the external Nexus 2 instance and overlay (merge) it onto the internal Nexus 2 instance, and then tell it to update its indexes, which allowed me to perform Maven builds that require both existing internal and new external artifacts.

With Nexus 3, I intended to use the backup/restore functionality by backing up the external Nexus 3 instance and then using these backup files to restore to the internal Nexus 3 “update” instance. I set up a second Nexus 3 instance as a proxy of the “update” instance for “maven-central”, which provides the existing internal and new external artifacts to Maven build clients. I expect to be able to repeat this process where the internal Nexus 3 instance accumulates artifacts and the internal Nexus 3 “update” instance contains only transient artifacts from the latest restore process.

Internet -> Ext Nexus 3 -> file backup/restore -> Int Nexus 3 Upd -> Int Nexus 3 -> Maven clients

However, the process fails when the internal Nexus 3 “update” instance cannot locate the file when the internal Nexus 3 instance requests it during a Maven build, even though I can find it in the repository, and then fails to download it from the internet, of course. I tried it with and without manually blocking outbound requests.

These are the WARN log messages from nexus.log of the “update” instance:
*UNKNOWN org.sonatype.nexus.blobstore.file.FileBlobStore - Attempt to access non-existent blob 82643a87-...(...-a2456aed48d3.properties)
repeated 8 more times (for a total of 9)
*UNKNOWN org.sonatype.nexus.repository.storage.StorageTxImpl - Reached max retries: 8/8
*UNKNOWN org.sonatype.nexus.repository.maven.internal.proxy.MavenProxyFacet - Unable to find blob default@524EC131-... for org/springframework/...RELEASE.pom, will check remote
*UNKNOWN org.sonatype.nexus.repository.maven.internal.proxy.MavenProxyFacet - Exception org.sonatype.nexus.repository.httpclient.RemoteBlockedIOException: Remote Manually Blocked checking remote for update, proxy repo maven-central failed to fetch org/springframework/...RELEASE.pom, content not in cache.

I first had tried this with Nexus 3.11, and it continued to fail after upgrading to 3.13. I have rebuilt the indexes and cleared the caches of both internal Nexus 3 instances.

Is there something that will repair the internal references of the blob store, is there a software fix coming, or is there something else I’m missing?


#2

Hi,
When you say “file backup/restore” did you also copy over the blobstore?
That is not done automatically by the backup task and is needed for restoration.
Similarly, if you restored on the same server/system you’d need to restore the blobstore.
-Joe


#3

Yes, I followed these instructions: Restore Exported Databases
I am able to browse and search the storage, but, for whatever reason, I am unable to get the other instance to pull.


#4

Cool, sorry to doubt.
There is a “Repair - Reconcile component database from blob store” task you could try.
I am not sure it’ll help since I’m not sure what went wrong. Your procedure sounds fine to me.

If you can afford it, you may also try just doing the restore and trying the build rather than messing with it at all. With the straight copy over, builds that worked on the first instance should work on the second. If they don’t, I’d point to something went wrong with the restore.

Hope that helps!
-Joe