diff --git a/pkg/client/client.go b/pkg/client/client.go index c3eb247..e08dbb6 100644 --- a/pkg/client/client.go +++ b/pkg/client/client.go @@ -194,3 +194,15 @@ func (c *Client) addToCache(longURL, shortID string) { }) }() } + +func (c *Client) remFromCache(longURL string) { + c.cacheMap.Remove(longURL) + + // Async write to BoltDB + go func() { + _ = c.db.Update(func(tx *bolt.Tx) error { + b := tx.Bucket([]byte("url_cache")) + return b.Delete([]byte(longURL)) + }) + }() +} diff --git a/pkg/client/store.go b/pkg/client/store.go index 1971e6e..8402897 100644 --- a/pkg/client/store.go +++ b/pkg/client/store.go @@ -96,7 +96,8 @@ func (c *Client) enqueueJob(job shortenJob) { select { case c.retryQueue <- job: default: - log.Println("Retry queue full, dropping job:", job.ID) + log.Println("Retry queue full, dropping job and removing from caches:", job.ID, job.URL) + go c.remFromCache(job.URL) } }