Repository: knative/serving
Pull request #10105 (2020-11-13 01:29:10)

[master] Upgrade to latest dependencies
Produced via:
```shell
./hack/update-deps.sh --upgrade
./hack/update-codegen.sh
```
Cron. -knative-prow-robot
/cc knative/serving-writers
/assign knative/serving-writers

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

This pull-request has been approved by: *<a href="https://github.com/knative/serving/pull/10105#" title="Author self-approved">knative-automation</a>*
To complete the [pull request process](https://git.k8s.io/community/contributors/guide/owners.md#the-code-review-process), please assign **vagababov** after the PR has been reviewed.
You can assign the PR to them by writing `/assign @vagababov` 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%2Fserving).

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

- **[OWNERS](https://github.com/knative/serving/blob/master/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":["vagababov"]} -->
codecov[bot]: # [Codecov](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=h1) Report
> Merging [#10105](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=desc) (a75ce0c) into [master](https://codecov.io/gh/knative/serving/commit/1dd43e9d8b03356507cc125b00c1f5925391f66f?el=desc) (1dd43e9) will **decrease** coverage by `0.03%`.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/knative/serving/pull/10105/graphs/tree.svg?width=650&height=150&src=pr&token=MPpDfAj4Ui)](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master   #10105      +/-   ##
==========================================
- Coverage   87.98%   87.95%   -0.04%     
==========================================
  Files         185      185              
  Lines        8717     8717              
==========================================
- Hits         7670     7667       -3     
- Misses        797      798       +1     
- Partials      250      252       +2     
```


| [Impacted Files](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pkg/reconciler/configuration/configuration.go](https://codecov.io/gh/knative/serving/pull/10105/diff?src=pr&el=tree#diff-cGtnL3JlY29uY2lsZXIvY29uZmlndXJhdGlvbi9jb25maWd1cmF0aW9uLmdv) | `84.37% <0.00%> (-2.35%)` | :arrow_down: |
| [pkg/reconciler/autoscaling/kpa/scaler.go](https://codecov.io/gh/knative/serving/pull/10105/diff?src=pr&el=tree#diff-cGtnL3JlY29uY2lsZXIvYXV0b3NjYWxpbmcva3BhL3NjYWxlci5nbw==) | `88.57% <0.00%> (-1.43%)` | :arrow_down: |
| [pkg/autoscaler/statforwarder/forwarder.go](https://codecov.io/gh/knative/serving/pull/10105/diff?src=pr&el=tree#diff-cGtnL2F1dG9zY2FsZXIvc3RhdGZvcndhcmRlci9mb3J3YXJkZXIuZ28=) | `82.44% <0.00%> (+1.06%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=footer). Last update [1dd43e9...a75ce0c](https://codecov.io/gh/knative/serving/pull/10105?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

knative-prow-robot: @knative-automation: The following test **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-upgrade-tests | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327060931821178880) | `/test pull-knative-serving-upgrade-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
ZhiminXiang: /retest
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-upgrade-tests | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327060931821178880) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327060931854733312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-upgrade-tests | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327060931821178880) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327060931854733312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327060931837956096) | `/test pull-knative-serving-istio-stable-no-mesh`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327060931854733312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327060931837956096) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-upgrade-tests | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327068945055748096) | `/test pull-knative-serving-upgrade-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327060931854733312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327060931837956096) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-upgrade-tests | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327239916983160832) | `/test pull-knative-serving-upgrade-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh | a75ce0c8d21991a50994737367f2d1c518495fdb | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327060931837956096) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-upgrade-tests | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327239916983160832) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327239917016715264) | `/test pull-knative-serving-istio-stable-no-mesh-tls`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-upgrade-tests | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1327239916983160832) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327239917016715264) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327239916999938048) | `/test pull-knative-serving-istio-stable-no-mesh`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
tcnghia: /retest
knative-prow-robot: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/knative/serving/pull/10105#" title="Author self-approved">knative-automation</a>*, *<a href="https://github.com/knative/serving/pull/10105#pullrequestreview-530306447" title="LGTM">tcnghia</a>*

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

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/serving/blob/master/OWNERS)~~ [tcnghia]

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":[]} -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327239916999938048) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327316917513359360) | `/test pull-knative-serving-istio-stable-no-mesh-tls`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327316917513359360) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327316917496582144) | `/test pull-knative-serving-istio-stable-no-mesh`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: New changes are detected. LGTM label has been removed.
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327316917513359360) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327316917496582144) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-unit-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-unit-tests/1328149449104429056) | `/test pull-knative-serving-unit-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327316917513359360) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1327316917496582144) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-unit-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-unit-tests/1328149449104429056) | `/test pull-knative-serving-unit-tests`
pull-knative-serving-upgrade-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328149449125400576) | `/test pull-knative-serving-upgrade-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | 2f7a44a9aef968d47900e159e133aeb28fd71ef2 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1327316917513359360) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-unit-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-unit-tests/1328149449104429056) | `/test pull-knative-serving-unit-tests`
pull-knative-serving-upgrade-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328149449125400576) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328149449142177792) | `/test pull-knative-serving-istio-stable-no-mesh`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-unit-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-unit-tests/1328149449104429056) | `/test pull-knative-serving-unit-tests`
pull-knative-serving-upgrade-tests | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328149449125400576) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328149449142177792) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-istio-stable-no-mesh-tls | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328149449163149312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328149449142177792) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-istio-stable-no-mesh-tls | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328149449163149312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-upgrade-tests | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328326822223417344) | `/test pull-knative-serving-upgrade-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh | 37e94cff606e888c2c4a7c30ce06ce0a3dd005e0 | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328149449142177792) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-upgrade-tests | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328326822223417344) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328326822261166080) | `/test pull-knative-serving-istio-stable-no-mesh-tls`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-upgrade-tests | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328326822223417344) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328326822261166080) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328326822244388864) | `/test pull-knative-serving-istio-stable-no-mesh`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
dprotaso: /retest
dprotaso: /lgtm
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh-tls | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328326822261166080) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328326822244388864) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-upgrade-tests | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328416312233299968) | `/test pull-knative-serving-upgrade-tests`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-istio-stable-no-mesh | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328326822244388864) | `/test pull-knative-serving-istio-stable-no-mesh`
pull-knative-serving-upgrade-tests | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328416312233299968) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328416312279437312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
knative-prow-robot: @knative-automation: The following tests **failed**, say `/retest` to rerun all failed tests:

Test name | Commit | Details | Rerun command
--- | --- | --- | ---
pull-knative-serving-upgrade-tests | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-upgrade-tests/1328416312233299968) | `/test pull-knative-serving-upgrade-tests`
pull-knative-serving-istio-stable-no-mesh-tls | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh-tls/1328416312279437312) | `/test pull-knative-serving-istio-stable-no-mesh-tls`
pull-knative-serving-istio-stable-no-mesh | 4da158bfd8ffb7feefbee1bf5b7246f386f8c9ce | [link](https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_serving/10105/pull-knative-serving-istio-stable-no-mesh/1328416312254271488) | `/test pull-knative-serving-istio-stable-no-mesh`

