我有两个不同的云函数,它们偶尔会出现相同的错误。
一个是聚合一些计数器的firestore触发器,另一个是清理旧数据的计划任务。
我似乎看不出错误的任何模式,也没有很多信息。此外,我没有找到很多在这里或与谷歌搜索。它只是偶尔发生,也许每隔几天,或者几个星期,没有错误。它发生的时间大约不到函数运行的2%。
我对firebase和使用async await比较陌生,所以它可能与此相关(async/await)。
以下函数之一的错误和代码。
{ Error
at Http2CallStream.call.on (/srv/node_modules/@grpc/grpc-js/build/src/client.js:96:45)
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:71:22)
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
code: 13,
details: '',
metadata: Metadata { options: undefined, internalRepr: Map {} } }
export const clearOldAvailabilityInternal = async () => {
const limit = 500;
let vehicleAvailabilityIds: string[] = [];
let vehicleTypeAvailabilityIds: string[] = [];
const now = new Date();
const twoWeeksAgo = moment(now).subtract(14, "days");
do {
vehicleAvailabilityIds = [];
const batch1 = db.batch();
const vehicleAvailabilityDocs = await db.collection('vehicleAvailability')
.where('dateInterval', '<', twoWeeksAgo.toDate())
.limit(limit)
.get();
for (const doc of vehicleAvailabilityDocs.docs) {
vehicleAvailabilityIds.push(doc.id);
};
for(const id of vehicleAvailabilityIds) {
const deleteRef = db.doc(`vehicleAvailability/${id}`)
batch1.delete(deleteRef);
}
try {
const result = await batch1.commit();
console.log('Deleted ' + vehicleAvailabilityIds.length + ' vehicleAvailability documents');
} catch (err) {
console.log(err);
throw err;
}
}
while (vehicleAvailabilityIds.length === limit)
do {
vehicleTypeAvailabilityIds = [];
const batch2 = db.batch();
const vehicleTypeAvailabilityDocs = await db.collection('vehicleTypeAvailability')
.where('dateInterval', '<', twoWeeksAgo.toDate())
.limit(limit)
.get();
for (const doc of vehicleTypeAvailabilityDocs.docs) {
vehicleTypeAvailabilityIds.push(doc.id);
};
for(const id of vehicleTypeAvailabilityIds) {
const deleteRef = db.doc(`vehicleTypeAvailability/${id}`)
batch2.delete(deleteRef);
}
try {
const result = await batch2.commit();
console.log('Deleted ' + vehicleTypeAvailabilityIds.length + ' vehicleTypeAvailability documents');
} catch (err) {
console.log(err);
throw err;
}
}
while (vehicleTypeAvailabilityIds.length === limit)
console.log('clearOldAvailabilityInternal complete');
return Promise.resolve(true);
}
编辑:
通过捕获错误发生的地方并记录它,我在note字段中获得了更多的细节。“在重试方法中发生了不属于瞬态的异常”,然后我找到了下面的答案。
{ Error
at Http2CallStream.call.on (/srv/node_modules/@grpc/grpc-js/build/src/client.js:96:45)
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:71:22)
at _combinedTickCallback (internal/process/next_tick.js:132:7)
at process._tickDomainCallback (internal/process/next_tick.js:219:9)
code: 13,
details: '',
metadata: Metadata { options: undefined, internalRepr: Map {} },
note: 'Exception occurred in retry method that was not classified as transient' }
似乎是FireStore当前已知的问题。可能使用FirebaseAdminV8。他们正试图解决这一问题,但“可能需要一些时间”。
https://github.com/firebase/firebase-functions/issues/536
2019年8月2日:https://github.com/firebase/firebase-functions/issues/536#issuecomment-517461545
我们的后端团队相信他们知道问题的根本原因,但是要在所有的生产环境中解决这个问题可能需要一段时间。
2019年10月12日:https://github.com/firebase/firebase-functhtml" target="_blank">ions/issues/536#issuecomment-541130536
我们正在继续改进网络堆栈中使用的库,但即使使用最新的@grpc/grpc-js模块,您仍可能遇到偶尔的网络问题。
我已经编写了一个程序,从usb摄像头捕获图像,并根据检测到的每帧颜色跟踪对象的位置。间歇性(可能在1分钟、10分钟或半小时后发生)我收到错误消息: 我遵循的流程是: 用相机拍摄一帧,cap=cv2。视频捕获(1)/cap。read() 变换几何,cv2。透视图 高斯模糊滤波器,cv2。高斯模糊 BGR到HSV转换,cv2。CVT彩色(模糊帧,cv2.COLOR\u BGR2HSV) 轮廓发现和分析
我们有一个SSL问题,我是99%,这不是你通常的证书信任商店旋转木马。 我们有一个Weblogic服务器试图通过LDAPS与Active Directory建立SSL连接,底层SSL实现是JSSE。 有时,它是有效的。通常在重新启动Weblogic后的几个小时内。 之后,我们开始得到SSL握手错误,与SSL调试打开我们看到: [ACTIVE]ExecuteThread:'10'用于队列:'webl
我已经使用firebase云函数一段时间了,今天在代码中修复了一个小错误,在尝试部署时出现了以下错误。我取消了该更改,并尝试使用上次提交的稳定更改再次部署,但仍然是相同的错误。有什么解决办法吗?PS:这是一个typescript项目,我用tsc编译它。
错误 引用错误:函数未在对象中定义。(C:\用户\CROWDE~1\AppData\本地\Temp\fbfn_9612Si4u8URDRCrr\index.js: 5:21)在模块。_compile(module.js:570: 32)在对象。模块。_extensions... js(module.js:579: 10)在Module.load(module.js:487: 32)在tryModu
我正在编写云函数,Firez是这样自动导入的。 但在部署时,错误如下所示。我试着这样做,它部署没有任何错误,但我不确定这是正确的方式与否。 有人知道吗? node_modules/@googlecloud/firestore/types/firestore。d、 ts:28:15-错误TS2300:重复标识符“DocumentData”。 28导出类型DocumentData={[field: s
我在使用Firebase云函数中的Firebase云消息时遇到一些问题。 错误信息如下。这是从我的Firebase云功能日志控制台。 错误:尝试向FCM服务器进行身份验证时出错。请确保用于验证此SDK的凭据具有适当的权限。 首先,我遵循Firebase Cloud Functions CodeLabs。 https://firebase.google.com/codelabs/firebase-c