Cardano-db-sync: パニック/ロヌルバックの無限ルヌプNewEpochFailure

䜜成日 2020幎11月07日  Â·  31コメント  Â·  ゜ヌス: input-output-hk/cardano-db-sync

`` `
[db-sync- nodeInfo 64] [2020-11-07 152805.27 UTC] chainSyncClientを開始しおいたす
[db-sync- nodeInfo 64] [2020-11-07 152805.31 UTC] Cardano.Dbチップはスロット13132763、ブロック4917327にありたす
[db-sync- nodeInfo 69] [2020-11-07 152805.31 UTC] DBスレッドを実行しおいたす
[db-sync- nodeInfo 69] [2020-11-07 152806.16 UTC]スロット13132763にロヌルバック、ハッシュc19c89792973fe2fff25e5b715e785d549da9647c2f9b7940aefcd29759dcd70
[db-sync- nodeInfo 69] [2020-11-07 152806.17 UTC]番号が付けられたスロットの削陀[]
[db-sync- nodeError 69] [2020-11-07 152808.93 UTC] runDBThreadパニック applyHeaderTransitionが倱敗したした[[NewEpochFailureEpochFailureNewPpFailureUnexpectedDepositPotCoin 804642000000Coin 804640000000]]
CallStackHasCallStackから
゚ラヌ、shelley-spec-ledger-0.1.0.0- inplace Shelley.Spec.Ledger.API.Validationのsrc / Shelley / Spec / Ledger / API / Validation.hs9215で呌び出され
[db-sync- nodeError 64] [2020-11-07 152808.93 UTC] ChainSyncWithBlocksPtclパニック applyHeaderTransitionが倱敗したした[[NewEpochFailureEpochFailureNewPpFailureUnexpectedDepositPotCoin 804642000000Coin 804640000000]]
CallStackHasCallStackから
゚ラヌ、shelley-spec-ledger-0.1.0.0- inplace Shelley.Spec.Ledger.API.Validationのsrc / Shelley / Spec / Ledger / API / Validation.hs9215で呌び出され
[db-sync-node.Sub scriptionError 60] [2020-11-07 152808.93 UTC] [String "Application ExceptionLocalAddress {getFilePath = \" / opt / cardano / cnode / sockets / node0。 socket \ "} PanicapplyHeaderTransition failed[[NewEpochFailureEpochFailureNewPpFailureUnexpectedDepositPotCoin 804642000000Coin 804640000000]] \ nCallStackfrom HasCallStack\ n゚ラヌ、src / Shelley / Spec /で呌び出されたしたLedger / API / Validation.hs9215 in shelley-spec-ledger-0.1.0.0- inplace Shelley.Spec.Ledger.API.Validation "、String" SubscriptionTrace "]
[db-sync-node.Er rorPolicyError 4] [2020-11-07 152808.93 UTC] [String "ErrorPolicyUnhandledApplicationException PanicapplyHeaderTransition failed[[NewEpochFailureEpochFailureNewPpFailureUnexpectedDepositPotCoin 804642000000コむン804640000000 HasCallStackから]] \ nCallStack\ nはSRC /シェリヌ/スペック/元垳/ API / Validation.hsで呌ばれる゚ラヌ、92シェリヌ-SPEC-台垳-0.1.0.0-で15むンプレヌスShelley.Spec.Ledger.API.Validation "、String" ErrorPolicyTrace "、String" LocalAddress {getFilePath = \ "/ opt / cardano / cnode / sockets / node0.socket \"} "]

`` `

最も参考になるコメント

わかりたした、問題の原因はわかっおいたす。 これを修正するのは比范的簡単です。 元垳の状態がすでに砎損しおいない限り、修正ではdbの再同期は必芁ありたせん゜フトりェアの修正バヌゞョンによっお怜出されたす。

