当前位置: 首页 > 知识库问答 >
问题:

访问单个或一小组现金状态时,计划流失败

方嘉志
2023-03-14

如果发行了单个可变现资产(如Cash.State),并且预计许多预定流量将以不同的金额消耗该资产,那么建立这种情况的最佳方法是什么?虽然我了解CashSelection实施有助于创建更改,但它是否适用于多个计划流同时访问状态的场景?例如,如果是单个现金。存在100美元的状态,并且为每个消耗2美元设置了50个ScheduledFlows,我们如何避免公证人意外发现已经消耗的状态?

当在单个节点上背靠背启动多个流并以单个或一小组状态为目标时,也会出现类似的异常。我在CentOS Linux上运行开源corda 3.3,Java版本1.8.0_131。

这是我看到的例外:

[WARN ] 2018-11-12T18:53:03,422 z[节点线程-2]流。【1 ECB fdff-a0b 6-4e0e-94d 1-95c 432822 A02】。运行流已完成,但出现异常{ } net . corda . core . flows . notary异常:无法对transaction 2 dff 6 e 03 f 64 b 7445 a 49191 edbef 70 b 3054 BCF 37 f 541 a2 FBA 012 a 63 FB 8 f 5 dea53:一个或多个输入状态已用于net . corda . core . flows . notary Flow$service . call(notary Flow . kt:149)~[corda-core-3.3-corda]at net . corda . core . flows . notary flow $ service . call(notary flow . kt:133)~[corda-core-3.3-corda . jar:?]at net . corda . node . services . state machine . flowstatemachineipl . run(flowstatemachineipl . kt:96)【corda-node-3.3-corda . jar:?]at net . corda . node . services . state machine . flowstatemachineipl . run(flowstatemachineipl . kt:44)【corda-node-3.3-corda . jar:?]at co . parallel universe . fibers . fiber . run 1(fiber . Java:1092)[quasar-core-0 . 7 . 9-JDK 8 . jar:0 . 7 . 9]at co . parallel universe . fibers . fiber . exec(fiber . Java:788)[quasar-core-0 . 7 . 9-JDK 8 . jar:0 . 7 . 9]at co . parallel universe . fibers . runnablefibertask . do exec(runnablefibertask . Java:100)[quasar-core:1 . 8 . 0 _ 192]at Java . util . concurrent . future task . run(future task . Java:266)[?:1 . 8 . 0 _ 192]at Java . util . concurrent . scheduledthreadpoolexecutor $ scheduledfuturtask . access $ 201(scheduledthreadpoolexecutor . Java:180)[?:1 . 8 . 0 _ 192]at Java . util . concurrent . scheduledthreadpoolexecutor $ scheduledfuturtask . run(scheduledthreadpoolexecutor . Java:293)[?:1 . 8 . 0 _ 192]at Java . util . concurrent . threadpoolexecutor . run worker(threadpoolexecutor . Java:1149)[?:1 . 8 . 0 _ 192]at Java . util . concurrent . threadpoolexecutor $ worker . run(threadpoolexecutor . Java:624)[?:1 . 8 . 0 _ 192]at net . corda . node . utilities . affinity executor $ ServiceAffinityExecutor $ 1 $ thread $ 1 . run(affinity executor . kt:62)[corda-node-3.3-corda . jar:?]

共有1个答案

柴宏浚
2023-03-14

该平台提供了一种软锁定机制,以防止多个流试图同时使用同一个可替代资产。在 NodeVaultService.tryLockFungibleStatesForSpending 中,我们有以下行:

softLockReserve(lockId, claimedStates.map { it.ref }.toNonEmptySet())

您能否更新您的问题,以显示您是如何从保险库检索FungibleAsset的?

 类似资料:
  • 我正在尝试进行查询-https://GRAPH.microsoft.com/v1.0/users/user.name@contoso.com/messages?$select=from,to recipients,ccRecipients,bccRecipients on GRAPH Explorer-https://developer.microsoft.com/en-us/GRAPH/grap

  • 如何访问父组件中的窗体状态 这就是我正在做的(只是一个简短的代码,请忽略语法) 现在的问题是,如果onSelect handler()中的子对象脏了,我无法通知父对象不要呈现该子对象。我不能在render方法中执行setState,至少我可以提前通知使用componentDidUpdate,谢谢

  • 我需要能够从单独的流处理器中删除Ktable中的记录。今天我使用aggregate()并传递一个物化状态存储。在一个从“终止”主题读取的单独处理器中,我想在.transform()或不同的.gaggregate()中查询实体化状态存储,并“移除”该键/值。每次我尝试从一个单独的流处理器访问物化状态时,它都会告诉我存储没有添加到拓扑中,所以我添加它并再次运行它,然后它会告诉我它已经注册,并且出错。

  • 问题内容: 假设我有一个Java IntStream,是否可以将其转换为具有累积总和的IntStream?例如,以[4、2、6,…]开头的流应转换为[4、6、12,…]。 更笼统地说,应该如何实施有状态流操作?感觉这应该可行: 有一个明显的限制,即它仅适用于顺序流。但是,Stream.map明确需要无状态映射函数。我是否错过了Stream.statefulMap或Stream.cumulative

  • 我有一个名为的组件,还有一个子组件名为。智利组件有一个名为的状态。我需要从AvailabiltyCalendar组件访问该状态并获取该状态值。我该怎么做呢。 可用压路机组件 DatePicker组件

  • 批量分单的结果会有成功、失败两种状态,其中失败又分为无坐标、无区划两种状态; 此处可对批量分单的所有状态结果进行归类 支持按照时间查询 支持对归类结果点击下载