パッケージ io.realm.mongodb.sync

インターフェース ManuallyReoverUnsyncedchangesStratey

  • すべてのスーパーインターフェース:
    SyncClientResetStrategy
    すべての既知のサブインターフェース:
    SyncSession.ClientResetHandler

    public interface ManuallyRecoverUnsyncedChangesStrategy
    extends SyncClientResetStrategy
    エラー コードErrorCode.CLIENT_RESETによって決定される、 クライアントリセット を手動で解決するための戦略。

    同期された Realm をリセットする必要があるのは、MongoDB Realm Server でエラーが発生し、バックアップから復元する必要があったため、またはクライアントがサーバーに接続してから時間が経過しすぎてサーバーがログをローテーションしたためです。

    したがって、クライアントを完全に最新の状態にするために必要な完全な情報がサーバーにないために、クライアントリセットが発生します。

    手動リセットのプロセスは次のとおりです。Realm のローカル コピーは、安全性を確保するためにリカバリ ディレクトリにコピーされ、その後、元の場所から削除されます。 次にその URL の Realm が開かれると、Realm は MongoDB Realm から自動的に再ダウンロードされ、通常どおり使用できるようになります。

    バックアップ リモート コピーから相違した Realm のローカル コピーの後に Realm に書き込まれたデータは、Realm ファイルのローカル リカバリ コピーに存在します。 再ダウンロードされた Realm には、最初は Realm がサーバー上でバックアップされていた時点でのデータのみが含まれます。

    クライアント リセット プロセスは、次の 2 つの方法のいずれかで開始されます。

    1. ClientResetRequiredError.executeClientReset()を手動で実行します。 このメソッドを呼び出す前に、すべての Realm インスタンスを閉じる必要があります。
    2. クライアントリセットが手動で実行されない場合、次にすべての Realm インスタンスが閉じてから再度開かれたときに自動的に実行されます。 アプリを再起動した際に、 である可能性が高くなります。
    警告:このコールバックとクライアント リセットの間の Realm ファイルへの書込みは、MongoDB Realm に同期されません。 これらの変更は、バックアップされた ファイルにのみ存在します。 したがって、開いているすべての Realm インスタンスを可能な限りすぐに閉じることをお勧めします。
    • メソッドの詳細

      • onClientReset

        void onClientReset​(SyncSession session,
                           ClientResetRequiredError error)
        クライアント リセットが発生したことを示すコールバック。 これは、Realm へのこれ以上の変更はサーバーと同期されず、バックアップ Realm から新しい Realm に手動で移動する必要があるため、可能な限り迅速に処理する必要があります。
        パラメーター:
        session - このエラーはSyncSessionで発生しました。
        error - ClientResetRequiredError特定のクライアント リセット エラー。