@@ -89,7 +89,9 @@ import (
89
89
)
90
90
91
91
var (
92
- genesisHashKey = []byte ("genesisID" )
92
+ genesisHashKey = []byte ("genesisID" )
93
+ ungracefulShutdown = []byte ("ungracefulShutdown" )
94
+
93
95
indexerDBPrefix = []byte {0x00 }
94
96
95
97
errInvalidTLSKey = errors .New ("invalid TLS key" )
@@ -556,6 +558,23 @@ func (n *Node) initDatabase() error {
556
558
if genesisHash != expectedGenesisHash {
557
559
return fmt .Errorf ("db contains invalid genesis hash. DB Genesis: %s Generated Genesis: %s" , genesisHash , expectedGenesisHash )
558
560
}
561
+
562
+ ok , err := n .DB .Has (ungracefulShutdown )
563
+ if err != nil {
564
+ return fmt .Errorf ("failed to read ungraceful shutdown key: %w" , err )
565
+ }
566
+
567
+ if ok {
568
+ n .Log .Warn ("detected previous ungraceful shutdown" )
569
+ }
570
+
571
+ if err := n .DB .Put (ungracefulShutdown , nil ); err != nil {
572
+ return fmt .Errorf (
573
+ "failed to write ungraceful shutdown key at: %w" ,
574
+ err ,
575
+ )
576
+ }
577
+
559
578
return nil
560
579
}
561
580
@@ -1530,6 +1549,13 @@ func (n *Node) shutdown() {
1530
1549
n .runtimeManager .Stop (context .TODO ())
1531
1550
1532
1551
if n .DBManager != nil {
1552
+ if err := n .DB .Delete (ungracefulShutdown ); err != nil {
1553
+ n .Log .Error (
1554
+ "failed to delete ungraceful shutdown key" ,
1555
+ zap .Error (err ),
1556
+ )
1557
+ }
1558
+
1533
1559
if err := n .DBManager .Close (); err != nil {
1534
1560
n .Log .Warn ("error during DB shutdown" ,
1535
1561
zap .Error (err ),
0 commit comments