TODO: Describe software, installation and upgrade at a high level
During an upgrade procedure we have several goals to accomplish.
High Level goals:
Details of Goals
Do not have different versions of products running on CNs communicating with one another
- Restrict incompatible data structures (schema changes) from being accessed in an environment
- Note that we try not to remove existing data structures now i) DataONE may add new data structures ii) DataONE may modify existing ones iii) We must support previous revisions of DataONE data structures
- Restrict access to incompatible software stacks (e.g. HZ 1.x –> 2.x)
- password changes in service deployments, etc. (broken comms) ?
Always have a single CN up and running (No down time)
Do not allow a situation in which a user experiences data retrieval inconsistency
The institution of a Cn Rest Service read only + reserveIdentifier operation may cause violate goal 3. If LDAP needs upgrading in a manner that causes incompatibility between different version of the CN, then the CNs will need to be isolated from one another until all upgrades are complete. Thus a production CN that is exposed to the DataONE community while other CNs are upgraded may receive reservations that, when the the upgraded CNs go live and take the place of the previous production CN, will have reservations the newly upgraded CNs will not have. It seems impractical to state that LDAP will always be backwards compatible and able to maintain replication during upgrades to ensure all CNs have all written data at the time of a switchover. We may wish to consider that we keep a journalling system of posted reservations (independent of LDAP) on a pubic facing CN during upgrades that will create a replayable log of reserveIdentifier actions in order to ensure consistency of user access experience