Repository: knative-sandbox/eventing-kafka-broker
Pull request #1964 (2022-03-04 20:02:19)

[data-plane]: Bump awaitility from 4.1.1 to 4.2.0 in /data-plane
Bumps [awaitility](https://github.com/awaitility/awaitility) from 4.1.1 to 4.2.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/awaitility/awaitility/blob/master/changelog.txt">awaitility's changelog</a>.</em></p>
<blockquote>
<h2>Changelog 4.2.0 (2022-03-04)</h2>
<ul>
<li>
<p>Fixed a bug in the shutdown behavior of a polling thread. The wrong time unit was used causing executor shutdown to take way more time than expected in cases where it's stuck. Thanks to Claus Näveke for spotting this and for the initial PR.</p>
</li>
<li>
<p>Fixed a bug in which condition was not evaluated correctly with small intervals, such as:
await().atMost(Duration.ofMillis(10)).pollInterval(Duration.ofMillis(5)).until(..);
(issue 224). Thanks to Robby Decosemaeker for PR.</p>
</li>
<li>
<p>Upgraded the awaitility-kotlin module to use kotlin 1.6.10</p>
</li>
<li>
<p>Fail fast conditions can now be specified with assertions. For example:</p>
<p>await().failFast(() -&gt; assertThat(state).isNotEqualTo(&quot;Failed&quot;)).until(..);</p>
<p>(issue 238)</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/awaitility/awaitility/commit/b5d82b703caa88b2ddc2ae0d06020c286d023a79"><code>b5d82b7</code></a> [maven-release-plugin] prepare release awaitility-4.2.0</li>
<li><a href="https://github.com/awaitility/awaitility/commit/1ae03495d5a76298ae03f64b1209bc63f049d6b6"><code>1ae0349</code></a> Preparing changelog for release</li>
<li><a href="https://github.com/awaitility/awaitility/commit/386eccb7369b6bdb0e434980a0c39ec7c70405a9"><code>386eccb</code></a> Improve error message in test</li>
<li><a href="https://github.com/awaitility/awaitility/commit/fc45eb743e7f3a2aec2d57f6d3efd11165c9de44"><code>fc45eb7</code></a> Fail fast conditions can now be specified with assertions</li>
<li><a href="https://github.com/awaitility/awaitility/commit/d39c00d76af752cfede573453aa904c761c5f6f6"><code>d39c00d</code></a> Upgrading Kotlin to 1.6.10</li>
<li><a href="https://github.com/awaitility/awaitility/commit/f359e945794f1c2fc99c6a2cb1b7ac8638394cb8"><code>f359e94</code></a> Formatted ConditionAwaiter</li>
<li><a href="https://github.com/awaitility/awaitility/commit/9c9a79bbb8c4a9c1cf5b8822a310e3b9161d07a4"><code>9c9a79b</code></a> Updated changelog to reflect the latest changes</li>
<li><a href="https://github.com/awaitility/awaitility/commit/9e40d37614fae55588b7d512a447f76804f3e312"><code>9e40d37</code></a> Fix <a href="https://github-redirect.dependabot.com/awaitility/awaitility/issues/224">#224</a> - handle immidiate success scenario (<a href="https://github-redirect.dependabot.com/awaitility/awaitility/issues/228">#228</a>)</li>
<li><a href="https://github.com/awaitility/awaitility/commit/3c9f3450ca3bcf7dd53f8fcf2f7c06675350d9cc"><code>3c9f345</code></a> Fixed a bug in the shutdown behavior of a polling thread. The wrong time unit...</li>
<li><a href="https://github.com/awaitility/awaitility/commit/c4962d815b955059553f506ff1bed8ae7d055266"><code>c4962d8</code></a> Update README.md</li>
<li>Additional commits viewable in <a href="https://github.com/awaitility/awaitility/compare/awaitility-4.1.1...awaitility-4.2.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=org.awaitility:awaitility&package-manager=maven&previous-version=4.1.1&new-version=4.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/1964#" title="Author self-approved">dependabot[bot]</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **evankanderson** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @evankanderson` in a comment when ready.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka-broker).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka-broker/blob/main/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["evankanderson"]} -->
knative-prow-robot: Hi @dependabot[bot]. Thanks for your PR.

I'm waiting for a [knative-sandbox](https://github.com/orgs/knative-sandbox/people) member to verify that this patch is reasonable to test. If it is, they should reply with `/ok-to-test` on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should [join the org](https://github.com/orgs/knative-sandbox/people) to skip this step.

Once the patch is verified, the new status will be reflected by the `ok-to-test` label.

I understand the commands that are listed [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka-broker).

<details>

Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes/test-infra](https://github.com/kubernetes/test-infra/issues/new?title=Prow%20issue:) repository.
</details>

knative-prow-robot: [APPROVALNOTIFIER] This PR is **NOT APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/1964#" title="Author self-approved">dependabot[bot]</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please ask for approval from **pierdipi** after the PR has been reviewed.

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka-broker).

<details open>
Needs approval from an approver in each of these files:

- **[OWNERS](https://github.com/knative-sandbox/eventing-kafka-broker/blob/main/OWNERS)**

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":["pierdipi"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) Report
> Merging [#1964](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) (1b27fb0) into [main](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/commit/c68e4004ae0b947328d27692c0f1077125ce742c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) (c68e400) will **not change** coverage.
> The diff coverage is `n/a`.

> :exclamation: Current head 1b27fb0 differs from pull request most recent head 4f17429. Consider uploading reports for the commit 4f17429 to get more accurate results

[![Impacted file tree graph](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964/graphs/tree.svg?width=650&height=150&src=pr&token=xyPIgGOiwy&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox)](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox)

```diff
@@           Coverage Diff           @@
##             main    #1964   +/-   ##
=======================================
  Coverage   59.65%   59.65%           
=======================================
  Files          68       68           
  Lines        4452     4452           
=======================================
  Hits         2656     2656           
  Misses       1522     1522           
  Partials      274      274           
```


| [Impacted Files](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox) | Coverage Δ | |
|---|---|---|
| [...lane/pkg/reconciler/consumergroup/consumergroup.go](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox#diff-Y29udHJvbC1wbGFuZS9wa2cvcmVjb25jaWxlci9jb25zdW1lcmdyb3VwL2NvbnN1bWVyZ3JvdXAuZ28=) | `76.85% <0.00%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox). Last update [c68e400...4f17429](https://codecov.io/gh/knative-sandbox/eventing-kafka-broker/pull/1964?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=knative-sandbox).

knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/1964#" title="Author self-approved">dependabot[bot]</a>*, *<a href="https://github.com/knative-sandbox/eventing-kafka-broker/pull/1964#pullrequestreview-901307115" title="Approved">matzew</a>*

The full list of commands accepted by this bot can be found [here](https://go.k8s.io/bot-commands?repo=knative-sandbox%2Feventing-kafka-broker).

The pull request process is described [here](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/knative-sandbox/eventing-kafka-broker/blob/main/OWNERS)~~ [matzew]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->

Patch:
diff --git a/control-plane/pkg/reconciler/broker/broker.go b/control-plane/pkg/reconciler/broker/broker.go
index 3b9c20473..689f57e2c 100644
--- a/control-plane/pkg/reconciler/broker/broker.go
+++ b/control-plane/pkg/reconciler/broker/broker.go
@@ -90,7 +90,7 @@ func (r *Reconciler) reconcileKind(ctx context.Context, broker *eventing.Broker)
 	}
 	statusConditionManager.DataPlaneAvailable()
 
-	topicConfig, brokerConfig, err := r.topicConfig(ctx, logger, broker)
+	topicConfig, brokerConfig, err := r.topicConfig(logger, broker)
 	if err != nil {
 		return statusConditionManager.FailedToResolveConfig(err)
 	}
@@ -305,7 +305,7 @@ func (r *Reconciler) finalizeKind(ctx context.Context, broker *eventing.Broker)
 		return controller.NewRequeueAfter(5 * time.Second)
 	}
 
-	topicConfig, brokerConfig, err := r.topicConfig(ctx, logger, broker)
+	topicConfig, brokerConfig, err := r.topicConfig(logger, broker)
 	if err != nil {
 		return fmt.Errorf("failed to resolve broker config: %w", err)
 	}
