One of the primary issues with the current patch to update Lightning to use asynchronous storage is that when a timezone upgrade has to be performed, a database operation has to be performed on each item. This can make for a (likely) extensive process, and could potentially hang the program while the update is being performed. The obvious solution is to convert the upgrade to be asynchronous as well, but that comes with a lot of undesirable side effects. If a user changes the time an event starts before the upgrade finishes in the background, confusion over the correct start time would occur. As a result, currently I’m working on a progress dialog so that the user knows what’s happening, instead of the program silently hanging. This may not be the best solution, but timezone upgrades generally do not have to be performed that often. We are getting closer to putting the finishing touches on the patch, and on a Summer of Code related note, midterms are next week. The hope is to have the asynchronous storage patch reviewed and commited by the end of next week, as well as some more work done on the movement of metadata.
The work continues. It’s not quite finished, but a patch that’s getting close has been attached to Bug 501689 for feedback. In the mean time, we’ve begun looking at moving item metadata from the provider interface to the item interface. While not a necessity for either async storage or a cache-only system, it comes with some benefits. As it currently is, each provider would have to duplicate code to retrieve the item specific metadata that we want. If we save this with the item, the code can be kept a lot cleaner. It’s the next step, and once completed we can begin looking forward to doing the real work on implementing a cache-only system.