caivega / ipfslib

Other
2 stars 1 forks source link

S2 - 一个节点断网后,对其他节点发送交易也总是超时失败。断网节点恢复网络后,发送交易依旧超时失败。 #108

Closed foreso-GitHub closed 3 years ago

foreso-GitHub commented 4 years ago

步骤

  1. 5节点网络,将其中一个节点(腾讯节点)断网后,区块链网络的区块高度继续增加,查询也都正常。但这时发送交易总是超时失败。
  2. 将断网节点的网络恢复正常后,该节点无法自动恢复正常,等待1小时后仍然无法访问(查询超时),对其他节点发送交易也仍然超时失败。
  3. 将断网节点关闭,对其他节点发送交易恢复正常。
  4. 将断网节点重启开启,该节点会不断重启加载区块,一旦到超过600000,就从0开始重新加载区块。【具体错误信息在最下方】
  5. 将断网节点关闭,删除数据,重启启动后开始同步数据,同步速度很慢。【20200902-133000开始同步】
  6. 现在需要等,看看同步是否能正常完成,如完成后节点是否能够恢复正常。相关信息后面补充。
foreso-GitHub commented 4 years ago

将断网节点重启开启,该节点会不断重启加载区块,一旦到超过600000,就从0开始重新加载区块。

这个问题原因已经找到,是因为加载区块的同时有发送交易造成的。维佳已经修正,待更新。

foreso-GitHub commented 4 years ago

5节点网络,将其中一个节点(腾讯节点)断网后,区块链网络的区块高度继续增加,查询也都正常。但这时发送交易总是超时失败。 将断网节点的网络恢复正常后,该节点无法自动恢复正常,等待1小时后仍然无法访问(查询超时),对其他节点发送交易也仍然超时失败。

后面多次尝试,“对其他节点发送交易也仍然超时失败”可重现,但需要做到:

  1. UDP7001的出、入方向都需要关闭。有时需要打开、关闭执行多次。
  2. 同时进行压测,发送大量交易。
foreso-GitHub commented 4 years ago
  1. 断网恢复后节点无法自动恢复。
  2. 加载区块的同时有发送交易造成节点会不断重启加载区块。 这两个问题已经在20200902的版本上修正。
foreso-GitHub commented 3 years ago
  • 5节点网络,将其中一个节点(腾讯节点)断网后,区块链网络的区块高度继续增加,查询也都正常。但这时发送交易总是超时失败。
  • 将断网节点的网络恢复正常后,该节点无法自动恢复正常,等待1小时后仍然无法访问(查询超时),对其他节点发送交易也仍然超时失败。

在20201023版本里这些问题解决。

但将某个节点断网后,再发送大量交易,会导致其他节点区块不再生成。查看log信息: E1027 10:34:09.969145 5531 util.go:171] &{temINVALID <nil> failed to submit transaction by jnn$ E1027 10:34:10.968944 5531 public.go:767] failed to submit transaction by jLC6gPhNTaiHjouXrAiX$ E1027 10:34:10.968956 5531 util.go:171] &{temINVALID <nil> failed to submit transaction by jLC$ E1027 10:34:10.969140 5531 public.go:948] failed to submit transaction: 928A7307E7A618F62E1189$ E1027 10:34:10.969149 5531 util.go:171] &{temINVALID <nil> failed to submit transaction: 928A7$ E1027 10:34:10.969352 5531 public.go:948] failed to submit transaction: 688AA7030A4F51695FB9D9$ E1027 10:34:10.969360 5531 util.go:171] &{temINVALID <nil> failed to submit transaction: 688AA$ E1027 10:34:17.500979 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:34:27.501276 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:34:37.501068 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:34:47.501273 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:34:57.500983 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:35:07.500933 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:35:17.500982 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:35:27.500963 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:35:37.500730 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:35:47.500973 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$ E1027 10:35:57.500992 5531 network.go:1032] >>> error connecting to network peer 12D3KooWBaR65$

foreso-GitHub commented 3 years ago

Reopen.

foreso-GitHub commented 3 years ago

但将某个节点断网后,再发送大量交易,会导致其他节点区块不再生成。查看log信息: 在20201027版本中,此问题解决。

但如果连续断网、恢复,断网节点有时无法自行恢复正常,进入共识。一般情况下断网然后恢复,断网节点能够自行恢复正常,进入共识。但如果在断网恢复期间有大量交易发送,则断网节点容易发生无法自行恢复正常的情况,需要重启节点。

foreso-GitHub commented 3 years ago

版本:20201114-v0.5.2-dev,执行多次单节点断网、恢复操作后,有一定概率会造成该节点共识停顿,需要重启节点。

foreso-GitHub commented 3 years ago

版本:20201130-v0.5.3-dev已经修复。