Почему облачные функции для Firebase занимают 25 секунд?

Для ясности у меня есть другие облачные функции, которые все работают с перебоями (т.е. из "холодного" за 2-6 секунд, и все используют один и тот же шаблон для импорта экземпляра администратора и экспорта функции как модуля)

Я видел другие подобные посты, но это действительно беспокоит меня. У меня есть облачная функция, вот так:

const admin = require('../AdminConfig');
const { reportError } = require('../ReportError');

module.exports = (event) => {
  const uid = event.params.uid;
  const snapshot = event.data;

  if (snapshot._newData === null ) {
   return null;
   }

  console.log('Create org begin running: ', Date.now());
  const organisation = event.data.val();
  const rootRef = admin.database().ref();
  const ref = rootRef.child('/organisations').push();
  const oid = ref.key;

  const userData = {
    level: 'owner',
    name: organisation.name,
   };

  const orgShiftInfo = {
    name: organisation.name,
    startDay: organisation.startDay || 'Monday',
   };

   const updatedData = {};
   updatedData[`/users/${uid}/currentOrg`] = oid;
   updatedData[`/users/${uid}/organisations/${oid}`] = userData;
   updatedData[`/organisations/${oid}`] = organisation;
   updatedData[`/org_shift_info/${oid}`] = orgShiftInfo;
   rootRef.update(updatedData, (err) => {

     if (err) {
       return rootRef.child(`/users/${uid}/addOrgStatus`).set({ error: true })
      .then(() => {
    console.log(`error adding organisation for ${uid}: `, err);
    return reportError(err, { uid });
    });
    }

   console.log('Create org wrote succesfully: ', Date.now());
    return rootRef.child(`/users/${uid}/addOrgStatus`).set({ success: true });
 });
}

Я понимаю, что такое "холодный старт", но я думаю, что что-то серьезно не так, что это занимает 25 секунд. Журналы не возвращают никаких ошибок и выглядят так:

Есть ли какой-нибудь более глубокий способ отладки, чтобы попытаться выяснить, почему это занимает так много времени? Это непригодно в данный момент. Большое спасибо.

1 ответ

Решение

Решено: Извините, я немного неправильно понял API. Я должен был сначала посмотреть видео обещание!

Мне нужно было поставить

return rootRef.update...

вместо

rootRef.update...
Другие вопросы по тегам