nayutaco / ptarmigan

Lightning Network (BOLT)
Apache License 2.0
132 stars 19 forks source link

update JAR #1578

Closed nayuta-ueno closed 5 years ago

nayuta-ueno commented 5 years ago

https://github.com/nayutaco/ptarmigan-jar/pull/5

事情は上記を参照のこと。 bitcoinjがpeerを見つけられないまま数時間、しかもmainnetでその状況が発生してしまった。 APIで別のpeerに切り替えさせる方法が見つからなかったため、以下の手順を取ることにした。

  1. peerが見つからない状態が3分程度続いた場合、JARからexceptionを発行
  2. JNIでは例外が発生したということでabort
  3. Lightning Shieldではptarmdをsystemctlで起動させているので、on-failureによってserviceごと再起動

JARはptarmdが少なくとも30秒間隔でgetblockcountしているので、そのタイミングでgetDownloadPeer()のnullチェックを行うようにした(7回以上失敗したら例外発行)。Transaction送信などでもgetDownloadPeer()を行うため、必ずしも3分にはならないが、peerが存在しない状況の方が問題なのでよしとする。

nayuta-ueno commented 5 years ago

ただ、これだけならptarmdを再起動すれば回復できたと思われるが、現象が起きた後に再起動してもclosing transactionを検出できないままになっていた。 他の箇所も対策が必要であるが、まだそこは調査できていない。