Overview
This article explains important compatibility considerations when upgrading Nexus Repository to version 3.87+ with non‑AWS S3‑compatible blob stores (for example Dell ECS, Pure Storage FlashBlade, NetApp S3, or other on‑prem S3 solutions), and outlines steps you can take to assess and address potential issues before upgrading.
Starting in Nexus Repository 3.87.x, the product upgrades the AWS S3 Java SDK version from 1.12.x to 2.33.5. This change can expose incompatibilities in some S3‑compatible implementations. For example, Dell ECS according to https://www.dell.com/support/kbdoc/en-uk/000299507/awscli-fails-with-missing-content-md5 does not support SDK version 2.23.0 or higher.
As stated in the system requirements, only fully compatible S3 implementations that support the required AWS SDK version are supported. On‑prem S3 solutions must be carefully validated before production use.
Prerequisites
Before upgrading:
- Identify your S3 implementation (e.g., Dell ECS, FlashBlade, NetApp S3, Ceph).
- Review the Nexus Repository system requirements for S3 and S3‑compatible storage.
- Have a tested backup and rollback plan: Database backup and Blob store backup.
- Have a non‑production environment where you can test 3.87+ with your S3 storage.
Upgrade Steps
1. Check compatibility with your S3 vendor
Before touching production:
- Contact your S3 vendor and ask them to confirm they support AWS Java SDK version 2.33.5
- If the vendor suggests Java system properties (for example to adjust checksum calculation/validation), validate those in a test environment first.
If your vendor cannot confirm compatibility, do not upgrade production until they provide a supported version or configuration.
2. Test Nexus 3.87+ in a non‑production environment
If your S3 vendor confirms SDK compatibility:
- Deploy Nexus Repository 3.87+ in a test environment.
- Configure it to use the same type of S3 blob stores and repository formats as production.
- Exercise typical workloads e.g. Maven: resolve and deploy artifacts. Docker: pull and push images (including multi‑layer images).
- Watch logs for: Repeated 400/403/501 S3 errors, as well as messages about missing or unsupported headers or checksums.
3. Upgrade production (or defer)
- If tests pass and the vendor confirms compatibility: Upgrade production following the standard Nexus Repository upgrade guide. Also keep your rollback plan ready.
- If tests fail or compatibility is unclear: Defer the upgrade to 3.87+ until your S3 vendor is able to provide a compatible storage version.
Verification
After upgrading:
- All S3 blob stores should be in
STARTEDstate. - Logs should not show recurring S3 protocol, checksum, or header errors.
If you see new S3‑related errors after upgrading, involve your storage vendor immediately and consider rolling back to your previous Nexus version using your tested backup and restore procedure.