From bcf2ec3de8dfdf1ba089b075e9530e53db730596 Mon Sep 17 00:00:00 2001 From: Lv Jiawei Date: Mon, 1 Jun 2020 19:02:03 +0800 Subject: [PATCH] Check deletionTimestamp for "kn revision delete" (#860) * Check deletionTimestamp for "kn revision delete" Fixes: #815 * Update error message for revision delete Co-authored-by: Navid Shaikh --- pkg/serving/v1/client.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/serving/v1/client.go b/pkg/serving/v1/client.go index e2f9765a1..cfca0847c 100644 --- a/pkg/serving/v1/client.go +++ b/pkg/serving/v1/client.go @@ -378,6 +378,13 @@ func getBaseRevision(cl KnServingClient, service *servingv1.Service) (*servingv1 // Delete a revision by name func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) error { + revision, err := cl.client.Revisions(cl.namespace).Get(name, v1.GetOptions{}) + if err != nil { + return clienterrors.GetError(err) + } + if revision.GetDeletionTimestamp() != nil { + return fmt.Errorf("can't delete revision '%s' because it has been already marked for deletion", name) + } if timeout == 0 { return cl.deleteRevision(name) } @@ -387,7 +394,7 @@ func (cl *knServingClient) DeleteRevision(name string, timeout time.Duration) er err, _ := waitForEvent.Wait(name, wait.Options{Timeout: &timeout}, wait.NoopMessageCallback()) waitC <- err }() - err := cl.deleteRevision(name) + err = cl.deleteRevision(name) if err != nil { return clienterrors.GetError(err) }