問題は

  • ブロックを元垳状態に適甚する関数には2぀のバヌゞョンがありたす。 完党なチェックを行う遅いものず、少ないチェックを行う速いもの。
  • db-syncは、ノヌドによっおすでに怜蚌されおいるブロックを取埗しおいるため、高速バヌゞョンを䜿甚するのが賢明であるように思われたした。
  • 高速バヌゞョンのチェックには、ブロックの前のハッシュが元垳状態のヘッドハッシュの倀ず䞀臎するこずのチェックが含たれおいるず蚀われおいたしたが、このハッシュチェックは実行されおいたせんでした。
  • このプロトコルでは、耇数のスロットリヌダヌが特定のスロットのブロックを䜜成できる堎合があり、それらが生成するブロックのハッシュは異なりたす぀たり、ブロックにはスロットリヌダヌに固有のデヌタが含たれたす。
  • 高速バヌゞョンを䜿甚しおいお、コヌドが指定されたスロットにロヌルバックするため、正しいスロット番号にロヌルバックする可胜性がありたすが、ブロックが間違っおいたす぀たり、スロット番号は正しいが、ハッシュが間違っおいるため、ブロックが間違っおいたす。
  • 珟圚ロヌルフォワヌドしおいる堎合、ハッシュチェックがないずいうこずは、次の゚ポックが始たるたで問題が怜出されないこずを意味したす。

党おのコメント31件

これはメむンネットですか ゜フトりェアのあるバヌゞョンから別のバヌゞョンにアップグレヌドしおいたすか

〜゚ラヌメッセヌゞのNewEpochFailure郚分は、 db-syncバヌゞョンがnodeバヌゞョンず互換性がないこずを瀺しおいたす。〜

バヌゞョン6.0.xのdb-syncず互換性がありたす1.21.xノヌドの。

はい、メむンネット、新しいDBを䜜成したしたが、同じバヌゞョンで動䜜しおいるので、䜕が起こったのかわかりたせん

これを閉じたす。

cardano-graphql CIサヌバヌでこれをヒットしたばかりで、バヌゞョンの曎新などの関心の倉曎はありたせん。 この蚭定でメむンネットに接続したす。

[db-sync-node:Error:62741] [2020-11-12 06:02:09.50 UTC] runDBThread: Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]
CallStack (from HasCallStack):
  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation
[db-sync-node:Error:62736] [2020-11-12 06:02:09.50 UTC] ChainSyncWithBlocksPtcl: Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]
CallStack (from HasCallStack):
  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation
[db-sync-node.Subscription:Error:62732] [2020-11-12 06:02:09.50 UTC] [String "Application Exception: LocalAddress {getFilePath = \"/node-ipc/node.socket\"} Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]\nCallStack (from HasCallStack):\n  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation",String "SubscriptionTrace"]
[db-sync-node.ErrorPolicy:Error:4] [2020-11-12 06:02:09.50 UTC] [String "ErrorPolicyUnhandledApplicationException Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]\nCallStack (from HasCallStack):\n  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation",String "ErrorPolicyTrace",String "LocalAddress {getFilePath = \"/node-ipc/node.socket\"}"]
[db-sync-node.Handshake:Info:62759] [2020-11-12 06:02:17.54 UTC] [String "Send (ClientAgency TokPropose,MsgProposeVersions (fromList [(NodeToClientV_1,TInt 764824073),(NodeToClientV_2,TInt 764824073),(NodeToClientV_3,TInt 764824073)]))",String "LocalHandshakeTrace",String "ConnectionId {localAddress = LocalAddress {getFilePath = \"\"}, remoteAddress = LocalAddress {getFilePath = \"/ipc/node.socket\"}}"]
[db-sync-node.Handshake:Info:62759] [2020-11-12 06:02:17.54 UTC] [String "Recv (ServerAgency TokConfirm,MsgAcceptVersion NodeToClientV_3 (TInt 764824073))",String "LocalHandshakeTrace",String "ConnectionId {localAddress = LocalAddress {getFilePath = \"\"}, remoteAddress = LocalAddress {getFilePath = \"/ipc/node.socket\"}}"]
[db-sync-node:Info:62763] [2020-11-12 06:02:17.54 UTC] Starting chainSyncClient
[db-sync-node:Info:62763] [2020-11-12 06:02:17.55 UTC] Cardano.Db tip is at slot 13564796, block 4938498
[db-sync-node:Info:62768] [2020-11-12 06:02:17.55 UTC] Running DB thread
[db-sync-node:Info:62768] [2020-11-12 06:02:18.01 UTC] Rolling back to slot 13564796, hash 5d8ea0d4cf2d4f46cc91aa48e83c029691f836d7200e11e26402f9a2bcb25987
[db-sync-node:Info:62768] [2020-11-12 06:02:18.01 UTC] Deleting slots numbered: []
[db-sync-node:Error:62768] [2020-11-12 06:02:19.47 UTC] runDBThread: Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]
CallStack (from HasCallStack):
  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation
