Visit my.sonatype.com for documentation on Nexus Repository version 2.
This article primarily applies to Nexus Repository 2. Nexus Repository 3 has similar features but they are not documented here.
When a user views the Repositories list in the Nexus Repository 2 UI, they can see a Status column for each repository.
General Repository Status Message Meanings
The status messages meanings are defined as below.
In Service - the default repository service state. To transition to this state while a repository is Out of Service, right-click the repository and choose Put in service.
Out of Service - a user explicitly asked Nexus Repository 2 to put this repository out of service. Do this by right-clicking the repository and choosing Put out of service. This means this proxy repository
a) WILL NOT allow any outbound HTTP requests to the remote URL for this repository and
b) WILL NOT serve from its local cache of files in storage any content it already cached from the remote during times when it was not blocked or out of service.
Blocked - This term applies to proxy repositories only. A blocked repository
a) WILL NOT allow any outbound HTTP requests to the remote URL for this repository
b) WILL serve content it had already cached locally in its storage prior to being blocked or put out of service
Remote Manually Blocked - A user selected the proxy repository in the list, right clicked on the line item and chose the Block Proxy menu option.
Available - The last automatic status check performed by Nexus Repository 2 reported that this remote repository was available and reachable.
Unavailable - The last automatic status check performed by Nexus Repository 2 reported that this remote repository was not available and not reachable.
In Service or Out of Service status changes are always explicitly done by a user and can apply to any repository type.
A proxy repository being Blocked or Unblocked can either be done automatically by Nexus Repository 2 or manually by a user.
Automatic Blocking Techniques
Automatic Blocking is a feature that can be enabled/disabled per proxy repository Configuration tab. We recommend this feature be enabled in the vast majority of cases - this is the default. This setting protects your Nexus Repository 2 from misbehaving remote servers. Disable this option only in the rare case where it doesn't work reliably. Please confirm such a case with Sonatype Support.
Automatic Blocking is implemented using 3 different techniques:
- Per proxy repository, a background status thread will perform a type of ping to the defined remote url, to see if it is alive. If the response is unexpected, Nexus Repository 2 will autoblock this repository. Every few seconds, gradually increasing the time interval up to 1hr, Nexus will keep rechecking the remote health and automatically unblock the repo if its starts responding normally.
- When a Nexus Repository 2 user views the Repositories list in the UI and they have the nexus:repostatus:update privilege, the web browser will send an asynchronous JSON request to /service/local/repository_statuses endpoint. This action will trigger remote status checks for every proxy repository. As the statuses are determined, the Status column will be dynamically updated with the result.
- If during normal course of requesting artifacts through a proxy repository, the remote triggers some sort of IO exception or unexpected http status code ( 50x, 400), then nexus will automatically block this repository. It will then rely on the status checks in item 1 or 2 to restore the state again when the remote is detected as healthy
Manual Blocking is always a choice by a user and overrides all automatic blocking features.
Automatic Blocking Status Check Methods
When checking the remote health of a remote repository, Nexus Repository 2 may perform up to 3 different checks:
- HEAD to the Proxy Repository Remote URL
- GET to the Proxy Repository Remote URL
- GET for a special Nexus Repository 2 specific file at <remote-url>/.meta/repository-metadata.xml