From fa01569cc63cb106e2161f18517722cc21250d3d Mon Sep 17 00:00:00 2001 From: Otto Bittner Date: Mon, 5 Jun 2023 15:47:33 +0200 Subject: [PATCH] staticupload: don't request empty invalidation (#1870) If no files have been touched, do not initiate an invalidation. --- internal/staticupload/staticupload.go | 9 +++++++++ internal/staticupload/staticupload_test.go | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/internal/staticupload/staticupload.go b/internal/staticupload/staticupload.go index 51a214726..3276da613 100644 --- a/internal/staticupload/staticupload.go +++ b/internal/staticupload/staticupload.go @@ -125,6 +125,10 @@ func (c *Client) Flush(ctx context.Context) error { c.mux.Lock() defer c.mux.Unlock() + if len(c.dirtyKeys) == 0 { + return nil + } + // invalidate all dirty keys that have not been invalidated yet invalidationID, err := c.invalidateCacheForKeys(ctx, c.dirtyKeys) if err != nil { @@ -146,6 +150,11 @@ func (c *Client) invalidate(ctx context.Context, keys []string) error { c.dirtyKeys = append(c.dirtyKeys, keys...) return nil } + + if len(keys) == 0 { + return nil + } + // eagerly invalidate the CDN cache invalidationID, err := c.invalidateCacheForKeys(ctx, keys) if err != nil { diff --git a/internal/staticupload/staticupload_test.go b/internal/staticupload/staticupload_test.go index 46b732964..907f98be9 100644 --- a/internal/staticupload/staticupload_test.go +++ b/internal/staticupload/staticupload_test.go @@ -357,6 +357,7 @@ func TestFlush(t *testing.T) { wantCacheInvalidationErr: true, }, "waiting for invalidation times out": { + dirtyKeys: []string{"test-key-1"}, invalidationIDs: []string{ "test-invalidation-id-2", "test-invalidation-id-3", @@ -364,6 +365,9 @@ func TestFlush(t *testing.T) { cacheInvalidationWaitTimeout: time.Microsecond, wantCacheInvalidationErr: true, }, + "no invalidations": { + dirtyKeys: []string{}, + }, } for name, tc := range testCases {