# 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