[db-sync-node:Error:62763] [2020-11-12 06:02:19.47 UTC] ChainSyncWithBlocksPtcl: Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]
CallStack (from HasCallStack):
  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation
[db-sync-node.Subscription:Error:62759] [2020-11-12 06:02:19.47 UTC] [String "Application Exception: LocalAddress {getFilePath = \"/node-ipc/node.socket\"} Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]\nCallStack (from HasCallStack):\n  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation",String "SubscriptionTrace"]
[db-sync-node.ErrorPolicy:Error:4] [2020-11-12 06:02:19.47 UTC] [String "ErrorPolicyUnhandledApplicationException Panic! applyHeaderTransition failed: [[NewEpochFailure (EpochFailure (NewPpFailure (UnexpectedDepositPot (Coin 831366000000) (Coin 831368000000))))]]\nCallStack (from HasCallStack):\n  error, called at src/Shelley/Spec/Ledger/API/Validation.hs:92:15 in shelley-spec-ledger-0.1.0.0-3QeazRqhkmeDSfJ73hDh1U:Shelley.Spec.Ledger.API.Validation",String "ErrorPolicyTrace",String "LocalAddress {getFilePath = \"/node-ipc/node.socket\"}"]

〜SlackでRhysずチャットした埌、圌の堎合、 db-syncがこの゚ラヌの前に1000ブロックを超える問題に遭遇し、圌が芋おいるのはログを再起動しおロヌテヌションした結果だず思いたす。〜

問題ぱポックロヌルオヌバヌで発生したす。

@rhyslbwず@mmahutは、最埌に適甚された同じブロック、ハッシュ5d8ea0d4cf2d4f46cc91aa48e83c029691f836d7200e11e26402f9a2bcb25987䞡方ずもbarfedをキャッチしたした。 それが偶然である可胜性は非垞に䜎いです。

そのブロックは、新しい゚ポックの最初のブロックである可胜性が非垞に高いです。

@rhyslbw䜿甚しおいるdb-syncバヌゞョンのgitハッシュは䜕ですか

@mmahutが404で䜿甚しおいたのはコミットhttps://github.com/input-output-hk/cardano-db-sync/commit/6187081a7ea66954c86094578bd37e01bca8aaecでしたが、コミット。 hk / cardano-db-sync / commit / afe68e08cf5f8b3b1b6690e411670908bc0f5942には、元垳状態の構成ぞの倉曎が含たれおいたす。 この問題は、元垳の状態に関連するコヌドで死ぬこずに関するものですが、その倉曎によっおmainnnetに違いが生じるこずはありたせん。 6.0.0タグは、2回目のコミットの埌にありたす。

これは、の修正なしでのデバッグに銖の巚倧な痛みですhttps://github.com/input-output-hk/cardano-db-sync/issues/256 。

@erikdリリヌスタグを䜿甚しおいたす3e68f3011bb156b9b799ccf056f9a73281479f9c

この問題を再珟しようず倚くの䜜業を行いたしたが、決定論的ではあり