@@ -348,6 +348,7 @@ func (r *Reconciler) finalizeKind(ctx context.Context, broker *eventing.Broker)
 
 	logger.Debug("Topic deleted", zap.String("topic", topic))
 
+	// TODO(pierDipi) remove after some releases (released in 1.4)
 	if err := r.removeFinalizerCM(ctx, finalizerCM(broker), brokerConfig); err != nil {
 		return err
 	}
@@ -355,7 +356,7 @@ func (r *Reconciler) finalizeKind(ctx context.Context, broker *eventing.Broker)
 	return nil
 }
 
-func (r *Reconciler) topicConfig(ctx context.Context, logger *zap.Logger, broker *eventing.Broker) (*kafka.TopicConfig, *corev1.ConfigMap, error) {
+func (r *Reconciler) topicConfig(logger *zap.Logger, broker *eventing.Broker) (*kafka.TopicConfig, *corev1.ConfigMap, error) {
 
 	logger.Debug("broker config", zap.Any("broker.spec.config", broker.Spec.Config))
 
@@ -368,23 +369,62 @@ func (r *Reconciler) topicConfig(ctx context.Context, logger *zap.Logger, broker
 		// Namespace not specified, use broker namespace.
 		namespace = broker.Namespace
 	}
-	cm, err := r.ConfigMapLister.ConfigMaps(namespace).Get(broker.Spec.Config.Name)
-	if err != nil {
-		return nil, nil, fmt.Errorf("failed to get configmap %s/%s: %w", namespace, broker.Spec.Config.Name, err)
-	}
 
-	if err := r.addFinalizerCM(ctx, finalizerCM(broker), cm); err != nil {
-		return nil, nil, err
+	// There might be cases where the ConfigMap is deleted before the Broker.
+	// In these cases, we rebuild the ConfigMap from broker status annotations.
+	//
+	// These annotations aren't guaranteed to be there or valid since there might
+	// be other actions messing with them, so when we try to rebuild the ConfigMap's
+	// data but the guess is wrong or data are invalid we return the
+	// `StatusReasonNotFound` error instead of the error generated from the fake
+	// "re-built" ConfigMap.
+
+	isRebuilt := false
+	cm, getCmError := r.ConfigMapLister.ConfigMaps(namespace).Get(broker.Spec.Config.Name)
+	if getCmError != nil && !apierrors.IsNotFound(getCmError) {
+		return nil, nil, fmt.Errorf("failed to get configmap %s/%s: %w", namespace, broker.Spec.Config.Name, getCmError)
+	}
+	if apierrors.IsNotFound(getCmError) {
+		cm = rebuildCMFromAnnotations(broker)
+		isRebuilt = true
 	}
 
 	topicConfig, err := kafka.TopicConfigFromConfigMap(logger, cm)
 	if err != nil {
+		if isRebuilt {
+			return nil, cm, fmt.Errorf("failed to get configmap %s/%s: %w", namespace, broker.Spec.Config.Name, getCmError)
+		}
 		return nil, cm, fmt.Errorf("unable to build topic config from configmap: %w - ConfigMap data: %v", err, cm.Data)
 	}
 
+	if broker.Status.Annotations == nil {
+		broker.Status.Annotations = make(map[string]string, len(cm.Data))
+	}
+
+	// Save ConfigMap's data into broker annotations
+	for k, v := range cm.Data {
+		broker.Status.Annotations[k] = v
+	}
+
 	return topicConfig, cm, nil
 }
 
+func rebuildCMFromAnnotations(br *eventing.Broker) *corev1.ConfigMap {
+	cm := &corev1.ConfigMap{
+		ObjectMeta: metav1.ObjectMeta{
+			Namespace: br.Spec.Config.Namespace,
+			Name:      br.Spec.Config.Name,
+		},
+	}
+	for k, v := range br.Status.Annotations {
+		if cm.Data == nil {
+			cm.Data = make(map[string]string, len(br.Status.Annotations))
+		}
+		cm.Data[k] = v
+	}
+	return cm
+}
+
 func (r *Reconciler) reconcilerBrokerResource(ctx context.Context, topic string, broker *eventing.Broker, secret *corev1.Secret, config *kafka.TopicConfig) (*contract.Resource, error) {
 	resource := &contract.Resource{
 		Uid:    string(broker.UID),
@@ -422,30 +462,6 @@ func (r *Reconciler) reconcilerBrokerResource(ctx context.Context, topic string,
 	return resource, nil
 }
 
-func (r *Reconciler) addFinalizerCM(ctx context.Context, finalizer string, cm *corev1.ConfigMap) error {
-	if !containsFinalizerCM(cm, finalizer) {
-		cm := cm.DeepCopy() // Do not modify informer copy.
-		cm.Finalizers = append(cm.Finalizers, finalizer)
-		_, err := r.KubeClient.CoreV1().ConfigMaps(cm.GetNamespace()).Update(ctx, cm, metav1.UpdateOptions{})
-		if err != nil && !apierrors.IsNotFound(err) {
-			return fmt.Errorf("failed to add finalizer to ConfigMap %s/%s: %w", cm.GetNamespace(), cm.GetName(), err)
-		}
-	}
-	return nil
-}
-
-func containsFinalizerCM(cm *corev1.ConfigMap, finalizer string) bool {
-	if cm == nil {
-		return false
-	}
-	for _, f := range cm.Finalizers {
-		if f == finalizer {
-			return true
-		}
-	}
-	return false
-}
-
 func (r *Reconciler) removeFinalizerCM(ctx context.Context, finalizer string, cm *corev1.ConfigMap) error {
 	newFinalizers := make([]string, 0, len(cm.Finalizers))
 	for _, f := range cm.Finalizers {
diff --git a/data-plane/THIRD-PARTY.txt b/data-plane/THIRD-PARTY.txt
index 8bdd3a2c5..79c9f309b 100644
--- a/data-plane/THIRD-PARTY.txt
+++ b/data-plane/THIRD-PARTY.txt
@@ -131,7 +131,7 @@ Lists of 158 third-party dependencies.
      (Apache License, Version 2.0) Apache ZooKeeper - Jute (org.apache.zookeeper:zookeeper-jute:3.5.9 - http://zookeeper.apache.org/zookeeper-jute)
      (The Apache License, Version 2.0) org.apiguardian:apiguardian-api (org.apiguardian:apiguardian-api:1.1.2 - https://github.com/apiguardian-team/apiguardian)
      (Apache License, Version 2.0) AssertJ fluent assertions (org.assertj:assertj-core:3.22.0 - https://assertj.github.io/doc/assertj-core/)
-     (Apache 2.0) Awaitility (org.awaitility:awaitility:4.1.1 - http://awaitility.org)
+     (Apache 2.0) Awaitility (org.awaitility:awaitility:4.2.0 - http://awaitility.org)
      (GNU General Public License, version 2 (GPL2), with the classpath exception) (The MIT License) Checker Qual (org.checkerframework:checker-compat-qual:2.5.5 - https://checkerframework.org)
      (BSD Licence 3) Hamcrest (org.hamcrest:hamcrest:2.1 - http://hamcrest.org/JavaHamcrest/)
      (New BSD License) Hamcrest Core (org.hamcrest:hamcrest-core:1.3 - https://github.com/hamcrest/JavaHamcrest/hamcrest-core)
diff --git a/data-plane/pom.xml b/data-plane/pom.xml
index bdc697ad2..ecb1d5640 100644
--- a/data-plane/pom.xml
+++ b/data-plane/pom.xml
@@ -45,13 +45,13 @@
     <cloudevents.sdk.version>2.3.0</cloudevents.sdk.version>
     <micrometer.version>1.8.3</micrometer.version>
     <opentelemetry.version>1.11.0</opentelemetry.version>
-    <jackson.version>2.13.1</jackson.version>
+    <jackson.version>2.13.2</jackson.version>
     <protobuf.version>3.19.4</protobuf.version>
     <slf4j.version>1.7.36</slf4j.version>
     <ch.qos.logback.version>1.2.10</ch.qos.logback.version>
     <net.logstash.logback.encoder.version>7.0.1</net.logstash.logback.encoder.version>
     <assertj.version>3.22.0</assertj.version>
-    <awaitility.version>4.1.1</awaitility.version>
+    <awaitility.version>4.2.0</awaitility.version>
     <junit.jupiter.version>5.8.2</junit.jupiter.version>
     <mokito.junit.jupiter.version>4.3.1</mokito.junit.jupiter.version>
     <fabric8.kubernetes.version>5.12.1</fabric8.kubernetes.version>
diff --git a/go.mod b/go.mod
index 954c36cc7..6b2c82ab9 100644
--- a/go.mod
+++ b/go.mod
@@ -23,9 +23,9 @@ require (
 	k8s.io/apiserver v0.22.5
 	k8s.io/client-go v0.22.5
 	k8s.io/utils v0.0.0-20211208161948-7d6a63dca704
-	knative.dev/eventing v0.29.1-0.20220303004706-b34944341f8c
-	knative.dev/eventing-kafka v0.28.1-0.20220302145443-a634773ea64f
+	knative.dev/eventing v0.29.1-0.20220307200636-9590bc3a96a3
+	knative.dev/eventing-kafka v0.28.1-0.20220304062435-fb7769ca5216
 	knative.dev/hack v0.0.0-20220224013837-e1785985d364
 	knative.dev/pkg v0.0.0-20220301181942-2fdd5f232e77
-	knative.dev/reconciler-test v0.0.0-20220302162744-d6d7c145012e
+	knative.dev/reconciler-test v0.0.0-20220303141206-84821d26ed1f
 )
diff --git a/go.sum b/go.sum
index 408cc8828..daf3fef13 100644
--- a/go.sum
+++ b/go.sum
@@ -1360,10 +1360,10 @@ k8s.io/utils v0.0.0-20211208161948-7d6a63dca704 h1:ZKMMxTvduyf5WUtREOqg5LiXaN1KO
 k8s.io/utils v0.0.0-20211208161948-7d6a63dca704/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 knative.dev/control-protocol v0.0.0-20220201152531-79a0b1ad34b9/go.mod h1:OGZyr8rJQoDs8pE9gQ47koLdhJ+Vb0QubzntQbrwjdY=
 knative.dev/eventing v0.29.1-0.20220228193110-f2045b0d65b7/go.mod h1:1PF6Gr2r+y0PrJ/sgoN8jcAi599SLbKDuGulAsdGX/w=
-knative.dev/eventing v0.29.1-0.20220303004706-b34944341f8c h1:t62rMmDxde4qSNxSBo58vePigTeGetphQ0IVJSrxLnE=
-knative.dev/eventing v0.29.1-0.20220303004706-b34944341f8c/go.mod h1:Vw68reHKw2xRYIit+M4ZjcJXUP9dnzW5pR6H5LPnaic=
-knative.dev/eventing-kafka v0.28.1-0.20220302145443-a634773ea64f h1:pN4C/s08Pr92AhBvt6g0xJcjWlg/bjQT7z14HQxHD+E=
-knative.dev/eventing-kafka v0.28.1-0.20220302145443-a634773ea64f/go.mod h1:f9NT3MrbeIORmRzUhzuDtVhrC8/MajxJukpEyQlplVw=
+knative.dev/eventing v0.29.1-0.20220307200636-9590bc3a96a3 h1:RWDEEbt3LdhbFYOFPs2udE8X9TtrgZkcbAKaRH8Cv3k=
+knative.dev/eventing v0.29.1-0.20220307200636-9590bc3a96a3/go.mod h1:JCqC8evTls1WiBTmYhPEGME6OQD8HFnLQjFPImwOEOg=
+knative.dev/eventing-kafka v0.28.1-0.20220304062435-fb7769ca5216 h1:RMXWs9ycE9IYkjCb9MoNmKWWg4pHQ7PZwxBaMiT1RYA=
+knative.dev/eventing-kafka v0.28.1-0.20220304062435-fb7769ca5216/go.mod h1:f9NT3MrbeIORmRzUhzuDtVhrC8/MajxJukpEyQlplVw=
 knative.dev/hack v0.0.0-20220118141833-9b2ed8471e30/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
 knative.dev/hack v0.0.0-20220128200847-51a42b2eb63e/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
 knative.dev/hack v0.0.0-20220201013531-82bfca153560/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
@@ -1378,8 +1378,8 @@ knative.dev/pkg v0.0.0-20220301181942-2fdd5f232e77 h1:eIH936a0/1X/XQOMN9+O3fw9sp
 knative.dev/pkg v0.0.0-20220301181942-2fdd5f232e77/go.mod h1:SsH9J6Gz+CvrHmoL0TELJXmMmohqKSQ5bpJvCv+1+ZI=
 knative.dev/reconciler-test v0.0.0-20220126171745-740e77ebaace/go.mod h1:XV4cghzCtdASkfUsfMYSnGfGRyd/naDjy9h7Tnae22g=
 knative.dev/reconciler-test v0.0.0-20220216192840-2c3291f210ce/go.mod h1:m2q6+mGqlPsJ6qP0ssMv3x2UBwIgTdTxgxJ6GK5kgu4=
-knative.dev/reconciler-test v0.0.0-20220302162744-d6d7c145012e h1:HxYbXkK08nR7FD0X8meO5nZVixI09IML/ChzgtKjtzk=
-knative.dev/reconciler-test v0.0.0-20220302162744-d6d7c145012e/go.mod h1:K5pZJkenonlT9o+MtRaNsBP7BazGwjhqYPepuV1zdnU=
+knative.dev/reconciler-test v0.0.0-20220303141206-84821d26ed1f h1:e0bUwEnXMtl/h1zUEm36zwqqkn6/DHVTV/2DWWY1x08=
+knative.dev/reconciler-test v0.0.0-20220303141206-84821d26ed1f/go.mod h1:K5pZJkenonlT9o+MtRaNsBP7BazGwjhqYPepuV1zdnU=
 modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
 modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
 modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
diff --git a/hack/control-plane.sh b/hack/control-plane.sh
index 52152430a..ea5cac994 100644
--- a/hack/control-plane.sh
+++ b/hack/control-plane.sh
@@ -21,8 +21,6 @@ readonly CONTROL_PLANE_POST_INSTALL_CONFIG_DIR=control-plane/config/post-install
 
 # Note: do not change this function name, it's used during releases.
 function control_plane_setup() {
-  ko resolve ${KO_FLAGS} -Rf "${CONTROL_PLANE_CONFIG_DIR}" | "${LABEL_YAML_CMD[@]}" >>"${EVENTING_KAFKA_CONTROL_PLANE_ARTIFACT}" &&
-    ko resolve ${KO_FLAGS} -Rf "${CONTROL_PLANE_POST_INSTALL_CONFIG_DIR}" | "${LABEL_YAML_CMD[@]}" >>"${EVENTING_KAFKA_POST_INSTALL_ARTIFACT}"
-
-  return $?
+  ko resolve ${KO_FLAGS} -Rf "${CONTROL_PLANE_CONFIG_DIR}" | "${LABEL_YAML_CMD[@]}" >>"${EVENTING_KAFKA_CONTROL_PLANE_ARTIFACT}" || return $?
+  ko resolve ${KO_FLAGS} -Rf "${CONTROL_PLANE_POST_INSTALL_CONFIG_DIR}" | "${LABEL_YAML_CMD[@]}" >>"${EVENTING_KAFKA_POST_INSTALL_ARTIFACT}" || return $?
 }
diff --git a/hack/tools.go b/hack/tools.go
index 4f73a57f2..409fd99d4 100644
--- a/hack/tools.go
+++ b/hack/tools.go
@@ -24,6 +24,9 @@ import (
 	_ "knative.dev/pkg/configmap/hash-gen"
 	_ "knative.dev/pkg/hack"
 
+	// Needed for the storage version migration.
+	_ "knative.dev/pkg/apiextensions/storageversion/cmd/migrate"
+
 	// Test images from eventing
 	_ "knative.dev/eventing/test/test_images/event-flaker"
 	_ "knative.dev/eventing/test/test_images/event-library"
diff --git a/vendor/knative.dev/eventing/pkg/scheduler/statefulset/autoscaler.go b/vendor/knative.dev/eventing/pkg/scheduler/statefulset/autoscaler.go
index fb5da1c9c..6b66a0584 100644
--- a/vendor/knative.dev/eventing/pkg/scheduler/statefulset/autoscaler.go
+++ b/vendor/knative.dev/eventing/pkg/scheduler/statefulset/autoscaler.go
@@ -103,7 +103,6 @@ func (a *autoscaler) Start(ctx context.Context) {
 }
 
 func (a *autoscaler) Autoscale(ctx context.Context, attemptScaleDown bool, pending int32) {
-	a.trigger <- pending
 	a.syncAutoscale(ctx, attemptScaleDown, pending)
 }
 
diff --git a/vendor/knative.dev/pkg/apiextensions/storageversion/cmd/migrate/main.go b/vendor/knative.dev/pkg/apiextensions/storageversion/cmd/migrate/main.go
new file mode 100644
index 000000000..81cd9b7ad
--- /dev/null
+++ b/vendor/knative.dev/pkg/apiextensions/storageversion/cmd/migrate/main.go
@@ -0,0 +1,94 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package main
+
+import (
+	"flag"
+	"fmt"
+	"log"
+
+	"go.uber.org/zap"
+	apixclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/client-go/dynamic"
+	"knative.dev/pkg/apiextensions/storageversion"
+	"knative.dev/pkg/environment"
+	"knative.dev/pkg/logging"
+	"knative.dev/pkg/signals"
+)
+
+func main() {
+	logger := setupLogger()
+	defer logger.Sync()
+
+	env := environment.ClientConfig{}
+	env.InitFlags(flag.CommandLine)
+
+	flag.Parse()
+
+	config, err := env.GetRESTConfig()
+	if err != nil {
+		logger.Fatalf("failed to get kubeconfig %s", err)
+	}
+
+	grs, err := parseResources(flag.Args())
+	if err != nil {
+		logger.Fatal(err)
+	}
+
+	migrator := storageversion.NewMigrator(
+		dynamic.NewForConfigOrDie(config),
+		apixclient.NewForConfigOrDie(config),
+	)
+
+	ctx := signals.NewContext()
+
+	logger.Infof("Migrating %d group resources", len(grs))
+
+	for _, gr := range grs {
+		logger.Info("Migrating group resource ", gr)
+		if err := migrator.Migrate(ctx, gr); err != nil {
+			logger.Fatal("Failed to migrate: ", err)
+		}
+	}
+
+	logger.Info("Migration complete")
+}
+
+func parseResources(args []string) ([]schema.GroupResource, error) {
+	grs := make([]schema.GroupResource, 0, len(args))
+	for _, arg := range args {
+		gr := schema.ParseGroupResource(arg)
+		if gr.Empty() {
+			return nil, fmt.Errorf("unable to parse group version: %s", arg)
+		}
+		grs = append(grs, gr)
+	}
+	return grs, nil
+}
+
+func setupLogger() *zap.SugaredLogger {
+	const component = "storage-migrator"
+
+	config, err := logging.NewConfigFromMap(nil)
+	if err != nil {
+		log.Fatal("Failed to create logging config: ", err)
+	}
+
+	logger, _ := logging.NewLoggerFromConfig(config, component)
+	return logger
+}
diff --git a/vendor/knative.dev/pkg/apiextensions/storageversion/migrator.go b/vendor/knative.dev/pkg/apiextensions/storageversion/migrator.go
new file mode 100644
index 000000000..7ac1cc932
--- /dev/null
+++ b/vendor/knative.dev/pkg/apiextensions/storageversion/migrator.go
@@ -0,0 +1,121 @@
+/*
+Copyright 2020 The Knative Authors
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package storageversion
+
+import (
+	"context"
+	"fmt"
+
+	apix "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
+	apixclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
+	apierrs "k8s.io/apimachinery/pkg/api/errors"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/apimachinery/pkg/runtime"
+	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/apimachinery/pkg/types"
+	"k8s.io/client-go/dynamic"
+	"k8s.io/client-go/tools/pager"
+)
+
+// Migrator will read custom resource definitions and upgrade
+// the associated resources to the latest storage version
+type Migrator struct {
+	dynamicClient dynamic.Interface
+	apixClient    apixclient.Interface
+}
+
+// NewMigrator will return a new Migrator
+func NewMigrator(d dynamic.Interface, a apixclient.Interface) *Migrator {
+	return &Migrator{
+		dynamicClient: d,
+		apixClient:    a,
+	}
+}
+
+// Migrate takes a group resource (ie. resource.some.group.dev) and
+// updates instances of the resource to the latest storage version
+//
+// This is done by listing all the resources and performing an empty patch
+// which triggers a migration on the K8s API server
+//
+// Finally the migrator will update the CRD's status and drop older storage
+// versions
+func (m *Migrator) Migrate(ctx context.Context, gr schema.GroupResource) error {
+	crdClient := m.apixClient.ApiextensionsV1().CustomResourceDefinitions()
+
+	crd, err := crdClient.Get(ctx, gr.String(), metav1.GetOptions{})
+	if err != nil {
+		return fmt.Errorf("unable to fetch crd %s - %w", gr, err)
+	}
+
+	version := storageVersion(crd)
+
+	if version == "" {
+		return fmt.Errorf("unable to determine storage version for %s", gr)
+	}
+
+	if err := m.migrateResources(ctx, gr.WithVersion(version)); err != nil {
+		return err
+	}
+
+	patch := `{"status":{"storedVersions":["` + version + `"]}}`
+	_, err = crdClient.Patch(ctx, crd.Name, types.StrategicMergePatchType, []byte(patch), metav1.PatchOptions{}, "status")
+	if err != nil {
+		return fmt.Errorf("unable to drop storage version definition %s - %w", gr, err)
+	}
+
+	return nil
+}
+
+func (m *Migrator) migrateResources(ctx context.Context, gvr schema.GroupVersionResource) error {
+	client := m.dynamicClient.Resource(gvr)
+
+	listFunc := func(ctx context.Context, opts metav1.ListOptions) (runtime.Object, error) {
+		return client.Namespace(metav1.NamespaceAll).List(ctx, opts)
+	}
+
+	onEach := func(obj runtime.Object) error {
+		item := obj.(metav1.Object)
+
+		_, err := client.Namespace(item.GetNamespace()).
+			Patch(ctx, item.GetName(), types.MergePatchType, []byte("{}"), metav1.PatchOptions{})
+
+		if err != nil && !apierrs.IsNotFound(err) {
+			return fmt.Errorf("unable to patch resource %s/%s (gvr: %s) - %w",
+				item.GetNamespace(), item.GetName(),
+				gvr, err)
+		}
+
+		return nil
+	}
+
+	pager := pager.New(listFunc)
+	return pager.EachListItem(ctx, metav1.ListOptions{}, onEach)
+}
+
+func storageVersion(crd *apix.CustomResourceDefinition) string {
+	var version string
+
+	for _, v := range crd.Spec.Versions {
+		if v.Storage {
+			version = v.Name
+			break
+		}
+	}
+
+	return version
+}
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 4889bb945..de1cd8ea8 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -1124,7 +1124,7 @@ k8s.io/utils/buffer
 k8s.io/utils/integer
 k8s.io/utils/pointer
 k8s.io/utils/trace
-# knative.dev/eventing v0.29.1-0.20220303004706-b34944341f8c
+# knative.dev/eventing v0.29.1-0.20220307200636-9590bc3a96a3
 ## explicit
 knative.dev/eventing/pkg/apis/config
 knative.dev/eventing/pkg/apis/duck
@@ -1272,7 +1272,7 @@ knative.dev/eventing/test/upgrade/prober/wathola/fetcher
 knative.dev/eventing/test/upgrade/prober/wathola/forwarder
 knative.dev/eventing/test/upgrade/prober/wathola/receiver
 knative.dev/eventing/test/upgrade/prober/wathola/sender
-# knative.dev/eventing-kafka v0.28.1-0.20220302145443-a634773ea64f
+# knative.dev/eventing-kafka v0.28.1-0.20220304062435-fb7769ca5216
 ## explicit
 knative.dev/eventing-kafka/pkg/apis/bindings
 knative.dev/eventing-kafka/pkg/apis/bindings/v1beta1
@@ -1339,6 +1339,8 @@ knative.dev/hack
 knative.dev/hack/shell
 # knative.dev/pkg v0.0.0-20220301181942-2fdd5f232e77
 ## explicit
+knative.dev/pkg/apiextensions/storageversion
+knative.dev/pkg/apiextensions/storageversion/cmd/migrate
 knative.dev/pkg/apis
 knative.dev/pkg/apis/duck
 knative.dev/pkg/apis/duck/ducktypes
@@ -1436,7 +1438,7 @@ knative.dev/pkg/webhook/json
 knative.dev/pkg/webhook/resourcesemantics
 knative.dev/pkg/webhook/resourcesemantics/defaulting
 knative.dev/pkg/webhook/resourcesemantics/validation
-# knative.dev/reconciler-test v0.0.0-20220302162744-d6d7c145012e
+# knative.dev/reconciler-test v0.0.0-20220303141206-84821d26ed1f
 ## explicit
 knative.dev/reconciler-test/cmd/eventshub
 knative.dev/reconciler-test/pkg/environment


Test patch:
diff --git a/control-plane/pkg/reconciler/broker/broker_test.go b/control-plane/pkg/reconciler/broker/broker_test.go
index 43e3a4359..df31de9ad 100644
--- a/control-plane/pkg/reconciler/broker/broker_test.go
+++ b/control-plane/pkg/reconciler/broker/broker_test.go
@@ -136,7 +136,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -171,6 +170,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerTopicReady,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
+						BrokerConfigMapAnnotations(),
 					),
 				},
 			},
@@ -196,7 +196,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -230,6 +229,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
 						StatusBrokerProbeFailed(prober.StatusNotReady),
+						BrokerConfigMapAnnotations(),
 					),
 				},
 			},
@@ -258,7 +258,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -291,6 +290,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerProbeFailed(prober.StatusUnknown),
 					),
 				},
@@ -318,7 +318,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -350,6 +349,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerConfigParsed,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
@@ -377,7 +377,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -409,6 +408,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerConfigParsed,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
@@ -436,9 +436,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 					BrokerTopic(), createTopicError,
 				),
 			},
-			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
-			},
 			WantPatches: []clientgotesting.PatchActionImpl{
 				patchFinalizers(),
 			},
@@ -449,6 +446,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerConfigParsed,
 						StatusBrokerFailedToCreateTopic,
+						BrokerConfigMapAnnotations(),
 					),
 				},
 			},
@@ -482,7 +480,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				NewConfigMapWithBinaryData(&env, nil),
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -515,6 +512,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 						BrokerDLSResolved(ServiceURL),
@@ -539,7 +537,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -570,6 +567,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 					),
@@ -609,7 +607,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -651,6 +648,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 					),
@@ -701,7 +699,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -748,6 +745,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 						BrokerDLSResolved("http://www.my-sink.com/api"),
@@ -793,7 +791,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -833,6 +830,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 					),
@@ -873,7 +871,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -910,6 +907,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 					),
@@ -954,9 +952,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 			},
 			Key:     testKey,
 			WantErr: true,
-			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
-			},
 			WantEvents: []string{
 				finalizerUpdatedEvent,
 				Eventf(
@@ -981,6 +976,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerConfigNotParsed("failed to resolve Spec.Delivery.DeadLetterSink: destination missing Ref and URI, expected at least one"),
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 					),
 				},
 			},
@@ -999,11 +995,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 			},
 			Key:     testKey,
 			WantErr: true,
-			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName, func(cm *corev1.ConfigMap) {
-					cm.Data["bootstrap.servers"] = ""
-				}),
-			},
 			WantEvents: []string{
 				finalizerUpdatedEvent,
 				Eventf(
@@ -1050,7 +1041,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1086,6 +1076,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 					),
@@ -1122,7 +1113,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName, BrokerAuthConfig("secret-1")),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1166,6 +1156,8 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
+						BrokerConfigMapSecretAnnotation("secret-1"),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 					),
@@ -1318,7 +1310,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1374,6 +1365,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerConfigParsed,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 						BrokerDLSResolved(ServiceURL),
@@ -1429,7 +1421,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1467,6 +1458,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerConfigParsed,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
@@ -1495,7 +1487,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1533,6 +1524,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerConfigParsed,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
@@ -1561,7 +1553,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1596,6 +1587,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerConfigParsed,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
@@ -1624,7 +1616,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				ConfigMapUpdate(&env, &contract.Contract{
 					Resources: []*contract.Resource{
 						{
@@ -1662,6 +1653,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						StatusBrokerConfigMapUpdatedReady(&env),
 						StatusBrokerDataPlaneAvailable,
 						StatusBrokerTopicReady,
+						BrokerConfigMapAnnotations(),
 						StatusBrokerConfigParsed,
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
@@ -1675,6 +1667,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 			Objects: []runtime.Object{
 				NewBroker(
 					WithDelivery(),
+					BrokerConfigMapAnnotations(),
 				),
 				BrokerConfig(bootstrapServers, 20, 5),
 				NewConfigMapFromContract(&contract.Contract{
@@ -1698,9 +1691,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 			WantEvents: []string{
 				finalizerUpdatedEvent,
 			},
-			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
-			},
 			WantPatches: []clientgotesting.PatchActionImpl{
 				patchFinalizers(),
 			},
@@ -1716,6 +1706,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 						BrokerDLSResolved(ServiceURL),
+						BrokerConfigMapAnnotations(),
 					),
 				},
 			},
@@ -1749,7 +1740,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 				finalizerUpdatedEvent,
 			},
 			WantUpdates: []clientgotesting.UpdateActionImpl{
-				ConfigMapFinalizerUpdate(ConfigMapFinalizerName),
 				BrokerReceiverPodUpdate(env.SystemNamespace, map[string]string{base.VolumeGenerationAnnotationKey: "1"}),
 				BrokerDispatcherPodUpdate(env.SystemNamespace, map[string]string{base.VolumeGenerationAnnotationKey: "1"}),
 			},
@@ -1768,6 +1758,7 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 						BrokerAddressable(&env),
 						StatusBrokerProbeSucceeded,
 						BrokerDLSResolved(ServiceURL),
+						BrokerConfigMapAnnotations(),
 					),
 				},
 			},
@@ -1781,23 +1772,6 @@ func brokerReconciliation(t *testing.T, format string, env config.Env) {
 	useTable(t, table, &env)
 }
 
-func ConfigMapFinalizerUpdate(name string, opts ...CMOption) clientgotesting.UpdateActionImpl {
-	return clientgotesting.NewUpdateAction(
-		schema.GroupVersionResource{
-			Group:    "*",
-			Version:  "v1",
-			Resource: "ConfigMap",
-		},
-		ConfigMapNamespace,
-		BrokerConfig(bootstrapServers, 20, 5,
-			append(
-				[]CMOption{BrokerConfigFinalizer(name)},
-				opts...,
-			)...,
-		),
-	)
-}
-
 func ConfigMapFinalizerUpdateRemove(name string, opts ...CMOption) clientgotesting.UpdateActionImpl {
 	return clientgotesting.NewUpdateAction(
 		schema.GroupVersionResource{
@@ -1860,6 +1834,34 @@ func brokerFinalization(t *testing.T, format string, env config.Env) {
 				testProber: probertesting.MockProber(prober.StatusNotReady),
 			},
 		},
+		{
+			Name: "Reconciled normal - no ConfigMap, rebuild from annotations",
+			Objects: []runtime.Object{
+				NewDeletedBroker(
+					BrokerConfigMapAnnotations(),
+				),
+				NewConfigMapFromContract(&contract.Contract{
+					Resources: []*contract.Resource{
+						{
+							Uid:     BrokerUUID,
+							Topics:  []string{BrokerTopic()},
+							Ingress: &contract.Ingress{IngressType: &contract.Ingress_Path{Path: receiver.Path(BrokerNamespace, BrokerName)}},
+						},
+					},
+					Generation: 1,
+				}, &env),
+			},
+			Key: testKey,
+			WantUpdates: []clientgotesting.UpdateActionImpl{
+				ConfigMapUpdate(&env, &contract.Contract{
+					Resources:  []*contract.Resource{},
+					Generation: 2,
+				}),
+			},
+			OtherTestData: map[string]interface{}{
+				testProber: probertesting.MockProber(prober.StatusNotReady),
+			},
+		},
 		{
 			Name: "Reconciled failed - probe not ready",
 			Objects: []runtime.Object{
diff --git a/control-plane/pkg/reconciler/channel/testdata/testdata b/control-plane/pkg/reconciler/channel/testdata/testdata
deleted file mode 120000
index 830f58170..000000000
--- a/control-plane/pkg/reconciler/channel/testdata/testdata
+++ /dev/null
@@ -1,1 +0,0 @@
-testdata
\ No newline at end of file
diff --git a/control-plane/pkg/reconciler/testing/objects_broker.go b/control-plane/pkg/reconciler/testing/objects_broker.go
index 7ab0e6936..de4788d39 100644
--- a/control-plane/pkg/reconciler/testing/objects_broker.go
+++ b/control-plane/pkg/reconciler/testing/objects_broker.go
@@ -18,6 +18,7 @@ package testing
 
 import (
 	"fmt"
+	"strings"
 
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -85,6 +86,7 @@ func NewDeletedBroker(options ...reconcilertesting.BrokerOption) runtime.Object
 			func(broker *eventing.Broker) {
 				WithDeletedTimeStamp(broker)
 			},
+			BrokerConfigMapAnnotations(),
 		)...,
 	)
 }
@@ -138,9 +140,8 @@ type CMOption func(cm *corev1.ConfigMap)
 func BrokerConfig(bootstrapServers string, numPartitions, replicationFactor int, options ...CMOption) *corev1.ConfigMap {
 	cm := &corev1.ConfigMap{
 		ObjectMeta: metav1.ObjectMeta{
-			Namespace:  ConfigMapNamespace,
-			Name:       ConfigMapName,
-			Finalizers: []string{"finalizer-that-we-should-not-drop"},
+			Namespace: ConfigMapNamespace,
+			Name:      ConfigMapName,
 		},
 		Data: map[string]string{
 			kafka.BootstrapServersConfigMapKey:              bootstrapServers,
@@ -336,3 +337,23 @@ func StatusBrokerProbeFailed(status prober.Status) reconcilertesting.BrokerOptio
 		StatusProbeFailed(status)(broker)
 	}
 }
+
+func BrokerConfigMapAnnotations() reconcilertesting.BrokerOption {
+	return func(broker *eventing.Broker) {
+		if broker.Status.Annotations == nil {
+			broker.Status.Annotations = make(map[string]string, 10)
+		}
+		broker.Status.Annotations[kafka.BootstrapServersConfigMapKey] = strings.Join(bootstrapServers, ",")
+		broker.Status.Annotations[kafka.DefaultTopicNumPartitionConfigMapKey] = fmt.Sprintf("%d", DefaultNumPartitions)
+		broker.Status.Annotations[kafka.DefaultTopicReplicationFactorConfigMapKey] = fmt.Sprintf("%d", DefaultReplicationFactor)
+	}
+}
+
+func BrokerConfigMapSecretAnnotation(name string) reconcilertesting.BrokerOption {
+	return func(broker *eventing.Broker) {
+		if broker.Status.Annotations == nil {
+			broker.Status.Annotations = make(map[string]string, 10)
+		}
+		broker.Status.Annotations[security.AuthSecretNameKey] = name
+	}
+}
diff --git a/data-plane/tests/src/test/java/dev/knative/eventing/kafka/broker/tests/DataPlaneTest.java b/data-plane/tests/src/test/java/dev/knative/eventing/kafka/broker/tests/DataPlaneTest.java
index 095ff8d32..115342151 100644
--- a/data-plane/tests/src/test/java/dev/knative/eventing/kafka/broker/tests/DataPlaneTest.java
+++ b/data-plane/tests/src/test/java/dev/knative/eventing/kafka/broker/tests/DataPlaneTest.java
@@ -147,7 +147,7 @@ public class DataPlaneTest {
 
    */
   @Test
-  @Timeout(timeUnit = TimeUnit.MINUTES, value = 1)
+  @Timeout(timeUnit = TimeUnit.MINUTES, value = 5)
   public void execute(final Vertx vertx, final VertxTestContext context) throws InterruptedException {
 
     final var checkpoints = context.checkpoint(4);
diff --git a/third_party/eventing-kafka-latest/channel-crds.yaml b/third_party/eventing-kafka-latest/channel-crds.yaml
index 4bbc57c19..afaa511ff 100644
--- a/third_party/eventing-kafka-latest/channel-crds.yaml
+++ b/third_party/eventing-kafka-latest/channel-crds.yaml
@@ -17,7 +17,7 @@ kind: CustomResourceDefinition
 metadata:
   name: kafkachannels.messaging.knative.dev
   labels:
-    kafka.eventing.knative.dev/release: "v20220215-59a3a1c55"
+    kafka.eventing.knative.dev/release: "v20220302-f4dfb1493"
     knative.dev/crd-install: "true"
     messaging.knative.dev/subscribable: "true"
     duck.knative.dev/addressable: "true"
diff --git a/third_party/eventing-kafka-latest/source-crd.yaml b/third_party/eventing-kafka-latest/source-crd.yaml
index 0ac398684..4413c3582 100644
--- a/third_party/eventing-kafka-latest/source-crd.yaml
+++ b/third_party/eventing-kafka-latest/source-crd.yaml
@@ -16,7 +16,7 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    kafka.eventing.knative.dev/release: "v20220215-59a3a1c55"
+    kafka.eventing.knative.dev/release: "v20220302-f4dfb1493"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
diff --git a/third_party/eventing-latest/eventing-core.yaml b/third_party/eventing-latest/eventing-core.yaml
index e6e66a536..0d1e3ddab 100644
--- a/third_party/eventing-latest/eventing-core.yaml
+++ b/third_party/eventing-latest/eventing-core.yaml
@@ -16,8 +16,8 @@ kind: Namespace
 metadata:
   name: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 
 ---
@@ -41,8 +41,8 @@ metadata:
   name: eventing-controller
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 ---
 apiVersion: rbac.authorization.k8s.io/v1
@@ -50,8 +50,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-controller
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -67,8 +67,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-controller-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -84,8 +84,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-controller-source-observer
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -101,8 +101,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-controller-sources-controller
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -118,8 +118,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-controller-manipulator
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -151,8 +151,8 @@ metadata:
   name: pingsource-mt-adapter
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 ---
 apiVersion: rbac.authorization.k8s.io/v1
@@ -160,8 +160,8 @@ kind: ClusterRoleBinding
 metadata:
   name: knative-eventing-pingsource-mt-adapter
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -193,8 +193,8 @@ metadata:
   name: eventing-webhook
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 ---
 apiVersion: rbac.authorization.k8s.io/v1
@@ -202,8 +202,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-webhook
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -220,8 +220,8 @@ metadata:
   namespace: knative-eventing
   name: eventing-webhook
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -237,8 +237,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-webhook-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -254,8 +254,8 @@ kind: ClusterRoleBinding
 metadata:
   name: eventing-webhook-podspecable-binding
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 subjects:
   - kind: ServiceAccount
@@ -287,8 +287,8 @@ metadata:
   name: config-br-default-channel
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 data:
   channel-template-spec: |
@@ -316,8 +316,8 @@ metadata:
   name: config-br-defaults
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 data:
   # Configures the default for any Broker that does not specify a spec.config or Broker class.
@@ -354,8 +354,8 @@ metadata:
   name: default-ch-webhook
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 data:
   # Configuration for defaulting channels that do not specify CRD implementations.
@@ -389,10 +389,10 @@ metadata:
   name: config-ping-defaults
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
   annotations:
     knative.dev/example-checksum: "9185c153"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 data:
   _example: |
@@ -436,10 +436,10 @@ metadata:
   name: config-features
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/config-propagation: original
     knative.dev/config-category: eventing
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 data:
   # ALPHA feature: The kreference-group allows you to use the Group field in KReferences.
@@ -483,7 +483,7 @@ metadata:
   name: config-kreference-mapping
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/config-propagation: original
     knative.dev/config-category: eventing
   annotations:
@@ -532,8 +532,8 @@ metadata:
   name: config-leader-election
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     knative.dev/example-checksum: "f7948630"
@@ -594,10 +594,10 @@ metadata:
   name: config-logging
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/config-propagation: original
     knative.dev/config-category: eventing
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 data:
   # Common configuration for all Knative codebase
@@ -648,10 +648,10 @@ metadata:
   name: config-observability
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/config-propagation: original
     knative.dev/config-category: eventing
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     knative.dev/example-checksum: "f46cf09d"
@@ -725,10 +725,10 @@ metadata:
   name: config-tracing
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/config-propagation: original
     knative.dev/config-category: eventing
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     knative.dev/example-checksum: "0492ceb0"
@@ -783,10 +783,10 @@ metadata:
   name: eventing-controller
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/high-availability: "true"
     app.kubernetes.io/component: eventing-controller
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   selector:
@@ -796,9 +796,9 @@ spec:
     metadata:
       labels:
         app: eventing-controller
-        eventing.knative.dev/release: "v20220215-0326f92dd"
+        eventing.knative.dev/release: "v20220222-2a69eec1e"
         app.kubernetes.io/component: eventing-controller
-        app.kubernetes.io/version: "20220215-0326f92dd"
+        app.kubernetes.io/version: "20220222-2a69eec1e"
         app.kubernetes.io/name: knative-eventing
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
@@ -816,7 +816,7 @@ spec:
       containers:
         - name: eventing-controller
           terminationMessagePolicy: FallbackToLogsOnError
-          image: gcr.io/knative-nightly/knative.dev/eventing/cmd/controller@sha256:cfb93fd5b80517d29cc3995de516bb6c2f2dba83e965e30a0e090625d9301e18
+          image: gcr.io/knative-nightly/knative.dev/eventing/cmd/controller@sha256:4fd2963f36320cfe30295566152bede699a655fc50258a646cd4b218c229c88c
           resources:
             requests:
               cpu: 100m
@@ -834,7 +834,7 @@ spec:
               value: knative.dev/eventing
             # APIServerSource
             - name: APISERVER_RA_IMAGE
-              value: gcr.io/knative-nightly/knative.dev/eventing/cmd/apiserver_receive_adapter@sha256:06df8ffa4fe97fa1f007570768f6eb09221d4489e11b9503b5e00ef97d5d9865
+              value: gcr.io/knative-nightly/knative.dev/eventing/cmd/apiserver_receive_adapter@sha256:7df98fcae4a86f9fdf5bd68e3e4cd490efa01b3d60e353990f38f648fa05d4bd
             - name: POD_NAME
               valueFrom:
                 fieldRef:
@@ -883,9 +883,9 @@ metadata:
   name: pingsource-mt-adapter
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     app.kubernetes.io/component: pingsource-mt-adapter
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   # when set to 0 (and only 0) will be set to 1 when the first PingSource is created.
@@ -898,9 +898,9 @@ spec:
     metadata:
       labels:
         !!merge <<: *labels
-        eventing.knative.dev/release: "v20220215-0326f92dd"
+        eventing.knative.dev/release: "v20220222-2a69eec1e"
         app.kubernetes.io/component: pingsource-mt-adapter
-        app.kubernetes.io/version: "20220215-0326f92dd"
+        app.kubernetes.io/version: "20220222-2a69eec1e"
         app.kubernetes.io/name: knative-eventing
     spec:
       affinity:
@@ -914,7 +914,7 @@ spec:
       enableServiceLinks: false
       containers:
         - name: dispatcher
-          image: gcr.io/knative-nightly/knative.dev/eventing/cmd/mtping@sha256:06315136b64c88e5d08cfc69ea4bd93be60ffeecab91a277188e4e28f2299f6f
+          image: gcr.io/knative-nightly/knative.dev/eventing/cmd/mtping@sha256:a8cee94a279da48b332cba8afd384811e754126771e1491059a973307642344e
           env:
             - name: SYSTEM_NAMESPACE
               value: ''
@@ -979,9 +979,9 @@ metadata:
   name: eventing-webhook
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     app.kubernetes.io/component: eventing-webhook
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   scaleTargetRef:
@@ -1005,9 +1005,9 @@ metadata:
   name: eventing-webhook
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     app.kubernetes.io/component: eventing-webhook
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   minAvailable: 80%
@@ -1036,9 +1036,9 @@ metadata:
   name: eventing-webhook
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     app.kubernetes.io/component: eventing-webhook
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   selector:
@@ -1049,9 +1049,9 @@ spec:
     metadata:
       labels:
         !!merge <<: *labels
-        eventing.knative.dev/release: "v20220215-0326f92dd"
+        eventing.knative.dev/release: "v20220222-2a69eec1e"
         app.kubernetes.io/component: eventing-webhook
-        app.kubernetes.io/version: "20220215-0326f92dd"
+        app.kubernetes.io/version: "20220222-2a69eec1e"
         app.kubernetes.io/name: knative-eventing
     spec:
       # To avoid node becoming SPOF, spread our replicas to different nodes.
@@ -1071,7 +1071,7 @@ spec:
           terminationMessagePolicy: FallbackToLogsOnError
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/eventing/cmd/webhook@sha256:37ec49e5eef5ebdf94293667db40fa8152827375156a50a8d13203d2cd1182c0
+          image: gcr.io/knative-nightly/knative.dev/eventing/cmd/webhook@sha256:91236f585777a2d14e34a796105f5fcb744fd6ab5a448196ebe40828e54da71d
           resources:
             requests:
               # taken from serving.
@@ -1140,10 +1140,10 @@ apiVersion: v1
 kind: Service
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     role: eventing-webhook
     app.kubernetes.io/component: eventing-webhook
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   name: eventing-webhook
   namespace: knative-eventing
@@ -1175,11 +1175,11 @@ kind: CustomResourceDefinition
 metadata:
   creationTimestamp: null
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     # TODO add schemas and descriptions
@@ -1391,10 +1391,10 @@ kind: CustomResourceDefinition
 metadata:
   name: brokers.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: eventing.knative.dev
@@ -1558,11 +1558,11 @@ kind: CustomResourceDefinition
 metadata:
   name: channels.messaging.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     messaging.knative.dev/subscribable: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: messaging.knative.dev
@@ -1830,11 +1830,11 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   name: containersources.sources.knative.dev
 spec:
@@ -1984,9 +1984,9 @@ kind: CustomResourceDefinition
 metadata:
   name: eventtypes.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: eventing.knative.dev
@@ -2113,10 +2113,10 @@ kind: CustomResourceDefinition
 metadata:
   name: parallels.flows.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: flows.knative.dev
@@ -2368,11 +2368,11 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     # TODO add schemas and descriptions
@@ -2559,10 +2559,10 @@ kind: CustomResourceDefinition
 metadata:
   name: sequences.flows.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: flows.knative.dev
@@ -2879,12 +2879,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     duck.knative.dev/binding: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   name: sinkbindings.sources.knative.dev
 spec:
@@ -3071,9 +3071,9 @@ kind: CustomResourceDefinition
 metadata:
   name: subscriptions.messaging.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: messaging.knative.dev
@@ -3283,9 +3283,9 @@ kind: CustomResourceDefinition
 metadata:
   name: triggers.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: eventing.knative.dev
@@ -3469,8 +3469,8 @@ kind: ClusterRole
 metadata:
   name: addressable-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 aggregationRule:
   clusterRoleSelectors:
@@ -3483,9 +3483,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: service-addressable-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "addressable-resolver" role.
 rules:
@@ -3503,9 +3503,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: serving-addressable-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "addressable-resolver" role.
 rules:
@@ -3526,9 +3526,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: channel-addressable-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "addressable-resolver" role.
 rules:
@@ -3553,9 +3553,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: broker-addressable-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "addressable-resolver" role.
 rules:
@@ -3574,9 +3574,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: flows-addressable-resolver
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "addressable-resolver" role.
 rules:
@@ -3612,8 +3612,8 @@ kind: ClusterRole
 metadata:
   name: eventing-broker-filter
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups:
@@ -3639,8 +3639,8 @@ kind: ClusterRole
 metadata:
   name: eventing-broker-ingress
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups:
@@ -3657,8 +3657,8 @@ kind: ClusterRole
 metadata:
   name: eventing-config-reader
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups:
@@ -3691,8 +3691,8 @@ kind: ClusterRole
 metadata:
   name: channelable-manipulator
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 aggregationRule:
   clusterRoleSelectors:
@@ -3705,9 +3705,9 @@ kind: ClusterRole
 metadata:
   name: meta-channelable-manipulator
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/channelable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "channelable-manipulator" role.
 rules:
@@ -3745,9 +3745,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-eventing-namespaced-admin
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     rbac.authorization.k8s.io/aggregate-to-admin: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["eventing.knative.dev"]
@@ -3759,9 +3759,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-messaging-namespaced-admin
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     rbac.authorization.k8s.io/aggregate-to-admin: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["messaging.knative.dev"]
@@ -3773,9 +3773,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-flows-namespaced-admin
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     rbac.authorization.k8s.io/aggregate-to-admin: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["flows.knative.dev"]
@@ -3787,9 +3787,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-sources-namespaced-admin
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     rbac.authorization.k8s.io/aggregate-to-admin: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["sources.knative.dev"]
@@ -3801,9 +3801,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: knative-bindings-namespaced-admin
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     rbac.authorization.k8s.io/aggregate-to-admin: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["bindings.knative.dev"]
@@ -3816,8 +3816,8 @@ metadata:
   name: knative-eventing-namespaced-edit
   labels:
     rbac.authorization.k8s.io/aggregate-to-edit: "true"
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["eventing.knative.dev", "messaging.knative.dev", "sources.knative.dev", "flows.knative.dev", "bindings.knative.dev"]
@@ -3830,8 +3830,8 @@ metadata:
   name: knative-eventing-namespaced-view
   labels:
     rbac.authorization.k8s.io/aggregate-to-view: "true"
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups: ["eventing.knative.dev", "messaging.knative.dev", "sources.knative.dev", "flows.knative.dev", "bindings.knative.dev"]
@@ -3858,8 +3858,8 @@ kind: ClusterRole
 metadata:
   name: knative-eventing-controller
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups:
@@ -3994,8 +3994,8 @@ kind: ClusterRole
 metadata:
   name: knative-eventing-pingsource-mt-adapter
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups:
@@ -4062,8 +4062,8 @@ kind: ClusterRole
 metadata:
   name: podspecable-binding
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 aggregationRule:
   clusterRoleSelectors:
@@ -4076,9 +4076,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: builtin-podspecable-binding
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/podspecable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "podspecable-binding role.
 rules:
@@ -4124,8 +4124,8 @@ kind: ClusterRole
 metadata:
   name: source-observer
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 aggregationRule:
   clusterRoleSelectors:
@@ -4138,9 +4138,9 @@ apiVersion: rbac.authorization.k8s.io/v1
 metadata:
   name: eventing-sources-source-observer
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     duck.knative.dev/source: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # Do not use this role directly. These rules will be added to the "source-observer" role.
 rules:
@@ -4176,8 +4176,8 @@ kind: ClusterRole
 metadata:
   name: knative-eventing-sources-controller
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   - apiGroups:
@@ -4263,8 +4263,8 @@ kind: ClusterRole
 metadata:
   name: knative-eventing-webhook
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   # For watching logging configuration and getting certs.
@@ -4363,8 +4363,8 @@ metadata:
   namespace: knative-eventing
   name: knative-eventing-webhook
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 rules:
   # For manipulating certs into secrets.
@@ -4400,8 +4400,8 @@ kind: ValidatingWebhookConfiguration
 metadata:
   name: config.webhook.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 webhooks:
   - admissionReviewVersions: ["v1", "v1beta1"]
@@ -4438,8 +4438,8 @@ kind: MutatingWebhookConfiguration
 metadata:
   name: webhook.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 webhooks:
   - admissionReviewVersions: ["v1", "v1beta1"]
@@ -4472,8 +4472,8 @@ kind: ValidatingWebhookConfiguration
 metadata:
   name: validation.webhook.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 webhooks:
   - admissionReviewVersions: ["v1", "v1beta1"]
@@ -4507,8 +4507,8 @@ metadata:
   name: eventing-webhook-certs
   namespace: knative-eventing
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 # The data is populated at install time.
 
@@ -4532,8 +4532,8 @@ kind: MutatingWebhookConfiguration
 metadata:
   name: sinkbindings.webhook.sources.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 webhooks:
   - admissionReviewVersions: ["v1", "v1beta1"]
diff --git a/third_party/eventing-latest/eventing-crds.yaml b/third_party/eventing-latest/eventing-crds.yaml
index d0caae31b..49448989d 100644
--- a/third_party/eventing-latest/eventing-crds.yaml
+++ b/third_party/eventing-latest/eventing-crds.yaml
@@ -17,11 +17,11 @@ kind: CustomResourceDefinition
 metadata:
   creationTimestamp: null
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     # TODO add schemas and descriptions
@@ -233,10 +233,10 @@ kind: CustomResourceDefinition
 metadata:
   name: brokers.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: eventing.knative.dev
@@ -400,11 +400,11 @@ kind: CustomResourceDefinition
 metadata:
   name: channels.messaging.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     messaging.knative.dev/subscribable: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: messaging.knative.dev
@@ -672,11 +672,11 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   name: containersources.sources.knative.dev
 spec:
@@ -826,9 +826,9 @@ kind: CustomResourceDefinition
 metadata:
   name: eventtypes.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: eventing.knative.dev
@@ -955,10 +955,10 @@ kind: CustomResourceDefinition
 metadata:
   name: parallels.flows.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: flows.knative.dev
@@ -1210,11 +1210,11 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   annotations:
     # TODO add schemas and descriptions
@@ -1401,10 +1401,10 @@ kind: CustomResourceDefinition
 metadata:
   name: sequences.flows.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
     duck.knative.dev/addressable: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: flows.knative.dev
@@ -1721,12 +1721,12 @@ apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
 metadata:
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     eventing.knative.dev/source: "true"
     duck.knative.dev/source: "true"
     duck.knative.dev/binding: "true"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
   name: sinkbindings.sources.knative.dev
 spec:
@@ -1913,9 +1913,9 @@ kind: CustomResourceDefinition
 metadata:
   name: subscriptions.messaging.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: messaging.knative.dev
@@ -2125,9 +2125,9 @@ kind: CustomResourceDefinition
 metadata:
   name: triggers.eventing.knative.dev
   labels:
-    eventing.knative.dev/release: "v20220215-0326f92dd"
+    eventing.knative.dev/release: "v20220222-2a69eec1e"
     knative.dev/crd-install: "true"
-    app.kubernetes.io/version: "20220215-0326f92dd"
+    app.kubernetes.io/version: "20220222-2a69eec1e"
     app.kubernetes.io/name: knative-eventing
 spec:
   group: eventing.knative.dev
diff --git a/vendor/knative.dev/eventing/test/e2e-rekt-tests.sh b/vendor/knative.dev/eventing/test/e2e-rekt-tests.sh
index 33c535b09..1826ef4f1 100644
--- a/vendor/knative.dev/eventing/test/e2e-rekt-tests.sh
+++ b/vendor/knative.dev/eventing/test/e2e-rekt-tests.sh
@@ -30,11 +30,12 @@ source "$(dirname "$0")/e2e-common.sh"
 
 # Script entry point.
 
-initialize $@ --skip-istio-addon
+initialize $@ --skip-istio-addon --min-nodes=4 --max-nodes=4
 
 export SKIP_UPLOAD_TEST_IMAGES="true"
 
 echo "Running E2E Reconciler Tests"
-go_test_e2e -timeout=1h -parallel=20 ./test/rekt || fail_test
+
+go_test_e2e -timeout=1h ./test/rekt || fail_test
 
 success
diff --git a/vendor/knative.dev/reconciler-test/pkg/manifest/installer.go b/vendor/knative.dev/reconciler-test/pkg/manifest/installer.go
index 150692c56..da10f5937 100644
--- a/vendor/knative.dev/reconciler-test/pkg/manifest/installer.go
+++ b/vendor/knative.dev/reconciler-test/pkg/manifest/installer.go
@@ -131,12 +131,22 @@ func ImagesFromFS(fsys fs.FS) []string {
 	return images
 }
 
-// isWebhookError is a workaround for https://github.com/knative/pkg/issues/1509.
 func isWebhookError(err error) bool {
 	str := err.Error()
+
+	// isEOFError is a workaround for https://github.com/knative/pkg/issues/1509.
 	// Example error:
 	// Internal error occurred: failed calling webhook "defaulting.webhook.kafka.eventing.knative.dev": Post "https://kafka-webhook-eventing.knative-eventing.svc:443/defaulting?timeout=2s": EOF
-	return strings.Contains(str, "webhook") &&
+	isEOFError := strings.Contains(str, "webhook") &&
 		strings.Contains(str, "https") &&
 		strings.Contains(str, "EOF")
+
+	// In addition to the above error we're getting a "context deadline exceeded" generic error
+	// Example error:
+	// Internal error occurred: failed calling webhook "inmemorychannel.eventing.knative.dev": failed to call webhook: Post "https://inmemorychannel-webhook.knative-eventing-9zkohswwf9.svc:443/defaulting?timeout=10s": context deadline exceeded
+	isContextDeadlineExceededError := strings.Contains(str, "webhook") &&
+		strings.Contains(str, "https") &&
+		strings.Contains(str, "context deadline exceeded")
+
+	return isEOFError || isContextDeadlineExceededError
 }