# The form data below was edited by tom_tyler
# Perforce Workshop Jobs
#
# Job: The job name. 'new' generates a sequenced job number.
#
# Status: Job status; required field. There is no enforced or
# promoted workflow for transition of jobs from one
# status to another, just a set of job status values
# for users to apply as they see fit. Possible values:
#
# open - Issue is available to be worked on.
#
# inprogress - Active development is in progress.
#
# blocked - Issue cannot be implemented for some reason.
#
# fixed - Fixed, optional status to use before closed.
#
# closed - Issue has been dealt with definitively.
#
# punted - Decision made not to address the issue,
# possibly not ever.
#
# suspended - Decision made not to address the issue
# in the immediate future, but noting that it may
# have some merit and may be revisited later.
#
# duplicate - Duplicate of another issue that.
#
# obsolete - The need behind the request has become
# overcome by events.
#
# Project: The project this job is for. Required.
#
# Severity: [A/B/C] (A is highest) Required.
#
# ReportedBy The user who created the job. Can be changed.
#
# ReportedDate: The date the job was created. Automatic.
#
# ModifiedBy: The user who last modified this job. Automatic.
#
# ModifiedDate: The date this job was last modified. Automatic.
#
# OwnedBy: The owner, responsible for doing the job. Optional.
#
# Description: Description of the job. Required.
#
# DevNotes: Developer's comments. Optional. Can be used to
# explain a status, e.g. for blocked, punted,
# obsolete or duplicate jobs. May also provide
# additional information such as the earliest release
# in which a bug is known to exist.
#
# Component: Projects may use this optional field to indicate
# which component of the project a givenjob is associated
# with.
#
# For the SDP, the list of components is defined in:
# //guest/perforce_software/sdp/tools/components.txt
#
# Type: Type of job [Bug/Feature/Problem]. Required.
# Feature and Bug are common terms.
# A Problem is suspected bug, or one without a clear
# understanding of exactly what is broken.
#
# Release: Release in which job is intended to be fixed.
Job: SDP-701
Status: open
Project: perforce-software-sdp
Severity: C
ReportedBy: tom_tyler
ReportedDate: 2021/11/05 09:33:53
ModifiedBy: tom_tyler
ModifiedDate: 2021/11/05 09:33:53
OwnedBy: tom_tyler
Description:
Have upgrade.sh preserve fast rollback until entire upgrade is done.
The key idea: "Don't touch the offline_db during the entire upgrade procedure."
Then only update the offline_db with some a manual process after the
need for rollback is determined not to be necessary.
PREP: Ensure offline_db is current and health on all servers, master
and all replicas/edges. Make use of 'p4 topology'.
SAMPLE PROCEDURE
1. Lockout users (Protections, Brokers, and/or Firewall Rules).
2. Do a journal rotation on the master to give a rollback point,
triggering journal rotation on all replicas.
3. Replay that to the offline_db on master and all replicas.
4. Upgrade all edges/replicas, outer-to-inner, with p4d -xu.
5. Do another journal rotation on master. DO NOT replay to offline_db.
6. Upgrade master with p4d -xu.
7. Do 'p4 upgrades' on master, wait until it is done.
8. Do 'p4 upgrades' on all replicas, wait until it is done.
9. Do one more journal rotation on master, so we have a journal with
just upgrades.
10. Open access for sanity testing (e.g. swarm Swarm and a few "test pilot" human users.
11. Determine rollback is not needed.
12. Update the offline_db for the first time since Step 4 above.
13. Open flood gates to all users when sanity testing is done.
EXPECTATIONS MANAGMENT:
In any case, rollback after the users start using the system is not
supported. The above gives a clean and fast rollback up until the
point where users are allowed back in. If a problem is detected after,
a rollback would involve data loss of any changes made since the start
of the procedure. The only option then is to fix and roll forward.
Component: core-unix
Type: Feature