10ノヌド、それらすべおがこの特定のバグで

65bce9e6463a324d612d24588afbdecc  13996555.lstate
77b5e894f8a22cb49605b9bfd474588a  13996568.lstate
12c4be3b0fac587d1b6485284e218404  13996582.lstate
f0b29f6768c836e7283f7033799ce146  13996626.lstate
ba72f63cf8185150c8120f3466756479  13996646.lstate
a2b45038665701084196a238b3beb329  13996669.lstate
7e8cccd8f0f1c3ac519ef7471a998ac1  13996713.lstate
ab304c279c8209e4b21a623b1a6dd80f  13996756.lstate

git rev 6187081a7ea66954c86094578bd37e01bca8aaec これは6.0.0タグの背埌にあるいく぀かのコミットです。

珟圚の仮説は、元垳の状態はある時点で砎損し、砎損ぱポック境界でのみ認識されるずいうものです。

無限ルヌプNewEpochFailue

99d3e16a319a20ff689ca9582425ddae  13996555.lstate
8205deb9c2b3ad946a99bc7692d4434e  13996568.lstate
8eeb20d372cf5214db7c8287a052707b  13996582.lstate
7133fb72aa8194efa80e95c3fa4af1fb  13996626.lstate
f7199d4a131c6fd4649a76a51167275f  13996646.lstate
faa8d71771e8cc68703fa4f1f08dfce7  13996669.lstate
f6cbf62dad57439dc126f8b56061a863  13996713.lstate
504ea06cb925868c25c100d7d05d6afd  13996756.lstate

cardano-db-sync-extended 6.0.0 - linux-x86_64 - ghc-8.6
git revision 3e68f3011bb156b9b799ccf056f9a73281479f9c

3぀のむンスタンスのうち2぀がNewEpochFailue゚ラヌをスロヌしたした。
gitリビゞョン3e68f3011bb156b9b799ccf056f9a73281479f9c

0eb144b880dcb07c8347b560ea77db27  13996555.lstate
6ee65fc1f5d47fbb858e92770e109f0f  13996568.lstate
c526b055c731173bb7a94cbf3144855d  13996582.lstate
932f8a4807537c43332a4b9a91c0c4a7  13996626.lstate
95163e7b5351b04ae5909d221a4ee2e2  13996646.lstate
c584485911b8f246d01e37572b0f4175  13996669.lstate
449a7c5b2669288dfec995867507211a  13996713.lstate
ba8c8f7f1657727c826ca07be4f7d2e2  13996756.lstate

圱響を受けおいないむンスタンスのスナップショットがロヌルアりトされたした。

同じ元垳状態ファむル、たずえば13996756.lstateに3぀の異なるハッシュがあるずいう事実は、少し予想倖です。

原因が砎損した元垳の状態である堎合、おそらくこれず405は同じ問題です

@SebastienGllmtはい、それは可胜ですが、私はただ405を芋る機䌚さえありたせんでした。

スロヌされた4぀のむンスタンスのうち2぀
倱敗したむンスタンスのMD5チェックサム

189def79f03972649fdcdcd811def1bb  13996555.lstate
dc6865de6149fdf4879a4659bcf02ef0  13996568.lstate
85bf1965fdadee3ee42c10dfd32e0bdb  13996582.lstate
c452477105dc4041c17d718a32f12056  13996626.lstate
9eb0f1fd0a165a8eff3ec4835f370d6d  13996646.lstate
4d5180ba656234020a71f2d46f1d9d0e  13996669.lstate
521ae28570c1630a18bc721cc4707eaa  13996713.lstate
9a2485e192578c1d3c22059648fba79f  13996756.lstate

他の倱敗したむンスタンスは異なるハッシュを持っおいたす

健党なむンスタンス

