New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ship Akavache 4.0 #100

merged 339 commits into from Jul 17, 2014


None yet
7 participants
Copy link

paulcbetts commented Dec 16, 2013

This branch is the Master branch for tracking all of the stuff that will eventually become Akavache 4.0

What Needs To Ship

  • Garbage collection / cleanup
  • Deprecate filesystem-based backend by moving Akavache package to Akavache.Core, make Akavache package a metapackage that requires SQLite3, and move the filesystem-based backend to an Akavache.IPromiseToUpgrade package
  • Documentation Pass
  • Add Get / Post helper methods to IHttpScheduler that proxy to Send, like HttpClient does
  • Misc. NuGet package fixups
  • Catch bugs related to missing being registered
  • Add a Universal build
  • Make the Deprecated filesystem-based backend readonly
  • Fix table locking (#134)

What has shipped

  • Remove dependency on ReactiveUI (#99)
  • Move to Microsoft Rx 2.2.2 (#103)
  • Create a scheme for making database migration changes (#108)
  • Fix synchronous GetKeys (#111)
  • Garbage collection (#114)

What's Shelved

  • Our port of Volley
  • Ship an initial version of the Akavache networking stuff (#102)

Breaking Changes

  • Akavache now depends on the Microsoft version of Rx 2.2.2 on all platforms - shouldn't break any code but binaries will Get Weird™.
  • You need to await GetAllKeys now

Paul Betts and others added some commits Jan 1, 2014

Paul Betts
Merge pull request #105 from onovotny/build-fixes
Fix build config param so it actually builds release mode
Paul Betts
Make sure we can't get into any cache method before initializing
Note that methods that call into _inflightCache don't have to initialize
because the _inflightCache method does it for us
Paul Betts
Remove overcomplicated SendAsyncObservable
We had to switch between Rx Cancelation Nature and TPL Cancelation
Nature a few too many times.
Paul Betts
Fix priority inversion in caching scheduler
Consider the following scenario:
1. We queue up a bunch of low priority requests, the last of which is to
2. We then queue up a super high priority request to http://foo

Under the previous code, we'd return the low prio request since its key
would match, and the high-prio request would be slow.

In this suboptimal yet way simpler fix, we consider the priority as part
of the inflight key, which means that the low priority request still has
to wait in line, but it's highly probable that this will be a cache hit.
This also has the possibility that we could make concurrent Gets to the
same resource. Unfortunate, but the alternate is real damn hard to fix.
Paul Betts
Fix bug where we broke cancelation
I don't want to talk about how long it took me to find this.
Add a MonoMac version of Akavache.Http
Also, update the other Xamarin csproj files

paulcbetts and others added some commits Jul 11, 2014

Eviscerate the old SQLite3 driver
We still need to preserve the migration logic and serialization stuff
Merge remote-tracking branch 'origin/akavache4-master' into sqlite-ng
Paul Betts
Merge pull request #155 from akavache/sqlite-ng
SQLite3 v.Next Initial Implementation

paulcbetts pushed a commit that referenced this pull request Jul 17, 2014

@paulcbetts paulcbetts merged commit 0191408 into master Jul 17, 2014


This comment has been minimized.

Copy link

jlaanstra commented on Akavache.Sqlite3/OperationQueue.cs in 5ddd940 Sep 9, 2014

@paulcbetts It seems that because of the TryTake items are most likely processed at once, unless the requests for the cache are basically executed directly after one another. Should this TryTake take some kind of timeout?

This comment has been minimized.

Copy link

paulcbetts replied Sep 9, 2014

Maybe? It'd be interesting to log the number of items we're processing to see if that's happening

@glennawatson glennawatson deleted the akavache4-master branch Dec 27, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment