Store icon indicating copy to clipboard operation
Store copied to clipboard

Misleading docs and behavior of Store.clear()

Open bobymicroby opened this issue 7 years ago • 6 comments

Store.clear() claims that it will purge all entries from memory and disk cache

     /**
     * purges all entries from memory and disk cache
     * Persister will only be cleared if they implements Clearable
     */
    void clear();

But in fact it only clears from the disk the entries that are currently in the memory cache.

    @Override
    public void clear() {
        for (Key cachedKey : memCache.asMap().keySet()) {
            clear(cachedKey);
        }
    }

If you call this method after a cold start, nothing will be purged from disk, leaving many entries roaming around the disk without a pointer.

bobymicroby avatar Jan 30 '19 12:01 bobymicroby

Yeah that's pretty crappy. I never found a good way to fix it. One solution is to delegate responsibility to a user's persister by calling clear. Alternatively a store can be stateful which is hard without storage. Open to suggestions 🤔

digitalbuddha avatar Jan 30 '19 12:01 digitalbuddha

First thing that comes to mind

image

And on clear() we check if the resolver is the proper instance and if so, we delete the directory :)

P.S I know that this is pretty lame, and there are a lot of things to consider. When I can find the time i will give it a proper thought and hopefully will come to a nice solution. Cheers !

bobymicroby avatar Jan 30 '19 12:01 bobymicroby

That looks reasonable. I'll think about it as well.

digitalbuddha avatar Jan 30 '19 13:01 digitalbuddha

Any news regarding this? My use case is quite simple: Need to clean entries from disk when a user logs out. It certainly would be nice to be able to purge all entries without having to resort on "hacks", like setting a different type per user to force re-fetching when types don't match...

mradzinski avatar May 27 '19 17:05 mradzinski

We are working on new version. It will have a better handle for this. Not sure release date

digitalbuddha avatar May 27 '19 17:05 digitalbuddha

@mradzinski @digitalbuddha I've implemented POC that works based on my proposal above. Tried it in prod in my last app, living on the edge and stuff, and didn't find time to polish it to good PR. Shame.

bobymicroby avatar May 28 '19 11:05 bobymicroby