From cf92a2a9a3db2b11ee2aafce4ce176d4ecbdded6 Mon Sep 17 00:00:00 2001 From: "M. J. Fromberger" Date: Wed, 25 Mar 2026 10:48:54 -0700 Subject: [PATCH] add discard method for the disk cache Change-Id: I7f597e3b1ad5319c0baf82079b248be948bf4b22 Signed-off-by: M. J. Fromberger --- ipn/ipnlocal/diskcache.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/ipn/ipnlocal/diskcache.go b/ipn/ipnlocal/diskcache.go index 0b1b7b448..f04829e98 100644 --- a/ipn/ipnlocal/diskcache.go +++ b/ipn/ipnlocal/diskcache.go @@ -54,3 +54,29 @@ func (b *LocalBackend) loadDiskCacheLocked() (om *netmap.NetworkMap, ok bool) { } return nm, true } + +func (b *LocalBackend) discardDiskCacheLocked() { + if !buildfeatures.HasCacheNetMap { + return + } + if b.diskCache.cache == nil { + return // nothing to do, we do not have a cache + } + + // Reaching here, we have a cache directory that needs to be purged. + // Log errors but do not fail for them. + store := netmapcache.FileStore(b.diskCache.dir) + ctx := b.currentNode().Context() + for key, err := range store.List(ctx, "") { + if err != nil { + b.logf("listing cache contents: %v", err) + break + } + if err := store.Remove(ctx, key); err != nil { + b.logf("discarding cache key %q: %v", key, err) + } + } + + b.diskCache.cache = nil // drop reference + b.diskCache.dir = "" +}