SyncSession.ClientResetHandler とのインターフェース
io.realm.mongodb.sync
実装されたインターフェース:
クラスを囲みます。
エラー コードErrorCode.CLIENT_リセット によって決定される、 クライアントリセット と呼ばれる特定のエラー イベントのコールバック。
同期された Realm をリセットする必要があるのは、MongoDB Realm Server でエラーが発生し、バックアップから復元する必要があったため、またはクライアントがサーバーに接続してから時間が経過しすぎてサーバーがログをローテーションしたためです。
したがって、クライアントを完全に最新の状態にするために必要な完全な情報がサーバーにないために、クライアントリセットが発生します。
リセット プロセスは次のとおりです。Realm のローカル コピーは、安全性を確保するためにリカバリ ディレクトリにコピーされ、元の場所から削除されます。 次にその URL の Realm が開かれると、Realm は MongoDB Realm から自動的に再ダウンロードされ、通常どおり使用できるようになります。
バックアップ リモート コピーから相違した Realm のローカル コピーの後に Realm に書き込まれたデータは、Realm ファイルのローカル リカバリ コピーに存在します。 再ダウンロードされた Realm には、最初は Realm がサーバー上でバックアップされていた時点でのデータのみが含まれます。
クライアント リセット プロセスは、次の 2 つの方法のいずれかで開始されます。
ClientResetRequiredError.executeClientReset()を手動で実行します。 このメソッドを呼び出す前に、すべての Realm インスタンスを閉じる必要があります。
クライアントリセットが手動で実行されない場合、次にすべての Realm インスタンスが閉じてから再度開かれたときに自動的に実行されます。 アプリを再起動した際に、 である可能性が高くなります。
警告:このコールバックとクライアント リセットの間の Realm ファイルへの書込みは、MongoDB Realm に同期されません。 これらの変更は、バックアップされた ファイルにのみ存在します。 したがって、開いているすべての Realm インスタンスを可能な限りすぐに閉じることをお勧めします。