Я только начал использовать облачные функции Google. И ведут себя странно (или я что-то не так делаю). У меня есть следующая функция, которая пересчитывает средний рейтинг, когда пользователь оценивает какой-либо элемент
exports.onItemRated = functions.database.ref('/votes_history/{rankingId}/current/{itemId}').onWrite(event => {
const ranks = event.data.val();
const itemId = event.params.itemId;
const rankingId = event.params.rankingId;
let avg = 0;
let num = 0;
Object.keys(ranks).forEach( (rankerId) => { //sum up all ratings for the item
avg += ranks[rankerId];
num ++;
});
avg /= num;
return admin.database().ref(`averages/${rankingId}/${itemId}`).transaction( (curVal) => {
return {avg, num};
});
}
Я тестировал его на очень небольшом количестве данных. Вроде 3 оценки. Так что, я считаю, ничего не должно занимать долгое время. Однако вот журналы: 
Это правда, что моя «Платежная учетная запись не настроена. Внешняя сеть недоступна, а квоты сильно ограничены. Настройте платежную учетную запись, чтобы снять эти ограничения». Я хочу выяснить, есть ли проблема в моей функции или это просто ограничения. А также было бы здорово, если бы кто-нибудь объяснил, как работают эти ограничения.
===ОБНОВЛЕНИЕ===
Благодаря Cloud Functions for Firebase onWrite timeout удалось решить проблему тайм-аута путем переноса транзакции в собственное обещание. Похоже, это ошибка.
Однако даже сейчас время выполнения функции очень непредсказуемо. Не так безумно, как раньше, но все еще колеблется от 50 мс (идеально) до 2000+ мс. Я не понимаю, почему такая огромная разница. И по какой причине эта функция может выполняться 2000 мс?