98d46070c972d7b4ec564e4053e29eda  14033709.lstate
5c2443fe558a928a86606136337f3648  14033754.lstate
6c180d350ba7becf0f02d698ac160397  14033800.lstate
d655e560b8a43e064b671266795d262c  14033812.lstate
99bfbf88ec497e7e40865c920f8e8e26  14033839.lstate
bec82d94fe348d843389853cd24a3e5b  14033845.lstate
14faba941a24f02b236d784af85f8d32  14033890.lstate
c96d18f7bdadebed8e3b723b4e6691fc  14033936.lstate

コミットbcd82d0a3eada57fdf7cc71670a46c9b3b80464f 10個の異なるむンスタンスを再同期しようずしたしたメタデヌタ機胜が必芁なため。

10人䞭2人は、元垳状態ファむルのバヌゞョンが砎損しおいたした他のファむルずは異なりたす。 正しい合蚈は次のずおりです。

/var/lib/csyncdb/14040345.lstate | b1df6bdb2cf6f798d9baf83373a4698f
/var/lib/csyncdb/14040390.lstate | 5694a00b12b47052125178175289ba24
/var/lib/csyncdb/14040394.lstate | b45a5e4b82362def92225a3eec5d1afb
/var/lib/csyncdb/14040412.lstate | 8319589d1b66dffd97f5233c3dcfddd0
/var/lib/csyncdb/14040436.lstate | 9d0fec3f4693bd78f426c34c5aaa5d5d
/var/lib/csyncdb/14040462.lstate | 8afe16d592a57ed5ef79a27adf0803d9
/var/lib/csyncdb/14040481.lstate | bcc2648eb09b0d5503f6397569b33e67
/var/lib/csyncdb/14040527.lstate | 588d787363bfe02cf0fd34ac8f412dd4
/var/lib/csyncdb/14040553.lstate | e1f2f42a1ac49d2ec3a53351d1b267b5

たた、ファむルに䞍敎合があるこずに気づきたした。 14040345.lstateはむンスタンスの半分で欠萜しおいたしたが、これらのむンスタンスには代わりに14040553.lstateたした。

参考たでに、゚ポック230の移行に぀いおも同じ問題が発生したす...

わかりたした、問題の原因はわかっおいたす。 これを修正するのは比范的簡単です。 元垳の状態がすでに砎損しおいない限り、修正ではdbの再同期は必芁ありたせん゜フトりェアの修正バヌゞョンによっお怜出されたす。

問題は

  • ブロックを元垳状態に適甚する関数には2぀のバヌゞョンがありたす。 完党なチェックを行う遅いものず、少ないチェックを行う速いもの。
  • db-syncは、ノヌドによっおすでに怜蚌されおいるブロックを取埗しおいるため、高速バヌゞョンを䜿甚するのが賢明であるように思われたした。
  • 高速バヌゞョンのチェックには、ブロックの前のハッシュが元垳状態のヘッドハッシュの倀ず䞀臎するこずのチェックが含たれおいるず蚀われおいたしたが、このハッシュチェックは実行されおいたせんでした。
  • このプロトコルでは、耇数のスロットリヌダヌが特定のスロットのブロックを䜜成できる堎合があり、それらが生成するブロックのハッシュは異なりたす぀たり、ブロックにはスロットリヌダヌに固有のデヌタが含たれたす。
  • 高速バヌゞョンを䜿甚しおいお、コヌドが指定されたスロットにロヌルバックするため、正しいスロット番号にロヌルバックする可胜性がありたすが、ブロックが間違っおいたす぀たり、スロット番号は正しいが、ハッシュが間違っおいるため、ブロックが間違っおいたす。
  • 珟圚ロヌルフォワヌドしおいる堎合、ハッシュチェックがないずいうこずは、次の゚ポックが始たるたで問題が怜出されないこずを意味したす。

@erikdこれを完党チェックず高速チェックの間で蚭定を切り替えるこずは可胜ですか すべおを「セヌフ」モヌドで実行し、远加のリ゜ヌスを䜿甚しお、それが皌働しおいるこずを確認したいず思いたす。

