当运行 DAML 沙箱发生错误

When running the DAML sandbox an error occurs

沙盒运行时出现如下错误:

io.grpc.netty.NettyServerHandler onStreamError
WARNING: Stream Error
io.netty.handler.codec.http2.Http2Exception$HeaderListSizeException: Header size exceeded max allowed size (8192)

这可能是什么原因?

我已经多次看到此错误,这是在沙盒上 运行 时复杂 DAML model/transaction 中出现事务失败的结果。当您遇到交易失败时(fetch/exercise 一个不活跃的合约,lookupByKey 返回了一个陈旧的 cid,head [],divide-by-zero,等等)沙箱会帮助尝试在错误结果中提供事务跟踪信息。

这通常适用于相对简单的模型。对于更复杂的模型,此跟踪可能会超过最大 header 大小,从而产生您看到的错误。发生这种情况时,我在 sandbox.log 文件中找到了踪迹,有时还有其他有助于解释发生了什么的错误。

跟踪是一个未格式化的转储,因此手动解码可能需要一些努力,但我自己已经做了很多次,并且我需要识别问题的信息一直存在——而且是老实说,通常只知道我正在做的选择 + 具体的 class 错误通常足以为我指明正确的方向。

我相信正在构建一些工具来帮助进行此类诊断;但是,我不知道这方面的工作有多先进。