Chapter 27Lesson 04220–300 min

Upgrade Planning, Version Support, Breaking Changes, Java Runtime Upgrades, and Rollback Strategy: Diagnostics, Failure Modes, Security, and Performance

Upgrade failures often look like generic startup or client problems, but the cause is usually one violated gate: runtime, disk, database, plugin, object-store compatibility, custom TLS, post-upgrade task, or changed protocol behavior. Diagnose from preserved evidence and correct the smallest supported state.

DiagnosticsKnown issuesDiskTLSRollback safety

Learning objectives

  • Diagnose startup and client failures in a deterministic sequence.
  • Distinguish unsupported Java, plugin, database, disk, truststore, and object-store symptoms.
  • Use release notes and known issues as diagnostic evidence, not only planning documents.
  • Handle changed HTTP/client behavior without bypassing security controls.
  • Choose restore-based rollback instead of blind downgrade.
Dated baseline (27 August 2026). Lessons use Nexus Repository 3.95.2-01 as the current reference line and Java 21 as the required runtime family. Always re-check the live version-status and release-note pages before a real change window.
Upgrade is not migration. Replacing Nexus application binaries, migrating a database engine, moving blob storage, and redesigning topology are different changes. Chapter 27 upgrades a supported instance; do not combine unrelated migrations unless the documented path requires them.
No blind downgrade. If a new Nexus version has changed database/data state, do not start older binaries against the upgraded data directory. Rollback means restoring a verified pre-upgrade recovery checkpoint or following an explicit Sonatype-supported procedure.

1. Diagnostic sequence

  1. Preserve startup logs, task history, version/build, Java, database and blob evidence.
  2. Confirm the source→target path and every crossed threshold.
  3. Check disk headroom, file handles, ownership, memory and temp directories.
  4. Check Java selection and custom trust anchors.
  5. Check database connectivity/schema migration state.
  6. Check plugins/extensions and custom application-directory files.
  7. Check blob backend and object-store errors.
  8. Check required rebuild/migration tasks.
  9. Run representative repository/client tests.
  10. Correct the smallest supported cause or restore the checkpoint.

2. Failure: unsupported or wrong Java

Symptom: Nexus does not start, or external-JVM startup shows class/runtime errors.

Correction: confirm the actual JVM selected by the launcher and use Java 21/current compatibility guidance. Prefer the bundled runtime unless you intentionally manage an external JVM.

3. Failure: TLS integrations break after upgrade

Symptom: Nexus starts, but proxy repositories, LDAP, SAML metadata, or other HTTPS integrations fail certificate validation.

Cause: custom trust anchors existed only in the previous Java truststore and were not provisioned for the new bundled runtime.

Correction: restore the intended trust chain through the supported runtime/certificate mechanism. Do not disable TLS verification globally.

4. Failure: insufficient disk/temp space

Symptom: startup migration or rebuild fails, disk fills, or tasks repeatedly abort.

Correction: stop additional mutation, preserve logs, restore headroom, and follow version-specific recovery/retry guidance. Never delete blob files or database rows directly to make space.

5. Failure: community plugin breaks startup

Symptom: bundle/plugin resolution errors appear after the Nexus binary upgrade.

Correction: isolate/remove the unsupported plugin according to its own compatibility guidance and re-run from the preserved checkpoint if needed. Do not patch Nexus internals to keep an abandoned extension alive.

6. Failure: database migration does not complete

Distinguish database connectivity from schema migration. A reachable PostgreSQL server can still fail ownership, extension, permissions, capacity, or migration constraints. Preserve the exact migration error and do not point an older Nexus binary at partially upgraded schema state.

7. Failure: object-store behavior changes

Look for request-signing, multipart, checksum, retry, endpoint-style, or SDK compatibility errors. Compare the blob backend against the target release notes and the storage vendor’s compatibility matrix. A generic “S3 compatible” claim is not enough.

8. Failure: upgrade succeeds but clients change

Example: a write-once Ansible Galaxy duplicate publication can return a different HTTP status in a newer release. The correct fix may be updating client expectations, not changing Nexus security or write policy. Capture the exact HTTP exchange and compare it with release-specific guidance.

9. Failure: search appears incomplete

If the path crosses a version threshold requiring a search rebuild—or the target release notes call out incremental-indexing visibility—run the documented rebuild and observe task completion. Search/browse state is derived state; do not “repair” it by editing database tables.

10. Failure: operator tries a blind downgrade

Stop. Starting older Nexus binaries on a data directory already changed by a newer release can corrupt or render the instance unsupported. Use the pre-upgrade recovery set and the exact source version/runtime, or follow a documented Sonatype rollback procedure.

11. Intentionally broken evidence classifier

symptoms={
 'startup':'PASS','proxyTls':'FAIL','database':'PASS','disk':'PASS',
 'pluginErrors':False,'crossedBundledJavaGate':True,'customCAWasInOldJVM':True
}
if symptoms['proxyTls']=='FAIL' and symptoms['crossedBundledJavaGate'] and symptoms['customCAWasInOldJVM']:
 print('PRIMARY HYPOTHESIS: trust anchor not provisioned to new runtime')
 print('SAFE ACTION: restore CA trust; keep TLS verification enabled')

Knowledge check

Why is a successful login page insufficient after upgrade?

What is the safe response to a post-upgrade TLS failure?

Why not delete blob files when disk fills during an upgrade?

What should you do when client HTTP behavior changes after upgrade?

What is the correct rollback after persistent state was migrated?

Summary and next step

Upgrade diagnosis follows the evidence chain from version/runtime to database/blob/task/client behavior and favors the least destructive supported correction.

Lesson 5 integrates the chapter into a complete upgrade-and-rollback drill.

Official references and version notes

Keep the academy open

Support free, practical DevOps education.

Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.

Ethereum / ERC-20
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0 Send only Ethereum/ERC-20 compatible assets to this address.