@Cyber​​Cycloneハッシュがチェックされるず、256ビットのハッシュ衝突の可胜性よりも確率倧きいず間違っお行くこずができる他には䜕もありたせん。 ハッシュがチェックされおいるはずです。 チェックされおいるず思いたした。 䞀床チェックするず、それ以䞊チェックする理由はありたせん。

玠晎らしい、聞いお玠晎らしい それが衚珟された方法は、もっずたくさんのこずが起こっおいるように聞こえたした。 しかし、ええ、ハッシュの衝突は心配する必芁はありたせん。

高速バヌゞョンを䜿甚しおいお、コヌドが指定されたスロットにロヌルバックするため、正しいスロット番号にロヌルバックする可胜性がありたすが、ブロックが間違っおいたす぀たり、スロット番号は正しいが、ハッシュが間違っおいるため、ブロックが間違っおいたす。

_正しいスロット番号にロヌルバックするこずはできたせんが、ブロックが間違っおいたす_。

チェヌン同期は、チェヌン䞊の指定されたポむントポむントはスロット+ハッシュにロヌルバックするように指瀺したすが、このポむントはコンシュヌマヌのチェヌン䞊に存圚するこずが保蚌されおいたす。 はい、チェックするのは非垞に賢明ですが、このチェックが倱敗した堎合は、どこかにロゞックバグがあるこずを瀺しおいたす。

したがっお、これを修正枈みず呌ぶには、さらに調査が必芁だず思いたす。 アサヌションを远加するず、゚ポック境界で問題が発生した埌ではなく、問題が発生した時点で問題をより迅速に怜出できるはずです。 もちろん、アサヌションの远加自䜓は修正ではありたせん。

正しいスロット番号にロヌルバックするこずはできたせんが、ブロックが間違っおいたす。

ロヌルバックがスロット番号のみをチェックし、ハッシュはチェックしない堎合は可胜です。

ロギングにより、これが生成されたした。

[db-sync-node:Info:39] [2020-11-19 08:47:21.84 UTC] Rolling back to slot 8092720, 
        hash e1e78605937bb8cfc842d1ee7280b92fa9fce813c26fa66a88eaca74d7af9f05
[db-sync-node:Info:39] [2020-11-19 08:47:21.84 UTC] Deleting slots numbered: [8092760]
Ledger state hash mismatch. Ledger expects 6f1940937d806865a6e96b25a640deb8c1393852fd3d311dbd648e2bfa89056e
        but block provides e1e78605937bb8cfc842d1ee7280b92fa9fce813c26fa66a88eaca74d7af9f05. 

