Skip to content

Commit ae82615

Browse files
committed
Throttling issue fixed: Persistent Volumes
1 parent 06a2dbf commit ae82615

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

lib/deployment/deployment.go

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/sdslabs/katana/lib/utils"
1515
appsv1 "k8s.io/api/apps/v1"
1616
v1 "k8s.io/api/core/v1"
17+
errors "k8s.io/apimachinery/pkg/api/errors"
1718
"k8s.io/apimachinery/pkg/api/meta"
1819
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1920
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
@@ -97,7 +98,6 @@ func ApplyManifest(kubeconfig *rest.Config, kubeclientset *kubernetes.Clientset,
9798
watcher, err := dri.Watch(context.Background(), metav1.ListOptions{
9899
FieldSelector: fmt.Sprintf("metadata.name=%s", unstructuredObj.GetName()),
99100
})
100-
101101
if err != nil {
102102
return err
103103
}
@@ -129,27 +129,28 @@ func ApplyManifest(kubeconfig *rest.Config, kubeclientset *kubernetes.Clientset,
129129
// Resource deleted and we can re-create it
130130
_, err = dri.Create(context.Background(), unstructuredObj, metav1.CreateOptions{})
131131
if err != nil {
132-
log.Printf("Failed to re-create resource %s: %v", unstructuredObj.GetName(), err)
132+
log.Printf("[Deletion done] Failed to re-create resource %s: %v", unstructuredObj.GetName(), err)
133133
return err
134134
}
135135
case <-time.After(timeout):
136-
// Timeout reached
137-
_, err = dri.Create(context.Background(), unstructuredObj, metav1.CreateOptions{})
138-
if err != nil {
139-
log.Printf("[Timedout] Failed to re-create resource %s: %v", unstructuredObj.GetName(), err)
140-
return err
136+
// Timeout reached, check if resource still exists.
137+
existingObj, getErr := dri.Get(context.Background(), unstructuredObj.GetName(), metav1.GetOptions{})
138+
if getErr == nil {
139+
// Resource still exists, so deletion timed out.
140+
return fmt.Errorf("[Timedout] waiting for deletion of resource %s", existingObj.GetName())
141+
}
142+
// If error confirms resource is not found, proceed to re-create.
143+
if errors.IsNotFound(getErr){
144+
_, err = dri.Create(context.Background(), unstructuredObj, metav1.CreateOptions{})
145+
if err != nil {
146+
log.Printf("Failed to re-create resource %s: %v", unstructuredObj.GetName(), err)
147+
return err
148+
}
149+
}else{
150+
// An unexpected error occurred during GET call
151+
return getErr
141152
}
142153
}
143-
144-
// for event := range watcher.ResultChan() {
145-
// if event.Type == watch.Deleted {
146-
// _, err = dri.Create(context.Background(), unstructuredObj, metav1.CreateOptions{})
147-
// if err != nil {
148-
// return err
149-
// }
150-
// break
151-
// }
152-
// }
153154
}
154155
}
155156
}

0 commit comments

Comments
 (0)