LikeU恋爱交友
LikeU恋爱交友
  • 发布:2021-03-19 18:35
  • 更新:2021-03-19 21:52
  • 阅读:1303

【报Bug】云函数 经常 502:{"errorMessage":"Process exited unexpectedly before completing request

分类:uniCloud

产品分类: uniCloud/App

示例代码:

云函数 pay_baidu.js

'use strict';  

exports.main = async function (event,context) {  

const db = uniCloud.database()  

    let callFunctionResult = await uniCloud.callFunction({  
        name: "write-tradeno-mysql",  
        data: { out_trade_no: outTradeNo }  
    })  

    if(callFunctionResult){  

        return {  
            orderInfo  
        }  
    }  

}

云函数 write-tradeno-mysql

'use strict';  

var mysql = require('mysql');  
var connection = mysql.createConnection({  
  host: '',  
  user: '',  
  password: '',  
  database: '',  
  port: 3306  
});  
/**  
 * 封装mysql执行操作为Promise  
 *   
 * @param {Object} sql  
 * @param {Object} values  
 */  
const query = function(sql, values) {  
  return new Promise((resolve, reject) => {  
    connection.query(sql, values, (error, results, fields) => {  
      if (error) {  
        reject(error)  
      } else {  
        resolve(results)  
      }  
    })  
  })  
}  

exports.main = async (event, context) => {  

  try {  
    //连接数据库  
    connection.connect()  

    // 新增记录  
    let addRes_order = await query('insert into order set ?', {  
      body : '',  
      client: '',  
      out_trade_no : event.out_trade_no  
    })  

if(addRes_order.insertId >0)  
{  
    let addRes_pay_info = await query('insert into pay_info set ?', {  
       order_id : addRes_order.insertId,  
       openid: ' ',  
          pay_status  : 'SUCCESS'  
     })  

}  

    //查询记录  

    //关闭连接  
    connection.end();  
  } catch (e) {  
    console.log('操作失败,失败信息 ', e);  
  }  

  //返回数据给客户端  
  return true  
};

操作步骤:

调用 pay_baidu.js 时不时就会 502

预期结果:

调用 pay_baidu.js 时不时就会 502

实际结果:

调用 pay_baidu.js 时不时就会 502

bug描述:

[pay_baidu/ac140d3c1616042554825556474/1579ms/ERROR] errCode: FunctionCommonError | errMsg: 502:{"errorMessage":"Process exited unexpectedly before completing request (duration: 3ms, maxMemoryUsage: 41.96MB)"}

Error: errCode: FunctionCommonError | errMsg: 502:{"errorMessage":"Process exited unexpectedly before completing request (duration: 3ms, maxMemoryUsage: 41.96MB)"}

at e.$scope.function.invoke.then.catch.e (/tmp/function/@dcloudio/serverless/lib/aliyun/uni-cloud.js:1:48840)

at <anonymous>

at process._tickCallback (internal/process/next_tick.js:188:7)

请求响应状态: fail

云函数 调用了 另一个 连接 mysql 的云函数插件 var connection = mysql.createConnection({

云函数连接Mysql数据库示例
https://ext.dcloud.net.cn/plugin?id=1925

报错的 云函数如下:

2021-03-19 18:35 负责人:无 分享
已邀请:
LikeU恋爱交友

LikeU恋爱交友 (作者) - LikeU恋爱交友

可能跟 这个问题有关,

我也遇到这个问题:

“Cannot enqueue Query after invoking quit”

请问 怎么改 插件的 代码 参考:解决方法: https://forums.aws.amazon.com/thread.jspa?threadID=223230

const query = function(sql, values) { return new Promise((resolve, reject) => { connection.query(sql, values, (error, results, fields) => { if (error) { reject(error) } else { resolve(results) } }) }) }

//This is your handler. exports.handler=function(event, context) { //This is declared inside the handler: it is guaranteed to never be reused!. var connection=function_that_gets_your_connection();

//Do things with your connection.
var query_string='SELECT something FROM nothing WHERE value=?';

connection.query(query_string, [beware], function(res, err){

//Check for errors, disconnect and exit with failure.  
if(err){  
    console.log("Query failed", err);  
    connection.end(function(err){  
        context.fail(0);  
    });  
}  
//Disconnect and exit with success.  
else{  
    connection.end(function(err){  

        if(err){  
            console.log("Warning: disconnection failed"; err);  
        }  

        context.succeed(res);  
    });  
}  

});
}

diamont1001@163.com
2020-08-01

query 这个方法有点问题:

另外,我遇到了一个问题,50%的机率会报这个错“Cannot enqueue Query after invoking quit”,解决方法: https://forums.aws.amazon.com/thread.jspa?threadID=223230

该问题目前已经被锁定, 无法添加新回复