FirestoreAdminClient: сбой запланированного экспорта Firestore завершается ошибкой «Ошибка: 4 DEADLINE_EXCEEDED» - PullRequest
0 голосов
/ 26 января 2020

Мы используем запланированную функцию в нашем проекте Firebase, как описано здесь для ежедневного резервного копирования всех наших коллекций:

schedule-backup.function.ts

import * as functions from 'firebase-functions';
import firestore from '@google-cloud/firestore';

const client = new firestore.v1.FirestoreAdminClient();

export function onScheduledBackupFunction() {
  return functions
    .runWith({
      timeoutSeconds: 540,
    })
    .pubsub.schedule('30 1 * * *')
    .onRun(() => {
      return client
        .exportDocuments(
          {
            name: client.databasePath(process.env.GCLOUD_PROJECT, '(default)'),
            outputUriPrefix: `gs://BACKUPS`,
            collectionIds: [], // "all collections"
          });
    });
}

Время от времени мы сталкиваемся со следующей ошибкой:

"Error: 4 DEADLINE_EXCEEDED: Deadline exceeded
at Object.callErrorFromStatus (/srv/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
at Http2CallStream.call.on (/srv/node_modules/@grpc/grpc-js/build/src/client.js:96:33)
at emitOne (events.js:121:20)
at Http2CallStream.emit (events.js:211:7)
at process.nextTick (/srv/node_modules/@grpc/grpc-js/build/src/call-stream.js:97:22)
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)" 

Глядя на справочник по API Do c, мы также пытались увеличить тайм-аут вызова exportDocuments:

client
        .exportDocuments(
          {
            name: client.databasePath(process.env.GCLOUD_PROJECT, '(default)'),
            outputUriPrefix: `gs://BACKUPS`,
            collectionIds: [], // "all collections"
          }),
          {
            timeout: 540000
          } as CallOptions;

Но ошибка остается. Мы используем версию 3.4.0 из @google-cloud/firestore. Итак, как мы можем безопасно экспортировать все документы ежедневно, не прибегая к этим тайм-аутам?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...