We sync all the changes to `downloadList` from `datastore`.  And then we apply the result back to the datastore. Not sure why we need this. `downloadListDB` seems not be involved in all the process...