feat(wait): add wait for delete operation#682
feat(wait): add wait for delete operation#682knative-prow-robot merged 10 commits intoknative:masterfrom
Conversation
knative-prow-robot
left a comment
There was a problem hiding this comment.
@dsimansk: 5 warnings.
Details
In response to this:
Fixes #671
Proposed Changes
- Add
client.WaitForEvent()to handle waiting for event types- Change
service deleteto wait for deletion by default- Add
--no-waitflag todeleteopGenerated doc for
--no-waitflag seems a bit off, as it was meant for ready use-case primarly. I'll take a closer after actual waiting logic in reviewed./wip
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
| kind string | ||
| } | ||
|
|
||
| type EventDone func(ev *watch.Event) bool |
There was a problem hiding this comment.
Golint comments: exported type EventDone should have comment or be unexported. More info.
| } | ||
| } | ||
|
|
||
| func NewWaitForEvent(kind string, watchMaker WatchMaker, eventDone EventDone) Wait { |
There was a problem hiding this comment.
Golint comments: exported function NewWaitForEvent should have comment or be unexported. More info.
| } | ||
| } | ||
|
|
||
| func (w *waitForEvent) Wait(name string, timeout time.Duration, msgCallback MessageCallback) (error, time.Duration) { |
There was a problem hiding this comment.
Golint arg-order: error should be the last type when returning multiple items.
| sr.r.Add("WaitForEvent", []interface{}{kind, name, timeout, done}, []interface{}{err}) | ||
| } | ||
|
|
||
| func (c *MockKnServingClient) WaitForEvent(kind, name string, timeout time.Duration, done wait.EventDone) error { |
There was a problem hiding this comment.
Golint comments: exported method MockKnServingClient.WaitForEvent should have comment or be unexported. More info.
| return mock.ErrorOrNil(call.Result[0]), call.Result[1].(time.Duration) | ||
| } | ||
|
|
||
| // Wait for a service to become ready, but not longer than provided timeout |
There was a problem hiding this comment.
Golint comments: comment on exported method ServingRecorder.WaitForEvent should be of the form "WaitForEvent ...". More info.
|
/assign @rhuss |
|
/wip |
| ### Options | ||
|
|
||
| ``` | ||
| --async DEPRECATED: please use --no-wait instead. Delete service and don't wait for it to become ready. |
There was a problem hiding this comment.
don't add that, not deeded to add a deprecated option.
There was a problem hiding this comment.
It's still part of AddConditionWaitFlags() and I wish I could create overloaded method...:) But of course, I agress it shouldn't be created with deprecated flag.
|
/lint |
knative-prow-robot
left a comment
There was a problem hiding this comment.
@dsimansk: 2 unresolved warnings and 3 new warnings.
Details
In response to this:
/lint
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.
|
|
||
| func (c *MockKnServingClient) DeleteService(name string) error { | ||
| call := c.recorder.r.VerifyCall("DeleteService", name) | ||
| func (c *MockKnServingClient) DeleteService(name string, timeout time.Duration) error { |
There was a problem hiding this comment.
Golint comments: exported method MockKnServingClient.DeleteService should have comment or be unexported. More info.
|
|
||
| func TestAddWaitForDelete(t *testing.T) { | ||
| for i, tc := range prepareDeleteTestCases("test-service") { | ||
| fakeWatchApi := NewFakeWatch(tc.events) |
There was a problem hiding this comment.
Golint naming: var fakeWatchApi should be fakeWatchAPI. More info.
| kind string | ||
| } | ||
|
|
||
| // Done marker to stop actual waiting on given event state |
There was a problem hiding this comment.
Golint comments: comment on exported type EventDone should be of the form "EventDone ..." (with optional leading article). More info.
rhuss
left a comment
There was a problem hiding this comment.
Looks good, with some comment :)
| ### Options | ||
|
|
||
| ``` | ||
| --async DEPRECATED: please use --no-wait instead. Delete service and don't wait for it to become ready. |
|
/retest |
|
@dsimansk staring at this latest integration error at https://prow.knative.dev/view/gcs/knative-prow/pr-logs/pull/knative_client/682/pull-knative-client-integration-tests-latest-release/1230890397631254528 I think it's not only good enough to wait for the service to be deleted, but also on all revisions attached to this service. As you can see, in the log, the service was deleted sync (per this PR), but the next create still references a revision from this old service in its traffic split. This indicates to me, that although the service has been removed, that it's not the case for its owned revision (therefore somehow the subsequent |
|
Do you think its hard to implement to wait for the service and all objects which have this service as ownerReference ? |
|
btw, yesterday I stumbled upon: https://github.com/k14s/kapp/blob/master/docs/apply-waiting.md which is more of a generic "wait" on resources. Not sure about the implementation, but we could have a look, too. |
|
Nice observation on the logs! 👍 A service is created with BYO revision name and deleted. |
|
/retest |
1 similar comment
|
/retest |
|
/retest |
1 similar comment
|
/retest |
This reverts commit 9bb60ac.
|
The following is the coverage report on the affected files.
|
|
@navidshaikh I've reverted sync revision delete commit 9bb60ac due to several side-effects that popped up in E2E tests. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: dsimansk, navidshaikh The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
In it's current state it now takes me about 25 seconds for the `kn delete` to complete. Before knative#682 it used to be almost immediate. This is because we now pass in the `DeletePropagationBackground` flag. I believe this is a mistake, not only because of the 20+ seconds of additional time to delete things, but IMO the CLI should talk to the server in the same way regardless of the --wait flag. That flag should just be a CLI thing to indicate if the user wants the CLI to wait for the server to complete but not HOW the server should do the delete. Signed-off-by: Doug Davis <dug@us.ibm.com>
* Remove the delete propagation flag In it's current state it now takes me about 25 seconds for the `kn delete` to complete. Before #682 it used to be almost immediate. This is because we now pass in the `DeletePropagationBackground` flag. I believe this is a mistake, not only because of the 20+ seconds of additional time to delete things, but IMO the CLI should talk to the server in the same way regardless of the --wait flag. That flag should just be a CLI thing to indicate if the user wants the CLI to wait for the server to complete but not HOW the server should do the delete. Signed-off-by: Doug Davis <dug@us.ibm.com> * try just tweaking the --no-wait flag Signed-off-by: Doug Davis <dug@us.ibm.com>
* Remove the delete propagation flag In it's current state it now takes me about 25 seconds for the `kn delete` to complete. Before knative#682 it used to be almost immediate. This is because we now pass in the `DeletePropagationBackground` flag. I believe this is a mistake, not only because of the 20+ seconds of additional time to delete things, but IMO the CLI should talk to the server in the same way regardless of the --wait flag. That flag should just be a CLI thing to indicate if the user wants the CLI to wait for the server to complete but not HOW the server should do the delete. Signed-off-by: Doug Davis <dug@us.ibm.com> * try just tweaking the --no-wait flag Signed-off-by: Doug Davis <dug@us.ibm.com>
* (refactor) address the e2e extract / refactor of issue #763 (#765) * (refactor) address the e2e extract / refactor of issue #763 * various updates to address reviewers feedback * renamed lib/test/integration to lib/test and package to test Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # CHANGELOG.adoc # test/e2e/service_export_import_apply_test.go # test/e2e/trigger_test.go * fix(plugin): Fix plugin lookup with file ext on Windows (#774) * fix(plugin): Fix plugin lookup with file ext on Windows * chore: Update changelog * fix: Reflect review feedback * fix: Reflect review feedback and add future todo Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # CHANGELOG.adoc * fix(issue #762): correct error message when updating service (#778) * fix(issue #762): correct error message when updating service * correct message when updating service and passing many names * fix issue with TestServiceUpdateWithMultipleImages running create vs update * * added TestServiceDescribeWithMultipleNames * added TestServiceCreateWithMultipleNames * fix error message for service delete since many names can be passed * Use vendored deps while running e2e locally (#783) Also set GO111MODULE=on unconditionally * Update sink binding create usage string (#785) * Add "--target-utilization" to manage "autoscaling.knative.dev/targetUtilizationPercentage" annotation (#788) * Support setting "autoscaling.knative.dev/targetUtilizationPercentage" annotation. Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # test/e2e/service_options_test.go * Remove the delete propagation flag (#770) * Remove the delete propagation flag In it's current state it now takes me about 25 seconds for the `kn delete` to complete. Before #682 it used to be almost immediate. This is because we now pass in the `DeletePropagationBackground` flag. I believe this is a mistake, not only because of the 20+ seconds of additional time to delete things, but IMO the CLI should talk to the server in the same way regardless of the --wait flag. That flag should just be a CLI thing to indicate if the user wants the CLI to wait for the server to complete but not HOW the server should do the delete. Signed-off-by: Doug Davis <dug@us.ibm.com> * try just tweaking the --no-wait flag Signed-off-by: Doug Davis <dug@us.ibm.com> * Fix error when output is set to name (#775) * fix error when output is set to name * add e2e test * change to flags/listprint.go Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # test/e2e/basic_workflow_test.go * Show all revisions when run `service describe -v` (#790) * The `kn service describe -v` command shows repetitive revisions, because the revision would be covered by next one. * Fix resource listing with -oname flag (#799) * Fix resource listing with -oname flag * add e2e tests Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # test/e2e/ping_test.go # test/e2e/revision_test.go # test/e2e/route_test.go # test/e2e/source_apiserver_test.go # test/e2e/source_binding_test.go # test/e2e/trigger_test.go * Make wait, no-wait and async flags per bool var CLI convention (#802) * Make wait, no-wait and async flags per bool var CLI convention Fixes #800 - Deprecated bool vars can be supported for CLI convention - Bind --async flag value to --no-wait - Only one flag among [wait, no-wait, async] can be provided, else raise an error * Simplify conditionals * Add unit tests for deprecated flag async * Fix a typo * e2e: Foreground delete for revisions and services in e2e (#794) * e2e: Foreground delete for revisions and services in e2e to avoid any race conditions and flakes * Use --wait instead of --no-wait=false Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # test/e2e/basic_workflow_test.go # test/e2e/revision_test.go * e2e: Run tekton e2e against pipeline v0.11.1 (#803) * Use buildah task from master branch and paramterize FORMAT * Configure pipeline v0.11.1 * DNM: Run tekton e2e in this PR * Revert "DNM: Run tekton e2e in this PR" This reverts commit 903f5be. * Update CHANGELOG for v0.13.2 (#804) * Pin serving to v0.13.2 and update version command (#797) * Pin serving v0.13.2 dep to v0.13.2 * Update version command now points to serving v0.13.2 and eventing v0.13.6 * Copy go.sum as generated in CI Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # go.mod # go.sum # vendor/modules.txt * add missing vendored files * fixed error reporting for traffics tests * Updated test * fix formatting * e2e for service export (#739) * e2e for service export * e2e for service export * e2e for service export * e2e for service export * e2e for service export Signed-off-by: Roland Huß <roland@ro14nd.de> # Conflicts: # test/e2e/service_export_import_apply_test.go Co-authored-by: dr.max <maxim@us.ibm.com> Co-authored-by: David Simansky <dsimansk@redhat.com> Co-authored-by: Navid Shaikh <nshaikh@redhat.com> Co-authored-by: Lv Jiawei <lvjiawei@cmss.chinamobile.com> Co-authored-by: Doug Davis <dug@us.ibm.com> Co-authored-by: Ying Chun Guo <guoyingc@cn.ibm.com> Co-authored-by: Murugappan Chetty <itsmurugappan@gmail.com>
Update Konflux components and pipelines Co-authored-by: serverless-qe <serverless-support@redhat.com>
Fixes #671
Proposed Changes
waitForEventlogic to wait packageclient.DeleteService()timeout == 0asyn delete without waitservice deleteto wait by default--no-waitflag todeleteopGenerated doc for
--no-waitflag seems a bit off, as it was meant for ready use-case primarly. I'll take a closer after actual waiting logic in reviewed.