Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport #11725 #11249 #11799 to branch/v9 #11795

Merged
merged 6 commits into from
Apr 8, 2022

Conversation

Vitor Enes added 2 commits April 7, 2022 13:52
* Throw startup error if `TeleportReadyEvent` is not emitted

Before this commit, the `TeleportReadyEvent` was only waited for when a
process reload occurred. Thus, if a bug exists in the code that emits
this event (as it's currently the case since the `MetricsReady` and
`WindowsDesktopReady` events are never emitted), such a bug may go
unnoticed for a while.

This commit ensures that the `TeleportReadyEvent` is always waited for
on startup, and throws an error if the event is not emitted (after some
timeout).

This commit also:
- removes the `MetricsReady` event (as this is not produced by a
  component that sends heartbeats, which is the case of every other
  event required by the `TeleportReadyEvent` event mapping)
- ensures that `WindowsDesktopReady` event is emitted
- refactors some of the code in `lib/service/supervisor.go`
- moves the event mapping registration to a new `registerTeleportReadyEvent` function
…#11249)

Fixes #11065.

This commit:
- ensures  that `TeleportReadyEvent` is only produced when all components that send heartbeats (i.e. call [`process.onHeartbeat`](https://github.com/gravitational/teleport/blob/16bf416556f337b045b66dc9c3f5a3e16f8cc988/lib/service/service.go#L358-L366)) are ready
- changes `TeleportProcess.registerTeleportReadyEvent` so that it returns a count of these components (let's call it `componentCount`)
- uses `componentCount` to also ensure that `stateOK` is only reported when all the components have sent their heartbeat, thus fixing #11065

Since it seems difficult to know when `TeleportProcess.registerTeleportReadyEvent` should be updated, with the goal of quickly detecting a bug when it's introduced we have that:
1. if `componentCount` is lower than it should, then the service fails to start (due to #11725)
2. if `componentCount` is higher than it should, then an error is logged in function `processState.getStateLocked`.
@vitorenesduarte vitorenesduarte enabled auto-merge (squash) April 7, 2022 14:08
@vitorenesduarte vitorenesduarte disabled auto-merge April 7, 2022 14:43
@vitorenesduarte vitorenesduarte self-assigned this Apr 7, 2022
* Make `PortList.Pop()` thread-safe

* Store a `[]int` instead of `[]string` in `PortList`
@vitorenesduarte vitorenesduarte changed the title Backport #11725 #11249 to branch/v9 Backport #11725 #11249 #11799 to branch/v9 Apr 7, 2022
@vitorenesduarte vitorenesduarte enabled auto-merge (squash) April 7, 2022 16:55
@vitorenesduarte vitorenesduarte disabled auto-merge April 8, 2022 08:12
@vitorenesduarte vitorenesduarte merged commit ea8ee94 into branch/v9 Apr 8, 2022
@vitorenesduarte vitorenesduarte deleted the vitor/state-ok-v9 branch April 8, 2022 08:29
@webvictim webvictim mentioned this pull request Apr 19, 2022
r0mant added a commit that referenced this pull request Apr 26, 2022
r0mant added a commit that referenced this pull request Apr 26, 2022
* Revert "Backport #11725 #11249 #11799 to branch/v9 (#11795)"

This reverts commit ea8ee94.

* Revert "Fix ProxyKube not reporting its readiness (#12152)"

This reverts commit ce301f0.
@webvictim webvictim mentioned this pull request Jun 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants