c2de29ab0c
being open with a different schema version In order to correctly open read-only synchronized Realms, `Realm.open` would open the Realm without specifying a schema or schema version, wait for any remote changes to be downloaded (if appropriate), and then re-open the Realm with the specified schema and schema version. This would lead to an exception about the Realm being open with a different schema version if the Realm had previously been opened with a different schema version, due to the way `RealmCoordinator` caches information about the schema of open Realms. We address this by making two changes: 1. `Realm.open` for non-synchronized Realms no longer goes through `_waitForDownload`. This means the dance described above where the Realm is opened twice is not used for local Realms. 2. `_waitForDownload` no longer keeps the `Realm` alive until after its callback has returned. It instead keeps the `SyncSession` alive. This is sufficient to avoid the connection being torn down and having to reconnect when `_waitForDownload`'s callback later opens the Realm with the correct schema and schema version, while also allowing for `RealmCoordinator`'s cached information to be cleared when the schemaless Realm is closed prior to the Realm being reopened. In addition, tests have been added that reproduced the problem in both a local and sync context. |
||
---|---|---|
.. | ||
data | ||
electron | ||
ios | ||
js | ||
react-test-app | ||
spec | ||
test-runners | ||
.eslintrc.json | ||
.gitignore | ||
.npmignore | ||
index.js | ||
package.json |