【问题标题】:Lambda NullPointerException with no useful stack trace没有有用的堆栈跟踪的 Lambda NullPointerException
【发布时间】:2019-10-02 20:50:00
【问题描述】:

我有由 Dynamo Stream 触发的 AWS Lambda 函数(出现在 DynamoDB 中的更改)。 它工作得很好。 不知何故,我开始在 Lambda 日志中收到错误,而堆栈跟踪中没有指定 lambda 代码行:

java.lang.NullPointerException: java.lang.NullPointerException
java.lang.NullPointerException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)`

正如我所说,Lambda 由 Dynamo Stream 事件触发,并在其中执行一个简单的 HTTP 发布请求调用。 会是什么?

【问题讨论】:

  • 你能显示代码吗?
  • @Sunchezz 如果 Lambda 代码中有 NPE,它将显示 Lambda 处理程序类中的行号。喜欢这里:docs.aws.amazon.com/lambda/latest/dg/java-exceptions.html
  • @Sunchezz 很遗憾,我无法显示代码。
  • 然后,仅凭猜测,如果您正在发出请求,并且目标不可到达,则响应可能为空。如果没有对响应或任何其他依赖成功连接的对象进行空检查,它将中断。或者您期望的响应发生了变化。

标签: java aws-lambda amazon-dynamodb


【解决方案1】:

由于没有可用的代码,只能猜测您可能在 DynamoDb 上设置了某种 ttl(生存时间)。一旦 DynamoDb 中的项目超过它们的 ttl,它们就会从表中删除,并且删除事件将在 dynamo 流中发送,事件名称为“REMOVE”。 “REMOVE”事件的负载与“INSERT”或“UPDATE”事件的负载非常不同,也许流中的那种负载会给出空指针异常。再次指定,这只是一个猜测,因为我没有关于您所面临的代码类型和问题的任何信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 2011-03-31
    • 2020-10-19
    • 2017-04-17
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多