Hyperledger fabric Hyperledger结构:对等节点回滚
我下面使用以下命令回滚通道mychannel以阻止编号150: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
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