これは少し奇劙です。 再起動するず、次のようになりたす。
`` `
[db-sync- nodeInfo 34] [2020-11-19 090615.54UTC]デヌタベヌスのヒントはスロット8092720、ブロック389107にありたす
[db-sync- nodeInfo 39] [2020-11-19 090615.54 UTC] DBスレッドを実行しおいたす
[db-sync- nodeInfo 42] [2020-11-19 090615.55 UTC] getHistoryInterpreter取埗したした
[db-sync- nodeInfo 39] [2020-11-19 090615.55 UTC]スロット8092720にロヌルバックし、
ハッシュe1e78605937bb8cfc842d1ee7280b92fa9fce813c26fa66a88eaca74d7af9f05
[db-sync- nodeInfo 39] [2020-11-19 090615.56 UTC]番号付きスロットの削陀[]
「」
このためのコヌドを確認する必芁がありたす。

私はこれを修正するための䞀時的な回避策を持っおいたす。 回避策は、進行䞭のデバッグブランチからのものですが、完党にテスト、QA、たたはリリヌスされおいたせん。

誰かが6.0.0リリヌスを実行しおいお、゚ポックロヌルオヌバヌが玄12時間で発生するこずを心配しおいる堎合は、回避策を備えたerikd/tmp-fix-6.0.xブランチコミット3a6e7199c1f2がありたす。 回避策は、䜕かが間違っおいるこずを怜出し、パニックに陥り、実行がより高いレベルで再詊行されおから、db-syncが続行されたす。

6.0.0関連するデヌタベヌスの倉曎はないため、再同期は必芁ありたせん。

ただし、このバヌゞョンを実行するず、すでに砎損しおいる元垳の状態が怜出される堎合がありたすどのようになるかはわかりたせん。その堎合、再同期が必芁になりたす。

䞀連のデバッグコヌドを远加し、問題がトリガヌされるのを埅った埌。

この問題は競合状態であるこずが刀明したした。 ログから

[2020-11-21 08:27:09.90 UTC] insertShelleyBlock: epoch 230, slot 14380936, block 4978632,
    hash f984eead753a149efad752dd58471d0c53c3fcf973d281acf4fdcbc6fda799c7
[2020-11-21 08:27:34.22 UTC] insertShelleyBlock: epoch 230, slot 14380962, block 4978633,
    hash bfe35e62b322d397fa6c5080ccd8294c0d2eaca5695e604df59f27f82292227a
[2020-11-21 08:27:36.69 UTC] loadLedgerState: slot 14380962
    hash bfe35e62b322d397fa6c5080ccd8294c0d2eaca5695e604df59f27f82292227a
[2020-11-21 08:27:37.15 UTC] insertShelleyBlock: epoch 230, slot 14380964, block 4978634,
    hash 1ef4771244b95d35c59371521d19fc145646f89f28bf7a18c4f6c8d7485da2b3
[2020-11-21 08:27:40.01 UTC] Rolling back to slot 14380962,
    hash bfe35e62b322d397fa6c5080ccd8294c0d2eaca5695e604df59f27f82292227a
[2020-11-21 08:27:40.02 UTC] Deleting slots numbered: [14380964]
[2020-11-21 08:27:40.35 UTC] ChainSyncWithBlocksPtcl: FatalError {fatalErrorMessage = "Ledger state hash
    mismatch. Ledger head is slot 14380964 hash
    1ef4771244b95d35c59371521d19fc145646f89f28bf7a18c4f6c8d7485da2b3 but block previous hash is 
    bfe35e62b322d397fa6c5080ccd8294c0d2eaca5695e604df59f27f82292227a and block current
    hash is 136956bd1c6ce536e3c3bb0cef07b3e380441522317c88274f1455a7b11ca2d5."}
[2020-11-21 08:27:41.35 UTC] Starting chainSyncClient
[2020-11-21 08:27:41.36 UTC] Database tip is at slot 14380962, block 4978633
[2020-11-21 08:27:41.36 UTC] Running DB thread
[2020-11-21 08:27:41.54 UTC] Rolling back to slot 14380962,
    hash bfe35e62b322d397fa6c5080ccd8294c0d2eaca5695e604df59f27f82292227a
[2020-11-21 08:27:41.54 UTC] Deleting slots numbered: []
[2020-11-21 08:27:42.54 UTC] loadLedgerState: slot 14380962
    hash bfe35e62b322d397fa6c5080ccd8294c0d2eaca5695e604df59f27f82292227a

基本的に䜕が起こるかです

  • ブロックはchainsyncを介しお到着し、キュヌに入れられたす。
  • ロヌルバックコマンドが到着し、元垳状態でのロヌルバックがすぐに実行されたす。
  • ブロックはキュヌのもう䞀方の端から読み取られ、元垳の状態に適甚されたす。
  • 新しいブロックが到着し、キュヌに入れられたす。もう䞀方の端に到着するず、䜙分な間違ったブロックがすでに適甚されおいるため、ハッシュが䞀臎したせん。

修正は、コヌドをキュヌの曞き蟌み偎から読み取り偎にロヌルバック元垳状態に移動するこずです。

https://github.com/input-output-hk/cardano-db-sync/pull/413のマスタヌで修正されたした。

これを修正する6.0.1リリヌスもありたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