Google云发布/订阅功能在查询FireStore时提供请求的快照版本太旧 [英] Google cloud pub/sub function gives "The requested snapshot version is too old" when querying firestore

本文介绍了Google云发布/订阅功能在查询FireStore时提供请求的快照版本太旧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个对集合执行简单查询的gCloud发布/订阅函数。在10月8日之前,它运行得很好。现在我看到";请求的快照版本太旧的错误消息。

我已经使用相同的代码创建了一个HTTP函数,并手动运行它,它工作得非常好。

下面是函数:

// 0 3 * * * - at 03:00 AM every day
exports.GenerateRankings = functions.pubsub.schedule('0 3 * * *')
    .onRun((context) => {

        console.log("GenerateRankings Task started")

        const playersCollection = admin.firestore().collection('players')

        playersCollection.orderBy("Coin", "desc").get()
            .then((qs) => {
                console.log("Fetching Players by Coin")
                // some staff
                return true
            })
            .catch((error) => {
                console.error("Error fetching players", error)
                return false
            })
    })

下面是错误堆栈:

9 FAILED_PRECONDITION: The requested snapshot version is too old.
 at Object.callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:31:26)
 at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:327:49)
 at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:305:181)
 at /workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:124:78
 at processTicksAndRejections (internal/process/task_queues.js:79:11)
 Caused by: Error
 at Query._get (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:1466:23)
 at Query.get (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:1455:21)
 at /workspace/index.js:22:47
 at cloudFunction (/workspace/node_modules/firebase-functions/lib/cloud-functions.js:130:23)
 at /layers/google.nodejs.functions-framework/functions-framework/node_modules/@google-cloud/functions-framework/build/src/invoker.js:198:28
 at processTicksAndRejections (internal/process/task_queues.js:97:5) {
    code: 9,
    details: 'The requested snapshot version is too old.',
    metadata: Metadata { internalRepr: Map {}, options: {} }
 }
我知道还有另一个悬而未决的问题 "The requested snapshot version is too old." error in Firestore 跟这个差不多。我在使用发布/订阅函数时遇到了这个问题。

感谢您的帮助。

推荐答案

如果有人遇到此问题,我会自己回答问题。

经过大量阅读和测试后,我注意到我的日志中有一个警告,如";函数返回未定义、预期的承诺或值&。因为我在函数中返回承诺,所以我没有注意到这一点。

在我的函数上添加回车符修复了我的警告,并且我的函数已经成功运行了5天。

return exports.GenerateRankings = functions.pubsub.schedule('0 3 * * *') ...

这篇关于Google云发布/订阅功能在查询FireStore时提供请求的快照版本太旧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