如何将lambda连接到没有NoHostAvailableError

时间:2019-07-17 09:07:27

标签: node.js aws-lambda cassandra-driver

我正在设置一个nodejs lambda,它使用NetworkTopologyStrategy和3复制因子查询部署在EC2上的Cassandra实例。

我正在使用cassandra驱动程序库,并在Exports.handler函数外部管理连接,如解释的here

var cassandra = require('cassandra-driver');
if (typeof client === 'undefined') {
  var contactPoints = ['***'];
  console.log("Conneting to new client")
  var client = new cassandra.Client({ contactPoints, localDataCenter: "***", keyspace: '***' });
  client.connect()
}
exports.handler = function (event, context, callback) {
  context.callbackWaitsForEmptyEventLoop = false
  console.log('Object event: ' + JSON.stringify(event));
  var query = 'SELECT * FROM ***';
  client.execute(query, (err, result) => {
    if (err) {
      console.log(err)
      callback(err)
      return
    }
    else {
      callback(null, result.rows)
    }
  })
}

lambda在一开始就可以完美地工作((我正在将使用api网关条目的react应用连接到lambda),但是过一会儿

  

{“ errorMessage”:“所有尝试查询的主机都失败。尝试了第一台主机,   ***:主机被视为DOWN。请参见innerErrors。“,” errorType“:” NoHostAvailableError“,” stackTrace“:[” Function.borrowNextConnection   (/var/task/node_modules/cassandra-driver/lib/request-handler.js:52:23)","RequestHandler.getNextConnection   (/var/task/node_modules/cassandra-driver/lib/request-handler.js:118:20)","RequestExecution.start   (/var/task/node_modules/cassandra-driver/lib/request-execution.js:86:18)","RequestHandler._startNewExecution   (/var/task/node_modules/cassandra-driver/lib/request-handler.js:160:15)","newPlanCb   (/var/task/node_modules/cassandra-driver/lib/request-handler.js:147:14)","DCAwareRoundRobinPolicy.newQueryPlan   (/var/task/node_modules/cassandra-driver/lib/policies/load-balancing.js:206:3)","TokenAwarePolicy.newQueryPlan   (/var/task/node_modules/cassandra-driver/lib/policies/load-balancing.js:274:29)","RequestHandler.send   (/var/task/node_modules/cassandra-driver/lib/request-handler.js:142:11)","Function.send   (/var/task/node_modules/cassandra-driver/lib/request-handler.js:110:14)","Array.utils.series.next   (/var/task/node_modules/cassandra-driver/lib/client.js:935:28)“]}

稍后我进行测试时,它会工作一段时间,好像它会创建一个新的连接,然后返回相同的错误。

0 个答案:

没有答案