节点 - 红色 - 捕获错误 - node-red-contrib-composer

时间:2018-03-23 15:31:47

标签: node-red hyperledger-composer

我在nod-red流程中使用composer节点 node-red-contrib-composer

有些情况下节点抛出错误

  

“尝试调用业务网络时出错。错误:Peer拒绝了   交易   'ce59c38741626ca5dbc1ae7055e0a52297ff99293751f796ed41d40b5cfc59e9'   代码为MVCC_READ_CONFLICT“

我可以在调试控制台中看到此错误但我无法捕获此错误 节点红色中的 catch 节点可用。我认为,在作曲家节点中,使用下面的代码:

//Set hardcoded environment variable to set the path to the library
Environment.SetEnvironmentVariable("ROSLYN_COMPILER_LOCATION", "actual compiler location goes here", EnvironmentVariableTarget.Process);
//Create compiler object
CSharpCodeProvider compiler = new CSharpCodeProvider();
//Clean up
Environment.SetEnvironmentVariable("ROSLYN_COMPILER_LOCATION", null, EnvironmentVariableTarget.Process);

//Use "compiler" variable to actually compile the dynamic code

如何在节点红色中捕获此错误? 我想使用此错误消息以在同一选项卡中触发另一个流。

2 个答案:

答案 0 :(得分:1)

除了错误的具体细节之外,您无法使用Catch节点处理此错误的原因是由于编写器节点报告错误的原因。

它使用一个参数调用node.error,这意味着它已被记录,不会采取进一步的操作。

为了触发Catch节点,对node.error的调用必须提供第二个参数,该参数是Catch节点应发送的消息对象。

我建议您针对作曲家节点提出一个问题,以便进行此更改。

答案 1 :(得分:0)

如在Rocketchat上提到的那样 - 错误来自Fabric - 可能希望有一个观察者在日志中找到错误(并将其拉入您的流程中?即对于失败的事务ID)请参阅此处有关避免的信息碰撞 - > MVCC_READ_CONFLICT when submitting multiple transactions concurrently

MVCC_READ_CONFLICT之类的错误当前无法由节点红色流中的debug节点捕获(即写入时间)(仅在调试控制台中为avl)。除非在作曲家node-red mpdule(例如node.error(msg))中有node.error("Error",msg)或类似内容,否则可以使用node-red中的catch节点来捕获该错误并继续关于重新规划交易的问题,以及之前的MVCC_READ_CONFLICT'。