Skip to content

6.10.2.19 ReleaseInstallation

6.10.2.19.1 Purpose

One installed copy of one of our applications, on a given platform and channel. It records the build it runs and when it last contacted us to check for updates, which is what updates, rollouts and rollbacks work from. It also records who enrolled it (an Organization and user, a staff member, or a tester) and the hash of its token, so the channel's access rule can be checked again at every update with live memberships. For the farm sync client, the farm and its data synchronisation are kept separately in SyncClient.

6.10.2.19.2 Questions it answers

  • Which build is an installation running, and on which channel?
  • When did it last contact us to check for updates?
  • Who enrolled it, and does that identity still pass the channel's rule?

6.10.2.19.3 Fields

Field Type Cardinality Description
id string (uuid) 1..1 Key.
Random, generated by the client; never derived from the hardware.
application ReleaseApplication 1..1
channel ReleaseChannel 1..1
platform ReleasePlatform 1..1
current_build ReleaseBuild 1..1
rollout_bucket integer 1..1 Hash(id) % 100: with rollout_pct = 20 the buckets 0..19 update, always the same ones.
last_seen_at datetime 1..1 Last time the client contacted us, to check for updates. Not a data synchronisation.
organization Organization 0..1 The Organization active at enrolment; set for the organization audience.
user User 0..1 Who enrolled it; set for the organization audience.
moonitoring_user MoonitoringUser 0..1 Who enrolled it; set for the moonitoring audience.
tester ReleaseTester 0..1 Set when the enrolment passed as a tester rather than through the audience rule.
credential_hash string 1..1 Hash of the installation token the client presents on every update check: random, issued at enrolment, bound to this id, rotated when the enrolling identity changes. The token itself is never stored.
started_at datetime 0..1 When the installed client first confirmed that it started, reported as a successful ReleaseUpdateEvent. Empty while it never started, for instance after an install that failed.
retired_at datetime 0..1 When releases retired the installation; a retired installation gets no update and its token is refused like an unknown one. Rows are kept.
created_at datetime 1..1
updated_at datetime 1..1

6.10.2.19.4 Relationships

References

Referenced by

6.10.2.19.5 Rules & constraints

  • An installed client.
  • An installation of any of our applications. The farm sync client is one of them; its farm, feeds and schedules are in SyncClient.
  • At every update check the channel's rule (ReleaseChannel) is evaluated again for the identity recorded here, with live memberships: an installation that no longer passes receives no manifest and keeps what it has.
  • For the public audience ReleaseInstallation.organization to ReleaseInstallation.tester are empty.
  • An installation that never confirms a start is retired by the releases sweeper 30 days after it enrolled: an install that failed leaves an enrolled installation nobody can delete, and a new install enrols a new one.

Open questions

Evaluate under GDPR.