Recover from a Failed Release

LinuxBeginner
Practice Now

Introduction

Common Ground has another website candidate to evaluate. Its publishing command can succeed even if a visitor cannot complete an important action. Your job is to recognize that distinction and restore the known-good release when necessary.

This disposable training website has no real visitors. You will deliberately practice recovery; in a real delivery process, pre-release checks can reject a candidate before visitors receive it.

This is a fresh environment: event-v1 is running in Room A, regardless of what you did in the previous lab. You will stage event-v3, test the real user paths, and recover the original service without editing the supplied website files. The same Workstation, Website, and Topology tabs are ready.

Prepare the Recovery Target

In this step, you will identify the healthy version and install the candidate separately before changing the website. Begin in Website.

Know What Recovery Should Restore

On the homepage, Linux Evening is in Room A and the footer identifies event-v1. Click its session row, confirm that the details open, then open Registration instructions. These are the normal functions a recovery must restore. Click COMMON GROUND to return home in Website.

Switch to Workstation. The terminal is already in /home/labex/project/website-release. Inspect the current symbolic link:

readlink current

It prints releases/event-v1. Confirm the preserved version file:

cat releases/event-v1/version.txt

It prints event-v1. Here, that directory is your explicit recovery target. "Previous" is not automatically the right choice in every system; this lab has established that this version serves the required pages correctly.

Stage the Candidate

List the supplied packages:

bash release.sh list

This environment contains event-v1 and event-v3. The candidate changes the location to Community Hall. A new name or a successful installation does not establish its quality.

Install it without selecting it:

bash release.sh install event-v3

The message confirms that the current website was not changed. List the installed releases:

ls releases

Both event-v1 and event-v3 should be present. Keep both unchanged: the candidate is the version under evaluation, and the baseline is the version you can recover.

Recognize a Failed Release

In this step, you will publish the candidate and distinguish a successful selection from working user functionality. Begin in Workstation.

Observe the Successful Selection

Select the candidate:

bash release.sh deploy event-v3

The helper reports event-v3 and asks you to check the pages. The command has completed its selection; it has not evaluated the business.

Check the homepage status using the curl options from the first lab:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/

It returns 200. The version endpoint also works:

curl -sS http://127.0.0.1:8081/version.txt

It prints event-v3. Neither observation tells you that the session link works.

Find the User-Visible Failure

Switch to Website. Return home using COMMON GROUND, then reload the page. The homepage looks complete and shows Community Hall. Click Linux Evening.

Instead of session details, you see Let's get you back on track. and 404 / A SMALL DETOUR. This is the website's missing-page design. Its appearance is polished, but its HTTP result is still a failure for the requested session.

A real missing session in the candidate

The candidate's session link points to /events/container-evening.html. Switch back to Workstation and request that exact path:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/container-evening.html

The expected result is 404. This is intentional evidence, not a command you should repair or skip. Without curl's fail-on-HTTP-error option, receiving a 404 still lets curl complete normally: a server response is different from a failed connection.

Switch to Topology. It can still show Homepage reachable because its narrow health check succeeds. The required session path does not. Your acceptance decision is to reject this release and restore the known-good version, not to stop the website or rewrite the candidate.

Restore and Validate the Known-Good Version

In this step, you will recover the original website and confirm that visitors can use it again. Start in Workstation.

Select the Preserved Release

rollback selects a version that is already installed. It does not repair or rebuild the failed candidate. Restore your established recovery target:

bash release.sh rollback event-v1

Expected output:

Selected event-v1. The server reports:
event-v1
Selection finished. Check the required pages before accepting this release.

Inspect the symbolic link:

readlink current

It selects releases/event-v1. The event-v3 directory is still saved; leaving it available for later investigation does not mean it is still serving visitors.

Check the Restored User Journey

Switch to Website. The browser may still be at the candidate's missing URL. Click COMMON GROUND to return home, then reload the page. The site should show Room A and event-v1. Click Linux Evening again: its restored link now opens /events/linux-evening.html. In that page, open Registration instructions and confirm that the joining steps are available.

The recovered session details

Retrying the old candidate-only URL would still give 404; recovery restores the good site's actual links rather than creating every missing URL.

Switch back to Workstation and check the restored paths:

curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/events/linux-evening.html
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/registration.html

All three return 200. The browser checks established that the content is also correct.

Keep both installed versions:

ls releases

You should still find event-v1 and event-v3. The service is recovered; the candidate defect remains for a later development task. This exercise restores static website files only. It does not claim to undo database changes, user submissions, or an entire browser session atomically.

Summary

You saw a real release command succeed while a user path failed, rejected the candidate, and restored the complete known-good website. You verified recovery through both actual page content and HTTP responses. The candidate remains available for investigation; recovery did not silently fix it.