Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hyperledger fabric Hyperledger结构:对等节点回滚_Hyperledger Fabric_Hyperledger - Fatal编程技术网

Hyperledger fabric Hyperledger结构:对等节点回滚

Hyperledger fabric Hyperledger结构:对等节点回滚,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我下面使用以下命令回滚通道mychannel以阻止编号150: peer node rollback -c mychannel -b 150 如果我在CLI容器中运行此命令,它将显示: 正在验证回滚参数:ledgerID[mychannel],块号 [0] 错误:ledgerID[mychannel]不存在。 如果我在peer0内运行,它将给出一个错误 错误:由于另一个对等节点命令正在执行,请等待 命令以完成其执行或在重试前终止它: 已在文件上获取锁 /var/hyperledger/prod

我下面使用以下命令回滚通道mychannel以阻止编号150

peer node rollback -c mychannel -b 150
如果我在CLI容器中运行此命令,它将显示:

正在验证回滚参数:ledgerID[mychannel],块号 [0] 错误:ledgerID[mychannel]不存在。

如果我在peer0内运行,它将给出一个错误

错误:由于另一个对等节点命令正在执行,请等待 命令以完成其执行或在重试前终止它: 已在文件上获取锁 /var/hyperledger/production/ledgersData/fileLock

我尝试过停止和暂停节点的不同可能方法,但失败了,请任何人指导正确的方法来执行此任务

提前谢谢

peer node rollback -c mychannel -b 150
注意:上述命令应该从对等节点执行,而不是从CLI执行

Error: as another peer node command is executing, wait for that command to complete its execution or terminate it before retrying: lock is already acquired on file /var/hyperledger/production/ledgersData/fileLock
执行任务时,请确保对等机处于脱机状态,例如

  • 对等节点重置
  • 对等节点回滚

请注意,回滚并不意味着永久删除块,执行回滚操作后,对等方将从订购方或其他对等方接收块

我发现解决方案如下:

第一个网络已经启动并运行,我在docker compose文件中为所需的对等节点添加了以下命令,比如peer0.org1.example.com

command: peer node rollback -c mychannel -b 1 && peer node start
保存更改后,运行以下命令

docker-compose -f docker-compose-cli.yaml up -d  peer0.org1.example.com
现在从上面的命令中删除回滚部分,我可以看到日志显示它已成功回滚

docker logs peer0.org1.example.com

如果我停止对等节点,我就无法对其进行攻击;如果节点正在运行,我就无法执行操作,那么如何准确地停止节点并回滚它。通过CLI容器的方式,如果我为peer 1设置了环境变量,那么它是一样的,我可以运行peer node reset,但不能从CLI回滚,我可以在列表中看到mychannel,但不知道为什么它显示“ledgerID[mychannel]不存在”脱机并不意味着停止容器,使peer远离网络,或者将其与网络断开连接。即使您对CLI使用相同的对等MSP,CLI进程也与实际的对等进程不同。因此,如果要执行回滚,请不要使用CLI,然后请不要使用CLI