Skip to content

Commit eafc2ab

Browse files
authored
Merge pull request #93 from arangodb/pv-cleanup-fixes
Fixing PV cleanup
2 parents 1173d8e + 6ce6197 commit eafc2ab

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

pkg/storage/pv_cleanup.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"k8s.io/client-go/kubernetes"
3535

3636
"github.com/arangodb/kube-arangodb/pkg/storage/provisioner"
37+
"github.com/arangodb/kube-arangodb/pkg/util/k8sutil"
3738
"github.com/arangodb/kube-arangodb/pkg/util/trigger"
3839
)
3940

@@ -159,7 +160,7 @@ func (c *pvCleaner) clean(pv v1.PersistentVolume) error {
159160
}
160161

161162
// Remove persistent volume
162-
if err := c.cli.CoreV1().PersistentVolumes().Delete(pv.GetName(), &metav1.DeleteOptions{}); err != nil {
163+
if err := c.cli.CoreV1().PersistentVolumes().Delete(pv.GetName(), &metav1.DeleteOptions{}); err != nil && !k8sutil.IsNotFound(err) {
163164
log.Debug().Err(err).
164165
Str("name", pv.GetName()).
165166
Msg("Failed to remove PersistentVolume")

pkg/storage/pv_inspector.go

+17-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
package storage
2424

2525
import (
26+
"time"
27+
2628
"k8s.io/api/core/v1"
2729
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2830
)
@@ -38,14 +40,28 @@ func (ls *LocalStorage) inspectPVs() (int, error) {
3840
}
3941
spec := ls.apiObject.Spec
4042
availableVolumes := 0
43+
cleanupBeforeTimestamp := time.Now().Add(time.Hour * -24)
4144
for _, pv := range list.Items {
4245
if pv.Spec.StorageClassName != spec.StorageClass.Name {
4346
// Not our storage class
4447
continue
4548
}
4649
switch pv.Status.Phase {
4750
case v1.VolumeAvailable:
48-
availableVolumes++
51+
// Is this an old volume?
52+
if pv.GetObjectMeta().GetCreationTimestamp().Time.Before(cleanupBeforeTimestamp) {
53+
// Let's clean it up
54+
if ls.isOwnerOf(&pv) {
55+
// Cleanup this volume
56+
log.Debug().Str("name", pv.GetName()).Msg("Added PersistentVolume to cleaner")
57+
ls.pvCleaner.Add(pv)
58+
} else {
59+
log.Debug().Str("name", pv.GetName()).Msg("PersistentVolume is not owned by us")
60+
availableVolumes++
61+
}
62+
} else {
63+
availableVolumes++
64+
}
4965
case v1.VolumeReleased:
5066
if ls.isOwnerOf(&pv) {
5167
// Cleanup this volume

0 commit comments

Comments
 (0)