Releases: reactiveui/Akavache
Releases · reactiveui/Akavache
Akavache 2.6.0
What's New
Race Condition Changes
Consider the following piece of code:
BlobCache.UserAccount.Invalidate("TheKey");
BlobCache.UserAccount.InsertObject("TheKey", new MyAwesomeKey());
This code is technically incorrect, yet will often appear to work correctly depending on the backing BlobCache. The reason is, that the invalidate and Insert happen concurrently, meaning it is possible for the Insert to succeed, then the Invalidate to remove the new key (never mind that it isn't necessary to actually Invalidate before Insert). To fix this, in Akavache 2.6.0, operations done to the same key are guaranteed to happen in order.
Shutdown Changes
Disposing a BlobCache is asynchronous, yet the Dispose
method call has no way to signal when it is complete. A new Shutdown
Observable exists to facilitate this. So, to flush the blob cache properly, now run:
BlobCache.UserAccount.Dispose();
BlobCache.UserAccount.Shutdown.Wait();
Other Changes
- Bug fixes around leaking file handles in certain circumstances
- Fixes to more clearly throw error messages when Akavache is used incorrectly