[Full PR test history](https://gubernator.knative.dev/pr/knative_serving/10105). [Your PR dashboard](https://gubernator.knative.dev/pr/knative-automation).

<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. I understand the commands that are listed [here](https://go.k8s.io/bot-commands).
</details>
<!-- test report -->
dprotaso: /retest
knative-prow-robot: New changes are detected. LGTM label has been removed.

Patch:
diff --git a/go.mod b/go.mod
index 8907930c9..f48c5c79b 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
 module knative.dev/serving
 
-go 1.14
+go 1.15
 
 require (
 	github.com/davecgh/go-spew v1.1.1
@@ -34,10 +34,10 @@ require (
 	k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
 	k8s.io/code-generator v0.18.8
 	k8s.io/kube-openapi v0.0.0-20200410145947-bcb3869e6f29
-	knative.dev/caching v0.0.0-20201104174804-1a305923cfbe
-	knative.dev/hack v0.0.0-20201103151104-3d5abc3a0075
-	knative.dev/networking v0.0.0-20201103163404-b9f80f4537af
-	knative.dev/pkg v0.0.0-20201103163404-5514ab0c1fdf
+	knative.dev/caching v0.0.0-20201113182901-ee88f744543c
+	knative.dev/hack v0.0.0-20201112185459-01a34c573bd8
+	knative.dev/networking v0.0.0-20201116165202-57530ee4cbfc
+	knative.dev/pkg v0.0.0-20201116214403-188df22c59ac
 )
 
 replace (
diff --git a/go.sum b/go.sum
index 67ad21792..13cac411b 100644
--- a/go.sum
+++ b/go.sum
@@ -1182,18 +1182,17 @@ k8s.io/legacy-cloud-providers v0.18.8/go.mod h1:tgp4xYf6lvjrWnjQwTOPvWQE9IVqSBGP
 k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
 k8s.io/utils v0.0.0-20200603063816-c1c6865ac451 h1:v8ud2Up6QK1lNOKFgiIVrZdMg7MpmSnvtrOieolJKoE=
 k8s.io/utils v0.0.0-20200603063816-c1c6865ac451/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
-knative.dev/caching v0.0.0-20201104174804-1a305923cfbe h1:isrtdMtP9EvJuYn7vIw0yNv8+wpRVwULMuiGlTOduzA=
-knative.dev/caching v0.0.0-20201104174804-1a305923cfbe/go.mod h1:twy5Yz5LtFbmihtbBG0CcgwJzV5d8RUBoGkZFs7uRQs=
-knative.dev/hack v0.0.0-20201102193445-9349aeeb6701 h1:at6mUfi8gHWlBRd/qNM66JvUQ4C964cOpsy9hzac+7c=
-knative.dev/hack v0.0.0-20201102193445-9349aeeb6701/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
+knative.dev/caching v0.0.0-20201113182901-ee88f744543c h1:eVYnIu0dOO/htpbcFUGdawVhDH27A6YAVxds+URb0I8=
+knative.dev/caching v0.0.0-20201113182901-ee88f744543c/go.mod h1:gGr7clElRu3BOrGHex96ZjEPIM7+5dDd5XHeIRle4vE=
 knative.dev/hack v0.0.0-20201103151104-3d5abc3a0075 h1:YAgWplKIy4O5e3F5vUUECmXAAyZ0M5ymo6fCt1jeZhs=
 knative.dev/hack v0.0.0-20201103151104-3d5abc3a0075/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
-knative.dev/networking v0.0.0-20201103163404-b9f80f4537af h1:xPS3bRfp30XHb69B0F9Pgv4Nc2eTfJHWR0TzVRHf1hU=
-knative.dev/networking v0.0.0-20201103163404-b9f80f4537af/go.mod h1:0OaR4FLbs3Xn6UjeX1zYql9RWO8sLTO/ZMJS4jDbfFE=
-knative.dev/pkg v0.0.0-20201103150904-7f1970af5b6f h1:Ezruo8zcoA6RA8KiP8JH4K7RSjkddjlhvP9CcooWO4Q=
-knative.dev/pkg v0.0.0-20201103150904-7f1970af5b6f/go.mod h1:2hMxAUviPH2nl3BuODx5L6shYCdzA+7SPzQpdkcg9wc=
-knative.dev/pkg v0.0.0-20201103163404-5514ab0c1fdf h1:QwULgRwcv6R3Ya1GZlf/E1atcaGUNw4DKjxSQUfcR6U=
-knative.dev/pkg v0.0.0-20201103163404-5514ab0c1fdf/go.mod h1:cuKOgUvJvnWHIps/apCXX8wZuMlT0dyMZLqRQfsENbQ=
+knative.dev/hack v0.0.0-20201112185459-01a34c573bd8 h1:RNbZsAjhswBPtl4C5C5gEFX5/GfWIOZQxfYD9DhkHdY=
+knative.dev/hack v0.0.0-20201112185459-01a34c573bd8/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI=
+knative.dev/networking v0.0.0-20201116165202-57530ee4cbfc h1:EULBfbpAFt/k2Fz6N/jwv3ZbbQHJOPeS06YXyo3CJO8=
+knative.dev/networking v0.0.0-20201116165202-57530ee4cbfc/go.mod h1:DCZ5pdCpaPkgvwSvgFzDXSDjZ2dByl+tMIHlXV4wvws=
+knative.dev/pkg v0.0.0-20201112201059-93fedf141385/go.mod h1:5vNHKNtZtzlNeNrcDoUtZIn+dma/8DjmpjfdHiwoQyM=
+knative.dev/pkg v0.0.0-20201116214403-188df22c59ac h1:Oa9KWJQdLWIe7G6sPL8OK8ADynJsOJmZOwYZxPlxYSI=
+knative.dev/pkg v0.0.0-20201116214403-188df22c59ac/go.mod h1:4kXxEyYWdNk3pUR6/cx/ToMKG/dAJvEpDYUfV5RYHeU=
 pgregory.net/rapid v0.3.3 h1:jCjBsY4ln4Atz78QoBWxUEvAHaFyNDQg9+WU62aCn1U=
 pgregory.net/rapid v0.3.3/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU=
 rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
diff --git a/pkg/autoscaler/metrics/collector.go b/pkg/autoscaler/metrics/collector.go
index ce57d6810..32492c2a9 100644
--- a/pkg/autoscaler/metrics/collector.go
+++ b/pkg/autoscaler/metrics/collector.go
@@ -64,7 +64,7 @@ type Collector interface {
 	// Record allows stats to be captured that came from outside the Collector.
 	Record(key types.NamespacedName, now time.Time, stat Stat)
 	// Delete deletes a Metric and halts collection.
-	Delete(string, string) error
+	Delete(string, string)
 	// Watch registers a singleton function to call when a specific collector's status changes.
 	// The passed name is the namespace/name of the metric owned by the respective collector.
 	Watch(func(types.NamespacedName))
@@ -136,7 +136,7 @@ func (c *MetricCollector) CreateOrUpdate(metric *av1alpha1.Metric) error {
 }
 
 // Delete deletes a Metric and halts collection.
-func (c *MetricCollector) Delete(namespace, name string) error {
+func (c *MetricCollector) Delete(namespace, name string) {
 	c.collectionsMutex.Lock()
 	defer c.collectionsMutex.Unlock()
 
@@ -145,7 +145,6 @@ func (c *MetricCollector) Delete(namespace, name string) error {
 		collection.close()
 		delete(c.collections, key)
 	}
-	return nil
 }
 
 // Record records a stat that's been generated outside of the metric collector.
diff --git a/pkg/autoscaler/scaling/autoscaler.go b/pkg/autoscaler/scaling/autoscaler.go
index fe9d2324b..be2de8bb1 100644
--- a/pkg/autoscaler/scaling/autoscaler.go
+++ b/pkg/autoscaler/scaling/autoscaler.go
@@ -127,12 +127,11 @@ func newAutoscaler(
 }
 
 // Update reconfigures the UniScaler according to the DeciderSpec.
-func (a *autoscaler) Update(deciderSpec *DeciderSpec) error {
+func (a *autoscaler) Update(deciderSpec *DeciderSpec) {
 	a.specMux.Lock()
 	defer a.specMux.Unlock()
 
 	a.deciderSpec = deciderSpec
-	return nil
 }
 
 // Scale calculates the desired scale based on current statistics given the current time.
diff --git a/pkg/autoscaler/scaling/multiscaler.go b/pkg/autoscaler/scaling/multiscaler.go
index 58d63e466..e5aeca353 100644
--- a/pkg/autoscaler/scaling/multiscaler.go
+++ b/pkg/autoscaler/scaling/multiscaler.go
@@ -122,7 +122,7 @@ type UniScaler interface {
 	Scale(context.Context, time.Time) ScaleResult
 
 	// Update reconfigures the UniScaler according to the DeciderSpec.
-	Update(*DeciderSpec) error
+	Update(*DeciderSpec)
 }
 
 // UniScalerFactory creates a UniScaler for a given PA using the given dynamic configuration.
@@ -256,7 +256,7 @@ func (m *MultiScaler) Update(_ context.Context, decider *Decider) (*Decider, err
 }
 
 // Delete stops and removes a Decider.
-func (m *MultiScaler) Delete(_ context.Context, namespace, name string) error {
+func (m *MultiScaler) Delete(_ context.Context, namespace, name string) {
 	key := types.NamespacedName{Namespace: namespace, Name: name}
 	m.scalersMutex.Lock()
 	defer m.scalersMutex.Unlock()
@@ -264,7 +264,6 @@ func (m *MultiScaler) Delete(_ context.Context, namespace, name string) error {
 		close(scaler.stopCh)
 		delete(m.scalers, key)
 	}
-	return nil
 }
 
 // Watch registers a singleton function to call when DeciderStatus is updated.
diff --git a/pkg/queue/readiness/probe.go b/pkg/queue/readiness/probe.go
index 6ce77fde2..ba7463877 100644
--- a/pkg/queue/readiness/probe.go
+++ b/pkg/queue/readiness/probe.go
@@ -143,24 +143,36 @@ func (p *Probe) probeContainerImpl() bool {
 }
 
 func (p *Probe) doProbe(probe func(time.Duration) error) error {
-	if p.IsAggressive() {
-		return wait.PollImmediate(retryInterval, p.pollTimeout, func() (bool, error) {
-			if err := probe(aggressiveProbeTimeout); err != nil {
-				fmt.Fprintln(p.out, "aggressive probe error: ", err)
-				// Reset count of consecutive successes to zero.
-				p.count = 0
-				return false, nil
-			}
-
-			p.count++
-
-			// Return success if count of consecutive successes is equal to or greater
-			// than the probe's SuccessThreshold.
-			return p.count >= p.SuccessThreshold, nil
-		})
+	if !p.IsAggressive() {
+		return probe(time.Duration(p.TimeoutSeconds) * time.Second)
 	}
 
-	return probe(time.Duration(p.TimeoutSeconds) * time.Second)
+	var failCount int
+	var lastProbeErr error
+	pollErr := wait.PollImmediate(retryInterval, p.pollTimeout, func() (bool, error) {
+		if err := probe(aggressiveProbeTimeout); err != nil {
+			// Reset count of consecutive successes to zero.
+			p.count = 0
+			// Don't log this now since we probe every 50ms and some failures are
+			// expected if the user container takes longer than that to start up.
+			// We'll log the lastProbeErr if we don't eventually succeed.
+			lastProbeErr = err
+			failCount++
+			return false, nil
+		}
+
+		p.count++
+
+		// Return success if count of consecutive successes is equal to or greater
+		// than the probe's SuccessThreshold.
+		return p.count >= p.SuccessThreshold, nil
+	})
+
+	if lastProbeErr != nil {
+		fmt.Fprintf(p.out, "aggressive probe error (failed %d times): %v\n", failCount, lastProbeErr)
+	}
+
+	return pollErr
 }
 
 // tcpProbe function executes TCP probe once if its standard probe
diff --git a/pkg/reconciler/autoscaling/kpa/resources/decider.go b/pkg/reconciler/autoscaling/kpa/resources/decider.go
index a2cb42ab2..52e7979b4 100644
--- a/pkg/reconciler/autoscaling/kpa/resources/decider.go
+++ b/pkg/reconciler/autoscaling/kpa/resources/decider.go
@@ -35,7 +35,7 @@ type Deciders interface {
 	Create(ctx context.Context, decider *scaling.Decider) (*scaling.Decider, error)
 
 	// Delete removes the Decider resource for a given key, returning any errors.
-	Delete(ctx context.Context, namespace, name string) error
+	Delete(ctx context.Context, namespace, name string)
 
 	// Watch registers a function to call when Decider change.
 	Watch(watcher func(types.NamespacedName))
diff --git a/pkg/reconciler/route/reconcile_resources.go b/pkg/reconciler/route/reconcile_resources.go
index 227ce7135..109e38baa 100644
--- a/pkg/reconciler/route/reconcile_resources.go
+++ b/pkg/reconciler/route/reconcile_resources.go
@@ -41,16 +41,26 @@ import (
 	v1 "knative.dev/serving/pkg/apis/serving/v1"
 	"knative.dev/serving/pkg/reconciler/route/config"
 	"knative.dev/serving/pkg/reconciler/route/resources"
+	"knative.dev/serving/pkg/reconciler/route/resources/names"
 	"knative.dev/serving/pkg/reconciler/route/traffic"
 )
 
-func (c *Reconciler) reconcileIngress(ctx context.Context, r *v1.Route, desired *netv1alpha1.Ingress, tc *traffic.Config) (*netv1alpha1.Ingress, error) {
+func (c *Reconciler) reconcileIngress(
+	ctx context.Context, r *v1.Route, tc *traffic.Config,
+	tls []netv1alpha1.IngressTLS,
+	ingressClass string,
+	acmeChallenges ...netv1alpha1.HTTP01Challenge,
+) (*netv1alpha1.Ingress, error) {
 	recorder := controller.GetEventRecorder(ctx)
-	ingress, err := c.ingressLister.Ingresses(desired.Namespace).Get(desired.Name)
 
+	desired, err := resources.MakeIngress(ctx, r, tc, tls, ingressClass, acmeChallenges...)
+	if err != nil {
+		return nil, err
+	}
 	// Get the current rollout state as described by the traffic.
 	curRO := tc.BuildRollout()
 
+	ingress, err := c.ingressLister.Ingresses(r.Namespace).Get(names.Ingress(r))
 	if apierrs.IsNotFound(err) {
 		// If there is no exisiting Ingress, then current rollout is _the_ rollout.
 		desired.Annotations = kmeta.UnionMaps(desired.Annotations, map[string]string{
@@ -87,6 +97,7 @@ func (c *Reconciler) reconcileIngress(ctx context.Context, r *v1.Route, desired
 			origin.Spec = desired.Spec
 			origin.Annotations = desired.Annotations
 			origin.Labels = desired.Labels
+
 			updated, err := c.netclient.NetworkingV1alpha1().Ingresses(origin.Namespace).Update(
 				ctx, origin, metav1.UpdateOptions{})
 			if err != nil {
diff --git a/pkg/reconciler/route/route.go b/pkg/reconciler/route/route.go
index b158b3d0e..c149d4833 100644
--- a/pkg/reconciler/route/route.go
+++ b/pkg/reconciler/route/route.go
@@ -154,8 +154,7 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, r *v1.Route) pkgreconcil
 	}
 
 	// Reconcile ingress and its children resources.
-	ingress, err := c.reconcileIngressResources(ctx, r, traffic, tls, ingressClassForRoute(ctx, r), acmeChallenges...)
-
+	ingress, err := c.reconcileIngress(ctx, r, traffic, tls, ingressClassForRoute(ctx, r), acmeChallenges...)
 	if err != nil {
 		return err
 	}
@@ -175,22 +174,6 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, r *v1.Route) pkgreconcil
 	return nil
 }
 
-func (c *Reconciler) reconcileIngressResources(ctx context.Context, r *v1.Route, tc *traffic.Config, tls []netv1alpha1.IngressTLS,
-	ingressClass string, acmeChallenges ...netv1alpha1.HTTP01Challenge) (*netv1alpha1.Ingress, error) {
-
-	desired, err := resources.MakeIngress(ctx, r, tc, tls, ingressClass, acmeChallenges...)
-	if err != nil {
-		return nil, err
-	}
-
-	ingress, err := c.reconcileIngress(ctx, r, desired, tc)
-	if err != nil {
-		return nil, err
-	}
-
-	return ingress, nil
-}
-
 func (c *Reconciler) tls(ctx context.Context, host string, r *v1.Route, traffic *traffic.Config) ([]netv1alpha1.IngressTLS, []netv1alpha1.HTTP01Challenge, error) {
 	tls := []netv1alpha1.IngressTLS{}
 	if !autoTLSEnabled(ctx, r) {
diff --git a/pkg/reconciler/route/traffic/rollout.go b/pkg/reconciler/route/traffic/rollout.go
index d72263fb6..d496ae2a3 100644
--- a/pkg/reconciler/route/traffic/rollout.go
+++ b/pkg/reconciler/route/traffic/rollout.go
@@ -184,7 +184,7 @@ func stepConfig(goal, prev *ConfigurationRollout) *ConfigurationRollout {
 	}
 	// goal will always have just one revision in the list – the current desired revision.
 	// If it matches the last revision of the previous rollout state (or there were no revisions)
-	// then no new rollout hast begun for this configuration.
+	// then no new rollout has begun for this configuration.
 	if len(prev.Revisions) == 0 || goal.Revisions[0].RevisionName == prev.Revisions[pc-1].RevisionName {
 		// TODO(vagababov): here would go the logic to compute new percentages for the rollout,
 		// i.e step function, so return value will change, depending on that.
diff --git a/vendor/knative.dev/caching/config/dummy.go b/vendor/knative.dev/caching/config/placeholder.go
similarity index 100%
rename from vendor/knative.dev/caching/config/dummy.go
rename to vendor/knative.dev/caching/config/placeholder.go
diff --git a/vendor/knative.dev/hack/README.md b/vendor/knative.dev/hack/README.md
index af2cbc657..1df3cfe5b 100644
--- a/vendor/knative.dev/hack/README.md
+++ b/vendor/knative.dev/hack/README.md
@@ -220,7 +220,7 @@ benchmarking jobs for each repo. To use it:
    - `SERVICE_ACCOUNT_NAME`: Service account name for controlling GKE clusters
      and interacting with [Mako](https://github.com/google/mako) server. It MUST
      have `Kubernetes Engine Admin` and `Storage Admin` role, and be
-     [whitelisted](https://github.com/google/mako/blob/master/docs/ACCESS.md) by
+     [allowed](https://github.com/google/mako/blob/master/docs/ACCESS.md) by
      Mako admin. Defaults to `mako-job`.
 
 1. [optional] Customize root path of the benchmarks. This root folder should
diff --git a/vendor/knative.dev/hack/library.sh b/vendor/knative.dev/hack/library.sh
index 020eb7206..f37b3f8df 100644
--- a/vendor/knative.dev/hack/library.sh
+++ b/vendor/knative.dev/hack/library.sh
@@ -353,13 +353,10 @@ function report_go_test() {
   report="$(mktemp)"
   local xml
   xml="$(mktemp_with_extension "${ARTIFACTS}"/junit_XXXXXXXX xml)"
-  local json
-  json="$(mktemp_with_extension "${ARTIFACTS}"/json_XXXXXXXX json)"
   echo "Running go test with args: ${go_test_args[*]}"
   # TODO(chizhg): change to `--format testname`?
   capture_output "${report}" gotestsum --format "${GO_TEST_VERBOSITY:-standard-verbose}" \
     --junitfile "${xml}" --junitfile-testsuite-name relative --junitfile-testcase-classname relative \
-    --jsonfile "${json}" \
     -- "${go_test_args[@]}"
   local failed=$?
   echo "Finished run, return code is ${failed}"
@@ -517,7 +514,7 @@ function go_update_deps() {
   echo "=== Update Deps for Golang"
 
   local UPGRADE=0
-  local VERSION="master"
+  local VERSION="v9000.1" # release v9000 is so far in the future, it will always pick the default branch.
   local DOMAIN="knative.dev"
   while [[ $# -ne 0 ]]; do
     parameter=$1
diff --git a/vendor/knative.dev/pkg/logging/config.go b/vendor/knative.dev/pkg/logging/config.go
index 2b5eb696d..e1480033d 100644
--- a/vendor/knative.dev/pkg/logging/config.go
+++ b/vendor/knative.dev/pkg/logging/config.go
@@ -65,7 +65,10 @@ func NewLogger(configJSON string, levelOverride string, opts ...zap.Option) (*za
 	if err2 != nil {
 		panic(err2)
 	}
-	return enrichLoggerWithCommitID(logger.Named(fallbackLoggerName)), loggingCfg.Level
+
+	slogger := enrichLoggerWithCommitID(logger.Named(fallbackLoggerName))
+	slogger.Warnw("Failed to parse logging config - using default zap production config", zap.Error(err))
+	return slogger, loggingCfg.Level
 }
 
 func enrichLoggerWithCommitID(logger *zap.Logger) *zap.SugaredLogger {
diff --git a/vendor/knative.dev/pkg/metrics/config.go b/vendor/knative.dev/pkg/metrics/config.go
index 38ac02e65..d4ae24ad5 100644
--- a/vendor/knative.dev/pkg/metrics/config.go
+++ b/vendor/knative.dev/pkg/metrics/config.go
@@ -60,7 +60,9 @@ const (
 	defaultPrometheusPort = 9090
 	maxPrometheusPort     = 65535
 	minPrometheusPort     = 1024
+	defaultPrometheusHost = "0.0.0.0"
 	prometheusPortEnvName = "METRICS_PROMETHEUS_PORT"
+	prometheusHostEnvName = "METRICS_PROMETHEUS_HOST"
 )
 
 // Metrics backend "enum".
@@ -105,6 +107,10 @@ type metricsConfig struct {
 	// format. It defaults to 9090.
 	prometheusPort int
 
+	// prometheusHost is the host where the metrics are exposed in Prometheus
+	// format. It defaults to "0.0.0.0"
+	prometheusHost string
+
 	// ---- Stackdriver specific below ----
 	// True if backendDestination equals to "stackdriver". Store this in a variable
 	// to reduce string comparison operations.
@@ -240,6 +246,7 @@ func createMetricsConfig(ctx context.Context, ops ExporterOptions) (*metricsConf
 		}
 
 		mc.prometheusPort = pp
+		mc.prometheusHost = prometheusHost()
 	case stackdriver:
 		// If stackdriverClientConfig is not provided for stackdriver backend destination, OpenCensus will try to
 		// use the application default credentials. If that is not available, Opencensus would fail to create the
@@ -341,6 +348,17 @@ func prometheusPort() (int, error) {
 	return int(pp), nil
 }
 
+// prometheusHost returns the host configured via the environment
+// for the Prometheus metrics exporter if it's set, a default value otherwise.
+// No validation is done here.
+func prometheusHost() string {
+	phStr := os.Getenv(prometheusHostEnvName)
+	if phStr == "" {
+		return defaultPrometheusHost
+	}
+	return phStr
+}
+
 // JSONToOptions converts a json string to ExporterOptions.
 func JSONToOptions(jsonOpts string) (*ExporterOptions, error) {
 	var opts ExporterOptions
diff --git a/vendor/knative.dev/pkg/metrics/exporter.go b/vendor/knative.dev/pkg/metrics/exporter.go
index a7411fccb..0c680106e 100644
--- a/vendor/knative.dev/pkg/metrics/exporter.go
+++ b/vendor/knative.dev/pkg/metrics/exporter.go
@@ -66,10 +66,15 @@ type ExporterOptions struct {
 
 	// PrometheusPort is the port to expose metrics if metrics backend is Prometheus.
 	// It should be between maxPrometheusPort and maxPrometheusPort. 0 value means
-	// using the default 9090 value. If is ignored if metrics backend is not
+	// using the default 9090 value. It is ignored if metrics backend is not
 	// Prometheus.
 	PrometheusPort int
 
+	// PrometheusHost is the host to expose metrics on if metrics backend is Prometheus.
+	// The default value is "0.0.0.0". It is ignored if metrics backend is not
+	// Prometheus.
+	PrometheusHost string
+
 	// ConfigMap is the data from config map config-observability. Must be present.
 	// See https://github.com/knative/serving/blob/master/config/config-observability.yaml
 	// for details.
diff --git a/vendor/knative.dev/pkg/metrics/prometheus_exporter.go b/vendor/knative.dev/pkg/metrics/prometheus_exporter.go
index 7f49302cc..784eab2e8 100644
--- a/vendor/knative.dev/pkg/metrics/prometheus_exporter.go
+++ b/vendor/knative.dev/pkg/metrics/prometheus_exporter.go
@@ -17,8 +17,8 @@ limitations under the License.
 package metrics
 
 import (
-	"fmt"
 	"net/http"
+	"strconv"
 	"sync"
 
 	prom "contrib.go.opencensus.io/exporter/prometheus"
@@ -41,6 +41,7 @@ func (emptyPromExporter) ExportView(viewData *view.Data) {
 	// a signal to enrich the internal Meters with Resource information.
 }
 
+//nolint: unparam // False positive of flagging the second result of this function unused.
 func newPrometheusExporter(config *metricsConfig, logger *zap.SugaredLogger) (view.Exporter, ResourceExporterFactory, error) {
 	e, err := prom.NewExporter(prom.Options{Namespace: config.component})
 	if err != nil {
@@ -50,7 +51,7 @@ func newPrometheusExporter(config *metricsConfig, logger *zap.SugaredLogger) (vi
 	logger.Infof("Created Opencensus Prometheus exporter with config: %v. Start the server for Prometheus exporter.", config)
 	// Start the server for Prometheus scraping
 	go func() {
-		srv := startNewPromSrv(e, config.prometheusPort)
+		srv := startNewPromSrv(e, config.prometheusHost, config.prometheusPort)
 		srv.ListenAndServe()
 	}()
 	return e,
@@ -73,7 +74,7 @@ func resetCurPromSrv() {
 	}
 }
 
-func startNewPromSrv(e *prom.Exporter, port int) *http.Server {
+func startNewPromSrv(e *prom.Exporter, host string, port int) *http.Server {
 	sm := http.NewServeMux()
 	sm.Handle("/metrics", e)
 	curPromSrvMux.Lock()
@@ -82,7 +83,7 @@ func startNewPromSrv(e *prom.Exporter, port int) *http.Server {
 		curPromSrv.Close()
 	}
 	curPromSrv = &http.Server{
-		Addr:    fmt.Sprint(":", port),
+		Addr:    host + ":" + strconv.Itoa(port),
 		Handler: sm,
 	}
 	return curPromSrv
diff --git a/vendor/knative.dev/pkg/tracker/enqueue.go b/vendor/knative.dev/pkg/tracker/enqueue.go
index 2e001470c..70fbe0e46 100644
--- a/vendor/knative.dev/pkg/tracker/enqueue.go
+++ b/vendor/knative.dev/pkg/tracker/enqueue.go
@@ -216,9 +216,18 @@ func isExpired(expiry time.Time) bool {
 
 // OnChanged implements Interface.
 func (i *impl) OnChanged(obj interface{}) {
+	observers := i.GetObservers(obj)
+
+	for _, observer := range observers {
+		i.cb(observer)
+	}
+}
+
+// GetObservers implements Interface.
+func (i *impl) GetObservers(obj interface{}) []types.NamespacedName {
 	item, err := kmeta.DeletionHandlingAccessor(obj)
 	if err != nil {
-		return
+		return nil
 	}
 
 	or := kmeta.ObjectReference(item)
@@ -229,14 +238,9 @@ func (i *impl) OnChanged(obj interface{}) {
 		Name:       or.Name,
 	}
 
-	i.m.Lock()
-	// Call the callbacks without the lock held.
 	var keys []types.NamespacedName
-	defer func(cb func(types.NamespacedName)) {
-		for _, key := range keys {
-			cb(key)
-		}
-	}(i.cb) // read i.cb with the lock held
+
+	i.m.Lock()
 	defer i.m.Unlock()
 
 	// Handle exact matches.
@@ -274,6 +278,8 @@ func (i *impl) OnChanged(obj interface{}) {
 			delete(i.exact, ref)
 		}
 	}
+
+	return keys
 }
 
 // OnChanged implements Interface.
diff --git a/vendor/knative.dev/pkg/tracker/interface.go b/vendor/knative.dev/pkg/tracker/interface.go
index c8ab479fa..bfcda9cf2 100644
--- a/vendor/knative.dev/pkg/tracker/interface.go
+++ b/vendor/knative.dev/pkg/tracker/interface.go
@@ -23,6 +23,7 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/runtime/schema"
+	"k8s.io/apimachinery/pkg/types"
 	"k8s.io/apimachinery/pkg/util/validation"
 
 	"knative.dev/pkg/apis"
@@ -71,6 +72,10 @@ type Interface interface {
 	// so that we are notified for appropriate object changes.
 	OnChanged(obj interface{})
 
+	// GetObservers returns the names of all observers for the given
+	// object.
+	GetObservers(obj interface{}) []types.NamespacedName
+
 	// OnDeletedObserver is a callback to register with the InformerFactory
 	// so that we are notified for deletions of a watching parent to
 	// remove the respective tracking.
diff --git a/vendor/modules.txt b/vendor/modules.txt
index b9bc3b554..92a0cea0c 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -952,7 +952,7 @@ k8s.io/utils/buffer
 k8s.io/utils/integer
 k8s.io/utils/pointer
 k8s.io/utils/trace
-# knative.dev/caching v0.0.0-20201104174804-1a305923cfbe
+# knative.dev/caching v0.0.0-20201113182901-ee88f744543c
 ## explicit
 knative.dev/caching/config
 knative.dev/caching/pkg/apis/caching
@@ -973,10 +973,10 @@ knative.dev/caching/pkg/client/injection/informers/caching/v1alpha1/image/fake
 knative.dev/caching/pkg/client/injection/informers/factory
 knative.dev/caching/pkg/client/injection/informers/factory/fake
 knative.dev/caching/pkg/client/listers/caching/v1alpha1
-# knative.dev/hack v0.0.0-20201103151104-3d5abc3a0075
+# knative.dev/hack v0.0.0-20201112185459-01a34c573bd8
 ## explicit
 knative.dev/hack
-# knative.dev/networking v0.0.0-20201103163404-b9f80f4537af
+# knative.dev/networking v0.0.0-20201116165202-57530ee4cbfc
 ## explicit
 knative.dev/networking/config
 knative.dev/networking/pkg
@@ -1009,7 +1009,7 @@ knative.dev/networking/test/conformance/ingress
 knative.dev/networking/test/defaultsystem
 knative.dev/networking/test/test_images/grpc-ping/proto
 knative.dev/networking/test/types
-# knative.dev/pkg v0.0.0-20201103163404-5514ab0c1fdf
+# knative.dev/pkg v0.0.0-20201116214403-188df22c59ac
 ## explicit
 knative.dev/pkg/apiextensions/storageversion
 knative.dev/pkg/apiextensions/storageversion/cmd/migrate


Test patch:
diff --git a/pkg/autoscaler/metrics/collector_test.go b/pkg/autoscaler/metrics/collector_test.go
index ea7868baf..f054c39e9 100644
--- a/pkg/autoscaler/metrics/collector_test.go
+++ b/pkg/autoscaler/metrics/collector_test.go
@@ -111,9 +111,7 @@ func TestMetricCollectorCRUD(t *testing.T) {
 			t.Errorf("Updated scraper URL = %s, want: %s, diff: %s", got, want, cmp.Diff(got, want))
 		}
 
-		if err := coll.Delete(defaultNamespace, defaultName); err != nil {
-			t.Errorf("Delete() = %v, want no error", err)
-		}
+		coll.Delete(defaultNamespace, defaultName)
 	})
 }
 
diff --git a/pkg/autoscaler/scaling/multiscaler_test.go b/pkg/autoscaler/scaling/multiscaler_test.go
index 429be6b2b..03e01a65d 100644
--- a/pkg/autoscaler/scaling/multiscaler_test.go
+++ b/pkg/autoscaler/scaling/multiscaler_test.go
@@ -171,9 +171,7 @@ func TestMultiScalerScaling(t *testing.T) {
 		t.Fatal(err)
 	}
 
-	if err := ms.Delete(ctx, decider.Namespace, decider.Name); err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 
 	// Verify that we stop seeing "ticks"
 	mtp.Channel <- time.Now()
@@ -206,9 +204,7 @@ func TestMultiscalerCreateTBC42(t *testing.T) {
 	if got, want := d.Status.ExcessBurstCapacity, int32(50-42); got != want {
 		t.Errorf("Decider.Status.ExcessBurstCapacity = %d, want: %d", got, want)
 	}
-	if err := ms.Delete(ctx, decider.Namespace, decider.Name); err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 }
 
 func TestMultiscalerCreateTBCMinus1(t *testing.T) {
@@ -233,9 +229,7 @@ func TestMultiscalerCreateTBCMinus1(t *testing.T) {
 	if got, want := d.Status.ExcessBurstCapacity, int32(-1); got != want {
 		t.Errorf("Decider.Status.ExcessBurstCapacity = %d, want: %d", got, want)
 	}
-	if err := ms.Delete(ctx, decider.Namespace, decider.Name); err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 }
 
 func TestMultiScalerOnlyCapacityChange(t *testing.T) {
@@ -273,9 +267,7 @@ func TestMultiScalerOnlyCapacityChange(t *testing.T) {
 		t.Fatal(err)
 	}
 
-	if err := ms.Delete(ctx, decider.Namespace, decider.Name); err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 
 	// Verify that we stop seeing "ticks".
 	mtp.Channel <- time.Now()
@@ -316,10 +308,7 @@ func TestMultiScalerScaleToZero(t *testing.T) {
 		t.Fatal(err)
 	}
 
-	err = ms.Delete(ctx, decider.Namespace, decider.Name)
-	if err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 
 	// Verify that we stop seeing "ticks"
 	mtp.Channel <- time.Now()
@@ -365,9 +354,7 @@ func TestMultiScalerScaleFromZero(t *testing.T) {
 	if err := verifyTick(errCh); err != nil {
 		t.Fatal(err)
 	}
-	if err := ms.Delete(ctx, decider.Namespace, decider.Name); err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 }
 
 func TestMultiScalerUpdate(t *testing.T) {
@@ -404,9 +391,7 @@ func TestMultiScalerUpdate(t *testing.T) {
 	if got, want := m.Spec.TargetValue, 10.0; got != want {
 		t.Errorf("Got target concurrency %v. Wanted %v", got, want)
 	}
-	if err := ms.Delete(ctx, decider.Namespace, decider.Name); err != nil {
-		t.Error("Delete() =", err)
-	}
+	ms.Delete(ctx, decider.Namespace, decider.Name)
 }
 
 func createMultiScaler(ctx context.Context, l *zap.SugaredLogger) (*MultiScaler, *fakeUniScaler) {
@@ -445,9 +430,7 @@ func (u *fakeUniScaler) setScaleResult(replicas, surplus, na int32, scaled bool)
 	u.numActivators = na
 }
 
-func (u *fakeUniScaler) Update(*DeciderSpec) error {
-	return nil
-}
+func (u *fakeUniScaler) Update(*DeciderSpec) {}
 
 func newDecider() *Decider {
 	return &Decider{
diff --git a/pkg/queue/readiness/probe_test.go b/pkg/queue/readiness/probe_test.go
index b747f7574..6a94eedbe 100644
--- a/pkg/queue/readiness/probe_test.go
+++ b/pkg/queue/readiness/probe_test.go
@@ -24,6 +24,7 @@ import (
 	"net/http"
 	"net/http/httptest"
 	"net/url"
+	"strings"
 	"testing"
 	"time"
 
@@ -79,6 +80,29 @@ func TestTCPFailure(t *testing.T) {
 	}
 }
 
+func TestAggressiveFailureOnlyLogsOnce(t *testing.T) {
+	pb := NewProbe(&corev1.Probe{
+		PeriodSeconds:    0, // Aggressive probe.
+		TimeoutSeconds:   1,
+		SuccessThreshold: 1,
+		FailureThreshold: 1,
+		Handler: corev1.Handler{
+			TCPSocket: &corev1.TCPSocketAction{
+				Host: "127.0.0.1",
+				Port: intstr.FromInt(12345),
+			},
+		},
+	})
+
+	var buf bytes.Buffer
+	pb.out = &buf
+
+	pb.ProbeContainer()
+	if got := strings.Count(buf.String(), "aggressive probe error"); got != 1 {
+		t.Error("Expected exactly one instance of 'aggressive probe error' in the log, got", got)
+	}
+}
+
 func TestEmptyHandler(t *testing.T) {
 	pb := NewProbe(&corev1.Probe{
 		PeriodSeconds:    1,
@@ -637,7 +661,7 @@ func TestKnTCPProbeSuccessThresholdIncludesFailure(t *testing.T) {
 	}
 
 	if probeErr := <-errChan; !probeErr {
-		t.Error("Wanted ProbeContainer() successed but got error")
+		t.Error("Wanted ProbeContainer() to succeed, but got error")
 	}
 	if got := pb.count; got < successThreshold {
 		t.Errorf("Count = %d, want: %d", got, successThreshold)
diff --git a/pkg/reconciler/autoscaling/kpa/kpa_test.go b/pkg/reconciler/autoscaling/kpa/kpa_test.go
index 540148222..001891b68 100644
--- a/pkg/reconciler/autoscaling/kpa/kpa_test.go
+++ b/pkg/reconciler/autoscaling/kpa/kpa_test.go
@@ -1671,7 +1671,7 @@ func (km *testDeciders) Create(ctx context.Context, decider *scaling.Decider) (*
 	return decider, nil
 }
 
-func (km *testDeciders) Delete(ctx context.Context, namespace, name string) error {
+func (km *testDeciders) Delete(ctx context.Context, namespace, name string) {
 	km.mutex.Lock()
 	defer km.mutex.Unlock()
 
@@ -1681,7 +1681,6 @@ func (km *testDeciders) Delete(ctx context.Context, namespace, name string) erro
 		km.deleteBeforeCreate.Store(true)
 	}
 	km.deleteCall <- struct{}{}
-	return nil
 }
 
 func (km *testDeciders) Update(ctx context.Context, decider *scaling.Decider) (*scaling.Decider, error) {
@@ -1699,7 +1698,6 @@ func (km *testDeciders) Watch(fn func(types.NamespacedName)) {}
 type failingDeciders struct {
 	getErr    error
 	createErr error
-	deleteErr error
 }
 
 func (km *failingDeciders) Get(ctx context.Context, namespace, name string) (*scaling.Decider, error) {
@@ -1710,9 +1708,7 @@ func (km *failingDeciders) Create(ctx context.Context, decider *scaling.Decider)
 	return nil, km.createErr
 }
 
-func (km *failingDeciders) Delete(ctx context.Context, namespace, name string) error {
-	return km.deleteErr
-}
+func (km *failingDeciders) Delete(ctx context.Context, namespace, name string) {}
 
 func (km *failingDeciders) Watch(fn func(types.NamespacedName)) {
 }
diff --git a/pkg/reconciler/metric/metric_test.go b/pkg/reconciler/metric/metric_test.go
index d17365552..2b5cf6c49 100644
--- a/pkg/reconciler/metric/metric_test.go
+++ b/pkg/reconciler/metric/metric_test.go
@@ -267,7 +267,6 @@ type testCollector struct {
 	createOrUpdateError error
 
 	deleteCalls atomic.Int32
-	deleteError error
 }
 
 func (c *testCollector) CreateOrUpdate(metric *av1alpha1.Metric) error {
@@ -275,9 +274,8 @@ func (c *testCollector) CreateOrUpdate(metric *av1alpha1.Metric) error {
 	return c.createOrUpdateError
 }
 
-func (c *testCollector) Delete(namespace, name string) error {
+func (c *testCollector) Delete(namespace, name string) {
 	c.deleteCalls.Inc()
-	return c.deleteError
 }
 
 func (c *testCollector) Watch(func(types.NamespacedName)) {}
diff --git a/pkg/reconciler/route/reconcile_resources_test.go b/pkg/reconciler/route/reconcile_resources_test.go
index b04be03e7..e0f3426bf 100644
--- a/pkg/reconciler/route/reconcile_resources_test.go
+++ b/pkg/reconciler/route/reconcile_resources_test.go
@@ -27,7 +27,7 @@ import (
 
 	"knative.dev/networking/pkg/apis/networking"
 	netv1alpha1 "knative.dev/networking/pkg/apis/networking/v1alpha1"
-	fakeciinformer "knative.dev/networking/pkg/client/injection/informers/networking/v1alpha1/ingress/fake"
+	fakeingressinformer "knative.dev/networking/pkg/client/injection/informers/networking/v1alpha1/ingress/fake"
 	"knative.dev/pkg/ptr"
 	"knative.dev/serving/pkg/apis/serving"
 	v1 "knative.dev/serving/pkg/apis/serving/v1"
@@ -35,7 +35,6 @@ import (
 	fakerevisioninformer "knative.dev/serving/pkg/client/injection/informers/serving/v1/revision/fake"
 	"knative.dev/serving/pkg/gc"
 	"knative.dev/serving/pkg/reconciler/route/config"
-	"knative.dev/serving/pkg/reconciler/route/resources"
 	"knative.dev/serving/pkg/reconciler/route/traffic"
 
 	. "knative.dev/serving/pkg/testing/v1"
@@ -49,9 +48,8 @@ func TestReconcileIngressInsert(t *testing.T) {
 	defer cancel()
 
 	r := Route("test-ns", "test-route")
-	ci, tc := newTestIngress(t, r)
-
-	if _, err := reconciler.reconcileIngress(ctx, r, ci, tc); err != nil {
+	tc, tls := testIngressParams(t, r)
+	if _, err := reconciler.reconcileIngress(updateContext(ctx), r, tc, tls, "foo-ingress"); err != nil {
 		t.Error("Unexpected error:", err)
 	}
 }
@@ -65,15 +63,15 @@ func TestReconcileIngressUpdate(t *testing.T) {
 
 	r := Route("test-ns", "test-route")
 
-	ci, tc := newTestIngress(t, r)
-	if _, err := reconciler.reconcileIngress(ctx, r, ci, tc); err != nil {
+	tc, tls := testIngressParams(t, r)
+	if _, err := reconciler.reconcileIngress(updateContext(ctx), r, tc, tls, "foo-ingress"); err != nil {
 		t.Error("Unexpected error:", err)
 	}
 
-	updated := getRouteIngressFromClient(ctx, t, r)
-	fakeciinformer.Get(ctx).Informer().GetIndexer().Add(updated)
+	initial := getRouteIngressFromClient(ctx, t, r)
+	fakeingressinformer.Get(ctx).Informer().GetIndexer().Add(initial)
 
-	ci2, tc := newTestIngress(t, r, func(tc *traffic.Config) {
+	tc, tls = testIngressParams(t, r, func(tc *traffic.Config) {
 		tc.Targets[traffic.DefaultTarget][0].TrafficTarget.Percent = ptr.Int64(50)
 		tc.Targets[traffic.DefaultTarget] = append(tc.Targets[traffic.DefaultTarget], traffic.RevisionTarget{
 			TrafficTarget: v1.TrafficTarget{
@@ -82,15 +80,12 @@ func TestReconcileIngressUpdate(t *testing.T) {
 			},
 		})
 	})
-	if _, err := reconciler.reconcileIngress(ctx, r, ci2, tc); err != nil {
+	if _, err := reconciler.reconcileIngress(updateContext(ctx), r, tc, tls, "foo-ingress"); err != nil {
 		t.Error("Unexpected error:", err)
 	}
 
-	updated = getRouteIngressFromClient(ctx, t, r)
-	if diff := cmp.Diff(ci2, updated); diff != "" {
-		t.Errorf("Unexpected diff (-want +got):\n%s", diff)
-	}
-	if diff := cmp.Diff(ci, updated); diff == "" {
+	updated := getRouteIngressFromClient(ctx, t, r)
+	if diff := cmp.Diff(initial, updated); diff == "" {
 		t.Error("Expected difference, but found none")
 	}
 }
@@ -128,7 +123,7 @@ func TestReconcileTargetValidRevision(t *testing.T) {
 		t.Fatal("Error getting last pinned:", err)
 	}
 
-	if err = reconciler.reconcileTargetRevisions(ctx, &tc, r); err != nil {
+	if err = reconciler.reconcileTargetRevisions(updateContext(ctx), &tc, r); err != nil {
 		t.Fatal("Error reconciling target revisions:", err)
 	}
 
@@ -197,7 +192,8 @@ func getLastPinnedTimestamp(t *testing.T, rev *v1.Revision) (string, error) {
 	return lastPinnedTime, nil
 }
 
-func newTestIngress(t *testing.T, r *v1.Route, trafficOpts ...func(tc *traffic.Config)) (*netv1alpha1.Ingress, *traffic.Config) {
+func testIngressParams(t *testing.T, r *v1.Route, trafficOpts ...func(tc *traffic.Config)) (*traffic.Config,
+	[]netv1alpha1.IngressTLS) {
 	tc := &traffic.Config{Targets: map[string]traffic.RevisionTargets{
 		traffic.DefaultTarget: {{
 			TrafficTarget: v1.TrafficTarget{
@@ -215,11 +211,7 @@ func newTestIngress(t *testing.T, r *v1.Route, trafficOpts ...func(tc *traffic.C
 		SecretName:      "test-secret",
 		SecretNamespace: "test-ns",
 	}}
-	ingress, err := resources.MakeIngress(getContext(), r, tc, tls, "foo-ingress")
-	if err != nil {
-		t.Error("Unexpected error:", err)
-	}
-	return ingress, tc
+	return tc, tls
 }
 
 func TestReconcileIngressClassAnnotation(t *testing.T) {
@@ -232,19 +224,15 @@ func TestReconcileIngressClassAnnotation(t *testing.T) {
 	const expClass = "foo.ingress.networking.knative.dev"
 
 	r := Route("test-ns", "test-route")
-	ci, tc := newTestIngress(t, r)
-	if _, err := reconciler.reconcileIngress(ctx, r, ci, tc); err != nil {
+	tc, tls := testIngressParams(t, r)
+	if _, err := reconciler.reconcileIngress(updateContext(ctx), r, tc, tls, "foo-ingress"); err != nil {
 		t.Error("Unexpected error:", err)
 	}
 
 	updated := getRouteIngressFromClient(ctx, t, r)
-	fakeciinformer.Get(ctx).Informer().GetIndexer().Add(updated)
-
-	ci2, tc := newTestIngress(t, r)
-	// Add ingress.class annotation.
-	ci2.Annotations[networking.IngressClassAnnotationKey] = expClass
+	fakeingressinformer.Get(ctx).Informer().GetIndexer().Add(updated)
 
-	if _, err := reconciler.reconcileIngress(ctx, r, ci2, tc); err != nil {
+	if _, err := reconciler.reconcileIngress(updateContext(ctx), r, tc, tls, expClass); err != nil {
 		t.Error("Unexpected error:", err)
 	}
 
@@ -255,7 +243,11 @@ func TestReconcileIngressClassAnnotation(t *testing.T) {
 	}
 }
 
-func getContext() context.Context {
+func updateContext(ctx context.Context) context.Context {
 	cfg := reconcilerTestConfig(false)
-	return config.ToContext(context.Background(), cfg)
+	return config.ToContext(ctx, cfg)
+}
+
+func getContext() context.Context {
+	return updateContext(context.Background())
 }
diff --git a/test/e2e-networking-library.sh b/test/e2e-networking-library.sh
index a95c775f8..635cab9fa 100644
--- a/test/e2e-networking-library.sh
+++ b/test/e2e-networking-library.sh
@@ -20,8 +20,14 @@ function install_istio() {
   fi
 
   if [[ -z "${NET_ISTIO_COMMIT}" ]]; then
-    # TODO: Figure out the commit of net-istio.yaml from net-istio.yaml
-    readonly NET_ISTIO_COMMIT="8102cd3d32f05be1c58260a9717d532a4a6d2f60"
+    NET_ISTIO_COMMIT=$(head -n 1 ${1} | grep "# Generated when HEAD was" | sed 's/^.* //')
+    echo "Got NET_ISTIO_COMMIT from ${1}: ${NET_ISTIO_COMMIT}"
+  fi
+
+  # TODO: remove this when all the net-istio.yaml in use contain a commit ID
+  if [[ -z "${NET_ISTIO_COMMIT}" ]]; then
+    NET_ISTIO_COMMIT="8102cd3d32f05be1c58260a9717d532a4a6d2f60"
+    echo "Hard coded NET_ISTIO_COMMIT: ${NET_ISTIO_COMMIT}"
   fi
 
   # And checkout the setup script based on that commit.
diff --git a/third_party/contour-latest/net-contour.yaml b/third_party/contour-latest/net-contour.yaml
index 6e263ae48..4c8ff5388 100644
--- a/third_party/contour-latest/net-contour.yaml
+++ b/third_party/contour-latest/net-contour.yaml
@@ -34,7 +34,7 @@ metadata:
   namespace: knative-serving
   labels:
     networking.knative.dev/ingress-provider: contour
-    serving.knative.dev/release: "v20201111-2ae0c66f"
+    serving.knative.dev/release: "v20201114-2ae0c66f"
 data:
   _example: |
     ################################
diff --git a/third_party/istio-latest/net-istio.yaml b/third_party/istio-latest/net-istio.yaml
index 5700608d6..fe5004350 100644
--- a/third_party/istio-latest/net-istio.yaml
+++ b/third_party/istio-latest/net-istio.yaml
@@ -1,4 +1,4 @@
-# Generated when HEAD was 40b59920910828a29cf584c77bd785c8c6cf4a90
+# Generated when HEAD was cbc1a3d4e2ab6826fc042e3dad501c24d26dc327
 #
 # Copyright 2019 The Knative Authors
 #
@@ -20,7 +20,7 @@ metadata:
   # These are the permissions needed by the Istio Ingress implementation.
   name: knative-serving-istio
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     serving.knative.dev/controller: "true"
     networking.knative.dev/ingress-provider: istio
 rules:
@@ -50,7 +50,7 @@ metadata:
   name: knative-ingress-gateway
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -87,7 +87,7 @@ metadata:
   name: cluster-local-gateway
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -106,7 +106,7 @@ metadata:
   name: knative-local-gateway
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -125,7 +125,7 @@ metadata:
   name: knative-local-gateway
   namespace: istio-system
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   type: ClusterIP
@@ -145,7 +145,7 @@ metadata:
   name: "webhook"
   namespace: "knative-serving"
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -160,7 +160,7 @@ metadata:
   name: "istio-webhook"
   namespace: "knative-serving"
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -189,7 +189,7 @@ kind: MutatingWebhookConfiguration
 metadata:
   name: webhook.istio.networking.internal.knative.dev
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 webhooks:
   - admissionReviewVersions:
@@ -225,7 +225,7 @@ kind: ValidatingWebhookConfiguration
 metadata:
   name: config.webhook.istio.networking.internal.knative.dev
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 webhooks:
   - admissionReviewVersions:
@@ -263,7 +263,7 @@ metadata:
   name: istio-webhook-certs
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 
 ---
@@ -287,7 +287,7 @@ metadata:
   name: config-istio
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 data:
   _example: |
@@ -357,7 +357,7 @@ metadata:
   name: networking-istio
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -373,14 +373,14 @@ spec:
         sidecar.istio.io/inject: "false"
       labels:
         app: networking-istio
-        serving.knative.dev/release: "v20201110-40b59920"
+        serving.knative.dev/release: "v20201111-cbc1a3d4"
     spec:
       serviceAccountName: controller
       containers:
         - name: networking-istio
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/net-istio/cmd/controller@sha256:0ef2abf0e613ab19ff927cd2687273dceaadf1f04a6d7c45a33cc0d3e6448146
+          image: gcr.io/knative-nightly/knative.dev/net-istio/cmd/controller@sha256:604660e3e300ae8e4ebb92724cefea9eb14d997b664ec9cf76be2efc5c86bf20
           resources:
             requests:
               cpu: 30m
@@ -437,7 +437,7 @@ metadata:
   name: istio-webhook
   namespace: knative-serving
   labels:
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   selector:
@@ -451,14 +451,14 @@ spec:
       labels:
         app: istio-webhook
         role: istio-webhook
-        serving.knative.dev/release: "v20201110-40b59920"
+        serving.knative.dev/release: "v20201111-cbc1a3d4"
     spec:
       serviceAccountName: controller
       containers:
         - name: webhook
           # This is the Go import path for the binary that is containerized
           # and substituted here.
-          image: gcr.io/knative-nightly/knative.dev/net-istio/cmd/webhook@sha256:66e4b06f933e56461161af236ced64adb04c2c1bb9e5376a8a86f2ddc4a36859
+          image: gcr.io/knative-nightly/knative.dev/net-istio/cmd/webhook@sha256:17bc9958b175fb5d58995d35614bae730fbe84bdc48b7adacdad2f556c78d9d6
           resources:
             requests:
               cpu: 20m
@@ -512,7 +512,7 @@ metadata:
   namespace: knative-serving
   labels:
     role: istio-webhook
-    serving.knative.dev/release: "v20201110-40b59920"
+    serving.knative.dev/release: "v20201111-cbc1a3d4"
     networking.knative.dev/ingress-provider: istio
 spec:
   ports:
diff --git a/vendor/knative.dev/networking/config/dummy.go b/vendor/knative.dev/networking/config/placeholder.go
similarity index 100%
rename from vendor/knative.dev/networking/config/dummy.go
rename to vendor/knative.dev/networking/config/placeholder.go
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/class.go b/vendor/knative.dev/networking/test/conformance/ingress/class.go
index 5a251e275..6d881da90 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/class.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/class.go
@@ -61,6 +61,8 @@ func TestIngressClass(t *testing.T) {
 
 	for _, test := range tests {
 		t.Run(test.name, func(t *testing.T) {
+			t.Parallel()
+
 			verifyIngressWithAnnotations(ctx, t, clients, test.annotations, ingressBackend)
 		})
 	}
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/headers.go b/vendor/knative.dev/networking/test/conformance/ingress/headers.go
index fe9f8a219..80ac97c6b 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/headers.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/headers.go
@@ -80,6 +80,8 @@ func TestProbeHeaders(t *testing.T) {
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
+			t.Parallel()
+
 			ros := []RequestOption{}
 
 			ros = append(ros, func(r *http.Request) {
@@ -181,6 +183,8 @@ func TestTagHeaders(t *testing.T) {
 
 	for _, tt := range tests {
 		t.Run(tt.Name, func(t *testing.T) {
+			t.Parallel()
+
 			ros := []RequestOption{}
 
 			if tt.TagHeader != nil {
@@ -235,6 +239,8 @@ func TestPreSplitSetHeaders(t *testing.T) {
 	})
 
 	t.Run("Check without passing header", func(t *testing.T) {
+		t.Parallel()
+
 		ri := RuntimeRequest(ctx, t, client, "http://"+name+".example.com")
 		if ri == nil {
 			return
@@ -246,6 +252,8 @@ func TestPreSplitSetHeaders(t *testing.T) {
 	})
 
 	t.Run("Check with passing header", func(t *testing.T) {
+		t.Parallel()
+
 		ri := RuntimeRequest(ctx, t, client, "http://"+name+".example.com", func(req *http.Request) {
 			// Specify a value for the header to verify that implementations
 			// use set vs. append semantics.
@@ -307,6 +315,8 @@ func TestPostSplitSetHeaders(t *testing.T) {
 	})
 
 	t.Run("Check without passing header", func(t *testing.T) {
+		t.Parallel()
+
 		// Make enough requests that the likelihood of us seeing each variation is high,
 		// but don't check the distribution of requests, as that isn't the point of this
 		// particular test.
@@ -328,6 +338,8 @@ func TestPostSplitSetHeaders(t *testing.T) {
 	})
 
 	t.Run("Check with passing header", func(t *testing.T) {
+		t.Parallel()
+
 		// Make enough requests that the likelihood of us seeing each variation is high,
 		// but don't check the distribution of requests, as that isn't the point of this
 		// particular test.
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/path.go b/vendor/knative.dev/networking/test/conformance/ingress/path.go
index 828681857..6ef4863a5 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/path.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/path.go
@@ -128,6 +128,8 @@ func TestPath(t *testing.T) {
 
 	for path, want := range tests {
 		t.Run(path, func(t *testing.T) {
+			t.Parallel()
+
 			ri := RuntimeRequest(ctx, t, client, "http://"+name+".example.com"+path)
 			if ri == nil {
 				return
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/timeout.go b/vendor/knative.dev/networking/test/conformance/ingress/timeout.go
index 81d693871..7bacfbe0d 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/timeout.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/timeout.go
@@ -76,6 +76,8 @@ func TestTimeout(t *testing.T) {
 
 	for _, test := range tests {
 		t.Run(test.name, func(t *testing.T) {
+			t.Parallel()
+
 			checkTimeout(ctx, t, client, name, test.code, test.initialDelay, test.delay)
 		})
 	}
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/tls.go b/vendor/knative.dev/networking/test/conformance/ingress/tls.go
index c2e0e89bc..2943d7b37 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/tls.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/tls.go
@@ -60,13 +60,11 @@ func TestIngressTLS(t *testing.T) {
 		}},
 	})
 
-	t.Run("verify HTTP", func(t *testing.T) {
-		RuntimeRequest(ctx, t, client, "http://"+name+".example.com")
-	})
+	// Check without TLS.
+	RuntimeRequest(ctx, t, client, "http://"+name+".example.com")
 
-	t.Run("verify HTTPS", func(t *testing.T) {
-		RuntimeRequest(ctx, t, client, "https://"+name+".example.com")
-	})
+	// Check with TLS.
+	RuntimeRequest(ctx, t, client, "https://"+name+".example.com")
 }
 
 // TODO(mattmoor): Consider adding variants where we have multiple hosts with distinct certificates.
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/util.go b/vendor/knative.dev/networking/test/conformance/ingress/util.go
index b3255e5da..163b6150b 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/util.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/util.go
@@ -35,7 +35,6 @@ import (
 	"net"
 	"net/http"
 	"net/http/httputil"
-	"net/url"
 	"strconv"
 	"strings"
 	"testing"
@@ -533,7 +532,13 @@ func createService(ctx context.Context, t *testing.T, clients *test.Clients, svc
 		clients.KubeClient.CoreV1().Services(svc.Namespace).Delete(ctx, svc.Name, metav1.DeleteOptions{})
 	})
 	if err := reconciler.RetryTestErrors(func(attempts int) error {
+		if attempts > 0 {
+			t.Logf("Attempt %d creating service %s", attempts, svc.Name)
+		}
 		_, err := clients.KubeClient.CoreV1().Services(svc.Namespace).Create(ctx, svc, metav1.CreateOptions{})
+		if err != nil {
+			t.Logf("Attempt %d creating service failed with: %v", attempts, err)
+		}
 		return err
 	}); err != nil {
 		t.Fatalf("Error creating Service %q: %v", svcName, err)
@@ -548,6 +553,8 @@ func createService(ctx context.Context, t *testing.T, clients *test.Clients, svc
 }
 
 func createExternalNameService(ctx context.Context, t *testing.T, clients *test.Clients, target, gatewayDomain string) context.CancelFunc {
+	t.Helper()
+
 	targetName := strings.SplitN(target, ".", 3)
 	externalNameSvc := &corev1.Service{
 		ObjectMeta: metav1.ObjectMeta{
@@ -581,7 +588,13 @@ func createPodAndService(ctx context.Context, t *testing.T, clients *test.Client
 		clients.KubeClient.CoreV1().Pods(pod.Namespace).Delete(ctx, pod.Name, metav1.DeleteOptions{})
 	})
 	if err := reconciler.RetryTestErrors(func(attempts int) error {
+		if attempts > 0 {
+			t.Logf("Attempt %d creating pod %s", attempts, pod.Name)
+		}
 		_, err := clients.KubeClient.CoreV1().Pods(pod.Namespace).Create(ctx, pod, metav1.CreateOptions{})
+		if err != nil {
+			t.Logf("Attempt %d creating pod failed with: %v", attempts, err)
+		}
 		return err
 	}); err != nil {
 		t.Fatalf("Error creating Pod %q: %v", podName, err)
@@ -591,7 +604,13 @@ func createPodAndService(ctx context.Context, t *testing.T, clients *test.Client
 		clients.KubeClient.CoreV1().Services(svc.Namespace).Delete(ctx, svc.Name, metav1.DeleteOptions{})
 	})
 	if err := reconciler.RetryTestErrors(func(attempts int) error {
+		if attempts > 0 {
+			t.Logf("Attempt %d creating service %s", attempts, svc.Name)
+		}
 		_, err := clients.KubeClient.CoreV1().Services(svc.Namespace).Create(ctx, svc, metav1.CreateOptions{})
+		if err != nil {
+			t.Logf("Attempt %d creating service failed with: %v", attempts, err)
+		}
 		return err
 	}); err != nil {
 		t.Fatalf("Error creating Service %q: %v", svcName, err)
@@ -674,7 +693,13 @@ func createIngress(ctx context.Context, t *testing.T, clients *test.Clients, spe
 
 	t.Cleanup(func() { clients.NetworkingClient.Ingresses.Delete(ctx, ing.Name, metav1.DeleteOptions{}) })
 	if err := reconciler.RetryTestErrors(func(attempts int) (err error) {
+		if attempts > 0 {
+			t.Logf("Attempt %d creating ingress %s", attempts, ing.Name)
+		}
 		ing, err = clients.NetworkingClient.Ingresses.Create(ctx, ing, metav1.CreateOptions{})
+		if err != nil {
+			t.Logf("Attempt %d creating ingress failed with: %v", attempts, err)
+		}
 		return err
 	}); err != nil {
 		t.Fatalf("Error creating Ingress %q: %v", ingName, err)
@@ -1027,11 +1052,11 @@ func StatusCodeExpectation(statusCodes sets.Int) ResponseExpectation {
 }
 
 func IsDialError(err error) bool {
-	if err, ok := err.(*url.Error); ok {
-		err, ok := err.Err.(*net.OpError)
-		return ok && err.Op == "dial"
+	var errNetOp *net.OpError
+	if !errors.As(err, &errNetOp) {
+		return false
 	}
-	return false
+	return errNetOp.Op == "dial"
 }
 
 // WaitForIngressState polls the status of the Ingress called name from client every
diff --git a/vendor/knative.dev/networking/test/conformance/ingress/visibility.go b/vendor/knative.dev/networking/test/conformance/ingress/visibility.go
index 915eb2e76..77e4b36e1 100644
--- a/vendor/knative.dev/networking/test/conformance/ingress/visibility.go
+++ b/vendor/knative.dev/networking/test/conformance/ingress/visibility.go
@@ -39,13 +39,11 @@ func TestVisibility(t *testing.T) {
 	// Create the private backend
 	name, port, _ := CreateRuntimeService(ctx, t, clients, networking.ServicePortNameHTTP1)
 
-	privateServiceName := test.ObjectNameForTest(t)
-	shortName := privateServiceName + "." + test.ServingNamespace
-
+	// Generate a different hostname for each of these tests, so that they do not fail when run concurrently.
 	var privateHostNames = map[string]string{
-		"fqdn":     shortName + ".svc." + test.NetworkingFlags.ClusterSuffix,
-		"short":    shortName + ".svc",
-		"shortest": shortName,
+		"fqdn":     test.ObjectNameForTest(t) + "." + test.ServingNamespace + ".svc." + test.NetworkingFlags.ClusterSuffix,
+		"short":    test.ObjectNameForTest(t) + "." + test.ServingNamespace + ".svc",
+		"shortest": test.ObjectNameForTest(t) + "." + test.ServingNamespace,
 	}
 	ingress, client, _ := CreateIngressReady(ctx, t, clients, v1alpha1.IngressSpec{
 		Rules: []v1alpha1.IngressRule{{
@@ -70,8 +68,11 @@ func TestVisibility(t *testing.T) {
 		RuntimeRequestWithExpectations(ctx, t, client, "http://"+privateHostName, []ResponseExpectation{StatusCodeExpectation(sets.NewInt(http.StatusNotFound))}, true)
 	}
 
-	for name, privateHostName := range privateHostNames {
+	for name := range privateHostNames {
+		privateHostName := privateHostNames[name] // avoid the Go iterator capture issue.
 		t.Run(name, func(t *testing.T) {
+			t.Parallel()
+
 			testProxyToHelloworld(ctx, t, ingress, clients, privateHostName)
 		})
 	}
@@ -361,6 +362,8 @@ func TestVisibilityPath(t *testing.T) {
 
 	for path, want := range tests {
 		t.Run(path, func(t *testing.T) {
+			t.Parallel()
+
 			ri := RuntimeRequest(ctx, t, client, "http://"+publicHostName+path)
 			if ri == nil {
 				return
diff --git a/vendor/knative.dev/pkg/reconciler/testing/tracker.go b/vendor/knative.dev/pkg/reconciler/testing/tracker.go
index 35a15f896..e586097d9 100644
--- a/vendor/knative.dev/pkg/reconciler/testing/tracker.go
+++ b/vendor/knative.dev/pkg/reconciler/testing/tracker.go
@@ -41,6 +41,31 @@ var _ tracker.Interface = (*FakeTracker)(nil)
 // OnChanged implements OnChanged.
 func (*FakeTracker) OnChanged(interface{}) {}
 
+// GetObservers implements GetObservers.
+func (n *FakeTracker) GetObservers(obj interface{}) []types.NamespacedName {
+	item, err := kmeta.DeletionHandlingAccessor(obj)
+	if err != nil {
+		return nil
+	}
+
+	or := kmeta.ObjectReference(item)
+	ref := tracker.Reference{
+		APIVersion: or.APIVersion,
+		Kind:       or.Kind,
+		Namespace:  or.Namespace,
+		Name:       or.Name,
+	}
+
+	n.Lock()
+	defer n.Unlock()
+
+	keys := make([]types.NamespacedName, 0, len(n.references[ref]))
+	for key := range n.references[ref] {
+		keys = append(keys, key)
+	}
+	return keys
+}
+
 // OnDeletedObserver implements OnDeletedObserver.
 func (n *FakeTracker) OnDeletedObserver(obj interface{}) {
 	item, err := kmeta.DeletionHandlingAccessor(obj)
diff --git a/vendor/knative.dev/pkg/test/logging/.gitattributes b/vendor/knative.dev/pkg/test/logging/.gitattributes
deleted file mode 100644
index 19c29c12f..000000000
--- a/vendor/knative.dev/pkg/test/logging/.gitattributes
+++ /dev/null
@@ -1,1 +0,0 @@
-memory_encoder.go coverage-excluded=true
diff --git a/vendor/knative.dev/pkg/test/logging/doc.go b/vendor/knative.dev/pkg/test/logging/doc.go
deleted file mode 100644
index e76b9cbe9..000000000
--- a/vendor/knative.dev/pkg/test/logging/doc.go
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-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 logging assists setting up test logging and using leveled logging in tests.
-
-The TLogger is designed to assist the test writer in creating more useful tests and
-collecting log data in multiple streams, optimizing for human readability in one and
-machine readability in another. It's designed to mimic the testing.T object rather closely and
-use Zap logging semantics, both things already in use in Knative, to minimize the time developers
-need to spend learning the tool.
-
-Inspired by and uses go-logr.
-
-Advantages
-
-The TLogger enhances test design through subtle nudges and affordances:
-
-* It encourages only logging with .V(), giving the writer a nudge to think about how important it is,
-but without requiring them to fit it in a narrowly-defined category.
-
-* Reduces boilerplate of carrying around context for errors in several different variables,
-using .WithValues(), which results in more consistent and reusable code across the tests.
-
-Porting
-
-To port code from using testing.T to logging.TLogger, the interfaces knative.dev/pkg/test.T and
-knative.dev/pkg/test.TLegacy have been created. All library functions should be refactored to use
-one interface and all .Log() calls rewritten to use structured format, which works with testing and
-TLogger. If a library function needs test functions not available even in test.TLegacy,
-it's probably badly written.
-
-Then any test can be incrementally rewritten to use TLogger, as it coexists with testing.T without issue.
-
-*/
-package logging
diff --git a/vendor/knative.dev/pkg/test/logging/error.go b/vendor/knative.dev/pkg/test/logging/error.go
deleted file mode 100644
index 774a60612..000000000
--- a/vendor/knative.dev/pkg/test/logging/error.go
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-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 logging
-
-import (
-	"fmt"
-
-	"github.com/davecgh/go-spew/spew"
-)
-
-// StructuredError is an error which can hold arbitrary key-value arguments.
-//
-// TODO(coryrc): The Structured Error is experimental and likely to be removed, but is currently in use in a refactored test.
-type StructuredError interface {
-	error
-	GetValues() []interface{}
-	WithValues(...interface{}) StructuredError
-	DisableValuePrinting()
-	EnableValuePrinting()
-}
-
-type structuredError struct {
-	msg           string
-	keysAndValues []interface{}
-	print         bool
-}
-
-func keysAndValuesToSpewedMap(args ...interface{}) map[string]string {
-	m := make(map[string]string, len(args)/2)
-	for i := 0; i < len(args); i += 2 {
-		key, val := args[i], args[i+1]
-		if keyStr, ok := key.(string); ok {
-			m[keyStr] = spew.Sdump(val)
-		}
-	}
-	return m
-}
-
-// Error implements `error` interface
-func (e structuredError) Error() string {
-	// TODO(coryrc): accept zap.Field entries?
-	if e.print {
-		// %v for fmt.Sprintf does print keys sorted
-		return fmt.Sprintf("Error: %s\nContext:\n%v", e.msg, keysAndValuesToSpewedMap(e.keysAndValues...))
-	}
-	return e.msg
-}
-
-// GetValues gives you the structured key values in a plist
-func (e structuredError) GetValues() []interface{} {
-	return e.keysAndValues
-}
-
-// DisableValuePrinting disables printing out the keys and values from the Error() method
-func (e *structuredError) DisableValuePrinting() {
-	e.print = false
-}
-
-// EnableValuePrinting enables printing out the keys and values from the Error() method
-func (e *structuredError) EnableValuePrinting() {
-	e.print = true
-}
-
-// Create a StructuredError. Gives a little better logging when given to a TLogger.
-// This may prove to not be useful if users use the logger's WithValues() better.
-func Error(msg string, keysAndValues ...interface{}) error {
-	return &structuredError{msg, keysAndValues, true}
-}
-
-// WithValues operates just like TLogger's WithValues but stores them in the error object.
-func (e *structuredError) WithValues(keysAndValues ...interface{}) StructuredError {
-	newKAV := make([]interface{}, 0, len(keysAndValues)+len(e.keysAndValues))
-	newKAV = append(newKAV, e.keysAndValues...)
-	newKAV = append(newKAV, keysAndValues...)
-	return &structuredError{e.msg, newKAV, e.print}
-}
diff --git a/vendor/knative.dev/pkg/test/logging/logger.go b/vendor/knative.dev/pkg/test/logging/logger.go
deleted file mode 100644
index b8f3e4a71..000000000
--- a/vendor/knative.dev/pkg/test/logging/logger.go
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2020 The Knative Authors
-// Copyright (c) 2017 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-// Copying testingWriter from zaptest and allowing it to be disabled
-
-package logging
-
-import (
-	"bytes"
-	"errors"
-	"testing"
-)
-
-// testingWriter is a WriteSyncer that writes to the given testing.TB.
-type testingWriter struct {
-	t *testing.T
-
-	// If true, the test will be marked as failed if this testingWriter is
-	// ever used.
-	markFailed bool
-}
-
-func newTestingWriter(t *testing.T) testingWriter {
-	return testingWriter{t: t}
-}
-
-// WithMarkFailed returns a copy of this testingWriter with markFailed set to
-// the provided value.
-func (w testingWriter) WithMarkFailed(v bool) testingWriter {
-	w.markFailed = v
-	return w
-}
-
-func (w testingWriter) Write(p []byte) (n int, err error) {
-	if w.t == nil {
-		return 0, errors.New("Write to buffer after test function completed")
-	}
-	n = len(p)
-
-	// Strip trailing newline because t.Log always adds one.
-	p = bytes.TrimRight(p, "\n")
-
-	// Note: t.Log is safe for concurrent use.
-	w.t.Logf("%s", p)
-	if w.markFailed {
-		w.t.Fail()
-	}
-
-	return n, nil
-}
-
-func (w testingWriter) Sync() error {
-	return nil
-}
-
-func (w *testingWriter) Disable() {
-	w.t = nil
-}
diff --git a/vendor/knative.dev/pkg/test/logging/memory_encoder.go b/vendor/knative.dev/pkg/test/logging/memory_encoder.go
deleted file mode 100644
index 248046b62..000000000
--- a/vendor/knative.dev/pkg/test/logging/memory_encoder.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2020 The Knative Authors
-// Copyright (c) 2016 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-package logging
-
-import (
-	"time"
-
-	"go.uber.org/zap/zapcore"
-)
-
-// sliceArrayEncoder is an ArrayEncoder backed by a simple []interface{}. Like
-// the MapObjectEncoder, it's not designed for production use.
-type sliceArrayEncoder struct {
-	elems []interface{}
-}
-
-func (s *sliceArrayEncoder) AppendArray(v zapcore.ArrayMarshaler) error {
-	enc := &sliceArrayEncoder{}
-	err := v.MarshalLogArray(enc)
-	s.elems = append(s.elems, enc.elems)
-	return err
-}
-
-func (s *sliceArrayEncoder) AppendObject(v zapcore.ObjectMarshaler) error {
-	m := zapcore.NewMapObjectEncoder()
-	err := v.MarshalLogObject(m)
-	s.elems = append(s.elems, m.Fields)
-	return err
-}
-
-func (s *sliceArrayEncoder) AppendReflected(v interface{}) error {
-	s.elems = append(s.elems, v)
-	return nil
-}
-
-func (s *sliceArrayEncoder) AppendBool(v bool)              { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendByteString(v []byte)      { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendComplex128(v complex128)  { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendComplex64(v complex64)    { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendDuration(v time.Duration) { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendFloat64(v float64)        { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendFloat32(v float32)        { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendInt(v int)                { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendInt64(v int64)            { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendInt32(v int32)            { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendInt16(v int16)            { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendInt8(v int8)              { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendString(v string)          { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendTime(v time.Time)         { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendUint(v uint)              { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendUint64(v uint64)          { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendUint32(v uint32)          { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendUint16(v uint16)          { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendUint8(v uint8)            { s.elems = append(s.elems, v) }
-func (s *sliceArrayEncoder) AppendUintptr(v uintptr)        { s.elems = append(s.elems, v) }
diff --git a/vendor/knative.dev/pkg/test/logging/spew_encoder.go b/vendor/knative.dev/pkg/test/logging/spew_encoder.go
deleted file mode 100644
index 38c83c854..000000000
--- a/vendor/knative.dev/pkg/test/logging/spew_encoder.go
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2020 The Knative Authors
-// Copyright (c) 2016 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-package logging
-
-import (
-	"fmt"
-	"sort"
-	"strings"
-	"sync"
-
-	"go.uber.org/zap"
-	"go.uber.org/zap/buffer"
-	"go.uber.org/zap/zapcore"
-)
-
-var (
-	_pool             = buffer.NewPool()
-	_sliceEncoderPool = sync.Pool{
-		New: func() interface{} {
-			return &sliceArrayEncoder{elems: make([]interface{}, 0, 2)}
-		},
-	}
-)
-
-func init() {
-	zap.RegisterEncoder("spew", func(encoderConfig zapcore.EncoderConfig) (zapcore.Encoder, error) {
-		return NewSpewEncoder(encoderConfig), nil
-	})
-}
-
-// NewSpewEncoder encodes logs using the spew library.
-//
-// The JSON encoder (also used by the console encoder) included in Zap can only print objects that
-// can be serialized to JSON and doesn't print them in the most readable way. This spew encoder is
-// designed to make human-readable log only and get the most information to the user on any data type.
-//
-// Code is mostly from console_encoder.go in zapcore.
-func NewSpewEncoder(cfg zapcore.EncoderConfig) *SpewEncoder {
-	enc := SpewEncoder{}
-	enc.MapObjectEncoder = zapcore.NewMapObjectEncoder()
-	enc.EncoderConfig = &cfg
-	return &enc
-}
-
-// SpewEncoder implements zapcore.Encoder interface
-type SpewEncoder struct {
-	*zapcore.MapObjectEncoder
-	*zapcore.EncoderConfig
-}
-
-// Implements zapcore.Encoder interface
-func (enc *SpewEncoder) Clone() zapcore.Encoder {
-	n := NewSpewEncoder(*(enc.EncoderConfig))
-	for k, v := range enc.Fields {
-		n.Fields[k] = v
-	}
-	return n
-}
-
-func getSliceEncoder() *sliceArrayEncoder {
-	return _sliceEncoderPool.Get().(*sliceArrayEncoder)
-}
-
-func putSliceEncoder(e *sliceArrayEncoder) {
-	e.elems = e.elems[:0]
-	_sliceEncoderPool.Put(e)
-}
-
-// Implements zapcore.Encoder interface.
-func (enc *SpewEncoder) EncodeEntry(ent zapcore.Entry, fields []zapcore.Field) (*buffer.Buffer, error) {
-	line := _pool.Get()
-
-	// Could probably rewrite this portion and remove the copied
-	// memory_encoder.go from this folder
-	arr := getSliceEncoder()
-	defer putSliceEncoder(arr)
-
-	if enc.TimeKey != "" && enc.EncodeTime != nil {
-		enc.EncodeTime(ent.Time, arr)
-	}
-	if enc.LevelKey != "" && enc.EncodeLevel != nil {
-		enc.EncodeLevel(ent.Level, arr)
-	}
-
-	if ent.LoggerName != "" && enc.NameKey != "" {
-		nameEncoder := enc.EncodeName
-
-		if nameEncoder == nil {
-			// Fall back to FullNameEncoder for backward compatibility.
-			nameEncoder = zapcore.FullNameEncoder
-		}
-
-		nameEncoder(ent.LoggerName, arr)
-	}
-	if ent.Caller.Defined && enc.CallerKey != "" && enc.EncodeCaller != nil {
-		enc.EncodeCaller(ent.Caller, arr)
-	}
-	for i := range arr.elems {
-		if i > 0 {
-			line.AppendByte('\t')
-		}
-		fmt.Fprint(line, arr.elems[i])
-	}
-
-	// Add the message itself.
-	if enc.MessageKey != "" {
-		enc.addTabIfNecessary(line)
-		line.AppendString(ent.Message)
-	}
-
-	// Add any structured context.
-	enc.writeContext(line, fields)
-
-	// If there's no stacktrace key, honor that; this allows users to force
-	// single-line output.
-	if ent.Stack != "" && enc.StacktraceKey != "" {
-		line.AppendByte('\n')
-		line.AppendString(ent.Stack)
-	}
-
-	if enc.LineEnding != "" {
-		line.AppendString(enc.LineEnding)
-	} else {
-		line.AppendString(zapcore.DefaultLineEnding)
-	}
-	return line, nil
-}
-
-func (enc *SpewEncoder) writeContext(line *buffer.Buffer, extra []zapcore.Field) {
-	if len(extra) == 0 && len(enc.Fields) == 0 {
-		return
-	}
-
-	// This could probably be more efficient, but .AddTo() is convenient
-
-	context := zapcore.NewMapObjectEncoder()
-	for k, v := range enc.Fields {
-		context.Fields[k] = v
-	}
-	for i := range extra {
-		extra[i].AddTo(context)
-	}
-
-	enc.addTabIfNecessary(line)
-	line.AppendString("\nContext:\n")
-	keys := make([]string, 0, len(context.Fields))
-	for k := range context.Fields {
-		keys = append(keys, k)
-	}
-	sort.Strings(keys)
-	for _, k := range keys {
-		line.AppendString(k)
-		line.AppendString(": ")
-		line.AppendString(stringify(context.Fields[k]))
-		line.TrimNewline()
-		line.AppendString("\n")
-	}
-}
-
-func stringify(a interface{}) string {
-	s, ok := a.(string)
-	if !ok {
-		s = strings.TrimSuffix(spewConfig.Sdump(a), "\n")
-	}
-	ret := strings.ReplaceAll(s, "\n", "\n ")
-	hasNewlines := s != ret
-	if hasNewlines {
-		return "\n " + ret
-	}
-	return s
-}
-
-func (enc *SpewEncoder) addTabIfNecessary(line *buffer.Buffer) {
-	if line.Len() > 0 {
-		line.AppendByte('\t')
-	}
-}
diff --git a/vendor/knative.dev/pkg/test/logging/sugar.go b/vendor/knative.dev/pkg/test/logging/sugar.go
deleted file mode 100644
index 01fc6b29f..000000000
--- a/vendor/knative.dev/pkg/test/logging/sugar.go
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2020 Knative Authors
-// Copyright (c) 2016 Uber Technologies, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-package logging
-
-import (
-	"github.com/davecgh/go-spew/spew"
-	"go.uber.org/zap"
-	"go.uber.org/zap/zapcore"
-
-	"go.uber.org/multierr"
-)
-
-const (
-	_oddNumberErrMsg    = "Ignored key without a value."
-	_nonStringKeyErrMsg = "Ignored key-value pairs with non-string keys."
-)
-
-var spewConfig *spew.ConfigState
-
-func init() {
-	spewConfig = spew.NewDefaultConfig()
-	spewConfig.DisableCapacities = true
-	spewConfig.SortKeys = true
-	spewConfig.SpewKeys = true
-	spewConfig.ContinueOnMethod = true
-}
-
-func (o *TLogger) handleFields(args []interface{}) []zap.Field {
-	if len(args) == 0 {
-		return nil
-	}
-	s := o.l.Sugar()
-
-	// Allocate enough space for the worst case; if users pass only structured
-	// fields, we shouldn't penalize them with extra allocations.
-	fields := make([]zap.Field, 0, len(args))
-	var invalid invalidPairs
-
-	for i := 0; i < len(args); {
-		// This is a strongly-typed field. Consume it and move on.
-		if f, ok := args[i].(zap.Field); ok {
-			fields = append(fields, f)
-			i++
-			continue
-		}
-
-		// Make sure this element isn't a dangling key.
-		if i == len(args)-1 {
-			s.DPanic(_oddNumberErrMsg, zap.Any("ignored", args[i]))
-			break
-		}
-
-		// Consume this value and the next, treating them as a key-value pair. If the
-		// key isn't a string, add this pair to the slice of invalid pairs.
-		key, val := args[i], args[i+1]
-		if keyStr, ok := key.(string); !ok {
-			// Subsequent errors are likely, so allocate once up front.
-			if cap(invalid) == 0 {
-				invalid = make(invalidPairs, 0, len(args)/2)
-			}
-			invalid = append(invalid, invalidPair{i, key, val})
-		} else {
-			fields = append(fields, zap.Any(keyStr, val))
-		}
-		i += 2
-	}
-
-	// If we encountered any invalid key-value pairs, log an error.
-	if len(invalid) > 0 {
-		s.DPanic(_nonStringKeyErrMsg, zap.Array("invalid", invalid), zap.String("all_input", spew.Sprintf("%#+v", args)))
-	}
-	return fields
-}
-
-type invalidPair struct {
-	position   int
-	key, value interface{}
-}
-
-func (p invalidPair) MarshalLogObject(enc zapcore.ObjectEncoder) error {
-	enc.AddInt64("position", int64(p.position))
-	zap.Any("key", p.key).AddTo(enc)
-	zap.Any("value", p.value).AddTo(enc)
-	return nil
-}
-
-type invalidPairs []invalidPair
-
-func (ps invalidPairs) MarshalLogArray(enc zapcore.ArrayEncoder) error {
-	var err error
-	for i := range ps {
-		err = multierr.Append(err, enc.AppendObject(ps[i]))
-	}
-	return err
-}
diff --git a/vendor/knative.dev/pkg/test/logging/tlogger.go b/vendor/knative.dev/pkg/test/logging/tlogger.go
deleted file mode 100644
index f6e05c5ce..000000000
--- a/vendor/knative.dev/pkg/test/logging/tlogger.go
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
-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 logging
-
-import (
-	"errors"
-	"fmt"
-	"testing"
-
-	"github.com/go-logr/logr"
-	"go.uber.org/zap"
-	"go.uber.org/zap/zapcore"
-)
-
-// TLogger is TLogger
-type TLogger struct {
-	l        *zap.Logger
-	level    int
-	t        *testing.T
-	errs     map[string][]interface{} // For Collect()
-	dontFail bool
-}
-
-// V() returns an InfoLogger from go-logr.
-//
-// This should be the main way your tests log.
-// Most frequent usage is used directly:
-//   t.V(2).Info("Something at regular level")
-// But if something computationally difficult is to be done, can do:
-//   if l := t.V(8); l.Enabled() {
-//     x := somethingExpensive()
-//     l.Info("logging it", "expensiveThing", x)
-//   }
-//
-// Elsewhere in this documentation refers to a hypothetical .V(errorLevel) to simplify explanations.
-// The V() function cannot write to the error level; the Error, ErrorIfErr, Fatal, and
-// FatalIfErr methods are the only way to write to the error level.
-func (o *TLogger) V(level int) logr.InfoLogger {
-	// Consider adding || (level <= logrZapDebugLevel && o.l.Core().Enabled(zapLevelFromLogrLevel(level)))
-	// Reason to add it is even if you ask for verbosity=1, in case of error you'll get up to verbosity=3 in the debug output
-	// but since zapTest uses Debug, you always get V(<=3) even when verbosity < 3
-	// Probable solution is to write to t.Log at Info level?
-	if level <= o.level {
-		return &infoLogger{
-			logrLevel: o.level,
-			t:         o,
-		}
-	}
-	return disabledInfoLogger
-}
-
-// WithValues() acts like Zap's With() method.
-// Consistent with logr.Logger.WithValues()
-// Whenever anything is logged with the returned TLogger,
-// it will act as if these keys and values were passed into every logging call.
-func (o *TLogger) WithValues(keysAndValues ...interface{}) *TLogger {
-	return o.cloneWithNewLogger(o.l.With(o.handleFields(keysAndValues)...))
-}
-
-// WithName() acts like Zap's Named() method.
-// Consistent with logr.Logger.WithName()
-// Appends the name onto the current logger
-func (o *TLogger) WithName(name string) *TLogger {
-	return o.cloneWithNewLogger(o.l.Named(name))
-}
-
-// Custom additions:
-
-// ErrorIfErr fails the current test if the err != nil.
-// Remaining arguments function as if passed to .V(errorLevel).Info() (were that a thing)
-// Same signature as logr.Logger.Error() method, but as this is a test, it functions slightly differently.
-func (o *TLogger) ErrorIfErr(err error, msg string, keysAndValues ...interface{}) {
-	if err != nil {
-		o.error(err, msg, keysAndValues)
-		o.fail()
-	}
-}
-
-// FatalIfErr is just like ErrorIfErr() but test execution stops immediately
-func (o *TLogger) FatalIfErr(err error, msg string, keysAndValues ...interface{}) {
-	if err != nil {
-		o.error(err, msg, keysAndValues)
-		o.failNow()
-	}
-}
-
-// Error is essentially a .V(errorLevel).Info() followed by failing the test.
-// Intended usage is Error(msg string, key-value alternating arguments)
-// Same effect as testing.T.Error
-// Generic definition for compatibility with test.T interface
-// Implements test.T
-func (o *TLogger) Error(stringThenKeysAndValues ...interface{}) {
-	// Using o.error to have consistent call depth for Error, FatalIfErr, Info, etc
-	o.error(o.errorWithRuntimeCheck(stringThenKeysAndValues...))
-	o.fail()
-}
-
-// Fatal is essentially a .V(errorLevel).Info() followed by failing and immediately stopping the test.
-// Intended usage is Fatal(msg string, key-value alternating arguments)
-// Same effect as testing.T.Fatal
-// Generic definition for compatibility with test.TLegacy interface
-// Implements test.TLegacy
-func (o *TLogger) Fatal(stringThenKeysAndValues ...interface{}) {
-	o.error(o.errorWithRuntimeCheck(stringThenKeysAndValues...))
-	o.failNow()
-}
-
-func (o *TLogger) fail() {
-	if o.t != nil && !o.dontFail {
-		o.t.Fail()
-	}
-}
-
-func (o *TLogger) failNow() {
-	if o.t != nil && !o.dontFail {
-		o.t.FailNow()
-	}
-}
-
-func validateKeysAndValues(keysAndValues ...interface{}) bool {
-	length := len(keysAndValues)
-	for i := 0; i < length; {
-		_, isField := keysAndValues[i].(zapcore.Field)
-		_, isString := keysAndValues[i].(string)
-		if isField {
-			i++
-		} else if isString {
-			if i == length-1 {
-				return false
-			}
-			i += 2
-		} else {
-			return false
-		}
-	}
-	return true
-}
-
-func (o *TLogger) interfacesToFields(things ...interface{}) []interface{} {
-	o.V(5).Info("DEPRECATED Error/Fatal usage", zap.Stack("callstack"))
-	fields := make([]interface{}, 2*len(things))
-	for i, d := range things {
-		fields[i*2] = fmt.Sprintf("arg %d", i)
-		fields[i*2+1] = d
-	}
-	return fields
-}
-
-func (o *TLogger) errorWithRuntimeCheck(stringThenKeysAndValues ...interface{}) (error, string, []interface{}) { //nolint // Returning the error first is okay and expected here.
-	if len(stringThenKeysAndValues) == 0 {
-		return nil, "", nil
-	}
-	s, isString := stringThenKeysAndValues[0].(string)
-	if isString {
-		// Desired case (hopefully)
-		remainder := stringThenKeysAndValues[1:]
-		if !validateKeysAndValues(remainder...) {
-			remainder = o.interfacesToFields(remainder...)
-		}
-		return nil, s, remainder
-	}
-	e, isError := stringThenKeysAndValues[0].(error)
-	if isError && len(stringThenKeysAndValues) == 1 {
-		return e, "", nil
-	}
-	return nil, "unstructured error", o.interfacesToFields(stringThenKeysAndValues...)
-}
-
-// Cleanup registers a cleanup callback.
-func (o *TLogger) Cleanup(c func()) {
-	o.t.Cleanup(c)
-}
-
-// Run a subtest. Just like testing.T.Run but creates a TLogger.
-func (o *TLogger) Run(name string, f func(t *TLogger)) {
-	tfunc := func(ts *testing.T) {
-		tl, cancel := newTLogger(ts, o.level, o.dontFail)
-		defer cancel()
-		f(tl)
-	}
-	o.t.Run(name, tfunc)
-}
-
-// Name is just like testing.T.Name()
-// Implements test.T
-func (o *TLogger) Name() string {
-	return o.t.Name()
-}
-
-// Helper cannot work as an indirect call, so just do nothing :(
-// Implements test.T
-func (o *TLogger) Helper() {
-}
-
-// SkipNow immediately stops test execution
-// Implements test.T
-func (o *TLogger) SkipNow() {
-	o.t.SkipNow()
-}
-
-// Log is deprecated: only existing for test.T compatibility
-// Please use leveled logging via .V().Info()
-// Will panic if given data incompatible with Info() function
-// Implements test.T
-func (o *TLogger) Log(args ...interface{}) {
-	// This is complicated to ensure exactly 2 levels of indirection
-	i := o.V(2)
-	iL, ok := i.(*infoLogger)
-	if ok {
-		iL.indirectWrite(args[0].(string), args[1:]...)
-	}
-}
-
-// Parallel allows tests or subtests to run in parallel
-// Just calls the testing.T.Parallel() under the hood
-func (o *TLogger) Parallel() {
-	o.t.Parallel()
-}
-
-// Logf is deprecated: only existing for test.TLegacy compatibility
-// Please use leveled logging via .V().Info()
-// Implements test.TLegacy
-func (o *TLogger) Logf(fmtS string, args ...interface{}) {
-	// This is complicated to ensure exactly 2 levels of indirection
-	iL, ok := o.V(2).(*infoLogger)
-	if ok {
-		iL.indirectWrite(fmt.Sprintf(fmtS, args...))
-	}
-}
-
-func (o *TLogger) error(err error, msg string, keysAndValues []interface{}) {
-	var newKAV []interface{}
-	var serr StructuredError
-	if errors.As(err, &serr) {
-		serr.DisableValuePrinting()
-		defer serr.EnableValuePrinting()
-		newLen := len(keysAndValues) + len(serr.GetValues())
-		newKAV = make([]interface{}, 0, newLen+2)
-		newKAV = append(newKAV, keysAndValues...)
-		newKAV = append(newKAV, serr.GetValues()...)
-	}
-	if err != nil {
-		if msg == "" { // This is used if just the error is given to .Error() or .Fatal()
-			msg = err.Error()
-		} else {
-			if newKAV == nil {
-				newKAV = make([]interface{}, 0, len(keysAndValues)+1)
-				newKAV = append(newKAV, keysAndValues...)
-			}
-			newKAV = append(newKAV, zap.Error(err))
-		}
-	}
-	if newKAV != nil {
-		keysAndValues = newKAV
-	}
-	if checkedEntry := o.l.Check(zap.ErrorLevel, msg); checkedEntry != nil {
-		checkedEntry.Write(o.handleFields(keysAndValues)...)
-	}
-}
-
-// Creation and Teardown
-
-// Create a TLogger object using the global Zap logger and the current testing.T
-// `defer` a call to second return value immediately after.
-func NewTLogger(t *testing.T) (*TLogger, func()) {
-	return newTLogger(t, verbosity, false)
-}
-
-func newTLogger(t *testing.T, verbosity int, dontFail bool) (*TLogger, func()) {
-	testOptions := []zap.Option{
-		zap.AddCaller(),
-		zap.AddCallerSkip(2),
-		zap.Development(),
-	}
-	writer := newTestingWriter(t)
-	// Based off zap.NewDevelopmentEncoderConfig()
-	cfg := zapcore.EncoderConfig{
-		// Wanted keys can be anything except the empty string.
-		TimeKey:        "",
-		LevelKey:       "",
-		NameKey:        "",
-		CallerKey:      "C",
-		MessageKey:     "M",
-		StacktraceKey:  "S",
-		LineEnding:     zapcore.DefaultLineEnding,
-		EncodeLevel:    zapcore.CapitalLevelEncoder,
-		EncodeTime:     zapcore.ISO8601TimeEncoder,
-		EncodeDuration: zapcore.StringDurationEncoder,
-		EncodeCaller:   zapcore.ShortCallerEncoder,
-	}
-	core := zapcore.NewCore(
-		NewSpewEncoder(cfg),
-		writer,
-		zapcore.DebugLevel,
-	)
-	if zapCore != nil {
-		core = zapcore.NewTee(
-			zapCore,
-			core,
-			// TODO(coryrc): Open new file (maybe creating JUnit!?) with test output?
-		)
-	}
-	log := zap.New(core, testOptions...).Named(t.Name())
-	tlogger := TLogger{
-		l:        log,
-		level:    verbosity,
-		t:        t,
-		errs:     make(map[string][]interface{}),
-		dontFail: dontFail,
-	}
-	return &tlogger, func() {
-		tlogger.handleCollectedErrors()
-		// Sometimes goroutines exist after a test and they cause panics if they attempt to call t.Log().
-		// Prevent this panic by disabling writes to the testing.T (we'll still get them everywhere else).
-		writer.Disable()
-	}
-}
-
-func (o *TLogger) cloneWithNewLogger(l *zap.Logger) *TLogger {
-	t := TLogger{
-		l:        l,
-		level:    o.level,
-		t:        o.t,
-		errs:     o.errs,
-		dontFail: o.dontFail,
-	}
-	return &t
-}
-
-// Collect allows you to commingle multiple validations during one test execution.
-// Under the hood, it creates a sub-test during cleanup and iterates through the collected values, printing them.
-// If any are errors, it fails the subtest.
-// Currently experimental and likely to be removed
-func (o *TLogger) Collect(key string, value interface{}) {
-	list, hasKey := o.errs[key]
-	if hasKey {
-		list = append(list, value)
-	} else {
-		list = make([]interface{}, 1)
-		list[0] = value
-	}
-	o.errs[key] = list
-}
-
-func (o *TLogger) handleCollectedErrors() {
-	for name, list := range o.errs {
-		o.Run(name, func(t *TLogger) {
-			for _, item := range list {
-				_, isError := item.(error)
-				if isError {
-					t.Error(item)
-				} else {
-					t.V(3).Info(spewConfig.Sprint(item))
-				}
-			}
-		})
-	}
-}
diff --git a/vendor/knative.dev/pkg/test/logging/zapr.go b/vendor/knative.dev/pkg/test/logging/zapr.go
deleted file mode 100644
index c0b9f5858..000000000
--- a/vendor/knative.dev/pkg/test/logging/zapr.go
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2020 Knative Authors
-// Copyright 2018 Solly Ross
-//
-// 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.
-
-// The useful parts of this file have been preserved
-// from their origin at https://github.com/go-logr/zapr/tree/8f2487342d52a33a1793e50e3ca04bc1767aa65c
-
-package logging
-
-// noopInfoLogger is a logr.InfoLogger that's always disabled, and does nothing.
-type noopInfoLogger struct{}
-
-func (l *noopInfoLogger) Enabled() bool                   { return false }
-func (l *noopInfoLogger) Info(_ string, _ ...interface{}) {}
-
-var disabledInfoLogger = &noopInfoLogger{}
-
-// infoLogger is a logr.InfoLogger that uses Zap to log at a particular
-// level.
-type infoLogger struct {
-	logrLevel int
-	t         *TLogger
-}
-
-func (i *infoLogger) Enabled() bool { return true }
-func (i *infoLogger) Info(msg string, keysAndVals ...interface{}) {
-	i.indirectWrite(msg, keysAndVals...)
-}
-
-// This function just exists to have consistent 2-level call depth for Zap proxying
-func (i *infoLogger) indirectWrite(msg string, keysAndVals ...interface{}) {
-	lvl := zapLevelFromLogrLevel(i.logrLevel)
-	if checkedEntry := i.t.l.Check(lvl, msg); checkedEntry != nil {
-		checkedEntry.Write(i.t.handleFields(keysAndVals)...)
-	}
-}