2

GAE アプリケーションの 1 つで一貫したエラーが発生しています (スタック トレースは以下にあります)。誰がこれを引き起こしているのか知っていますか? 一時的なエラー (短命のエラーである必要があります) がスローされますが、このエラーは一貫して発生します。

スタックトレース

com.google.appengine.api.search.DeleteException: 一時的なエラーです。RPC の期限を超えました。com.google.appengine.api.search.IndexImpl$2.convertException(IndexImpl.java:217) で com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:94) で com.google.appengine. api.search.FutureHelper.getInternal(FutureHelper.java:73) com.google.appengine.api.search.FutureHelper.quietGet(FutureHelper.java:32) で com.google.appengine.api.search.IndexImpl.delete( IndexImpl.java:480)

コード

        Index index = getIndex(nameSpace, indexKind);
    while (true) {
        List<String> docIds = new ArrayList<String>();
        // Return a set of doc_ids.
        GetRequest request = GetRequest.newBuilder().setReturningIdsOnly(true).build();
        GetResponse<Document> response = index.getRange(request);
        if (response.getResults().isEmpty()) {
            break;
        }
        for (Document doc : response) {
            docIds.add(doc.getId());
        }
        index.delete(docIds);
    }

ありがとう、マイク

4

2 に答える 2

2

リクエストごとに最大 200 件の削除をサポートしています。複数のスレッド間で並行してドキュメントをインデックス化 (および削除) する方法に関連して、バックエンド リリースにバグがあったことが判明しました。一度に 76 を超えるドキュメントのインデックス作成または削除を行うと、一部のリクエストがタイムアウトになりました。76 以下のバッチサイズは影響を受けませんでした。水曜日の午後遅く (太平洋時間) までに修正プログラムをすべての場所に配布したので、最大 200 のドキュメントのバッチを問題なく再度送信できるはずです。

于 2014-07-25T19:42:02.893 に答える
0

削除クエリが RPC 期限を超えています。削除するためにいくつのドキュメントが渡されていますか? 50 のバッチで実行してみてください。これで問題は解決するはずです。

于 2014-07-23T15:03:18.383 に答える