Skip to content

Commit

Permalink
Recover from bootstrapped consensus.db
Browse files Browse the repository at this point in the history
  • Loading branch information
mike76-dev committed May 9, 2024
1 parent 4f0ea63 commit 8e3dc33
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 7 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ endif

ldflags= \
-X "github.com/mike76-dev/hostscore/internal/build.NodeBinaryName=hsd" \
-X "github.com/mike76-dev/hostscore/internal/build.NodeVersion=1.1.2" \
-X "github.com/mike76-dev/hostscore/internal/build.NodeVersion=1.1.3" \
-X "github.com/mike76-dev/hostscore/internal/build.ClientBinaryName=hsc" \
-X "github.com/mike76-dev/hostscore/internal/build.ClientVersion=1.4.1" \
-X "github.com/mike76-dev/hostscore/internal/build.GitRevision=${GIT_DIRTY}${GIT_REVISION}" \
Expand Down
16 changes: 14 additions & 2 deletions hostdb/hostdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,14 @@ func NewHostDB(db *sql.DB, dir string, cm *chain.Manager, cmZen *chain.Manager,

// Subscribe in a goroutine to prevent blocking.
go func() {
for hdb.cm.Tip().Height <= tip.Height {
time.Sleep(5 * time.Second)
}
if err := syncStore(hdb.s, hdb.cm, tip); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "mainnet"), zap.Error(err))
index, _ := hdb.cm.BestIndex(tip.Height - 1)
if err := syncStore(hdb.s, hdb.cm, index); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "mainnet"), zap.Error(err))
}
}

reorgChan := make(chan types.ChainIndex, 1)
Expand All @@ -277,8 +283,14 @@ func NewHostDB(db *sql.DB, dir string, cm *chain.Manager, cmZen *chain.Manager,
}()

go func() {
for hdb.cmZen.Tip().Height <= tipZen.Height {
time.Sleep(5 * time.Second)
}
if err := syncStore(hdb.sZen, hdb.cmZen, tipZen); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "zen"), zap.Error(err))
index, _ := hdb.cmZen.BestIndex(tipZen.Height - 1)
if err := syncStore(hdb.sZen, hdb.cmZen, index); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "zen"), zap.Error(err))
}
}

reorgChan := make(chan types.ChainIndex, 1)
Expand Down
8 changes: 6 additions & 2 deletions internal/walletutil/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,9 @@ func (s *DBStore) addSiacoinElements(sces []types.SiacoinElement) error {
e.Flush()
_, err := s.tx.Exec(`
INSERT INTO wt_sces (scoid, network, bytes)
VALUES (?, ?, ?)
VALUES (?, ?, ?) AS new
ON DUPLICATE KEY UPDATE
bytes = new.bytes
`, sce.ID[:], s.network, buf.Bytes())
if err != nil {
s.log.Error("couldn't add SC output", zap.String("network", s.network), zap.Error(err))
Expand Down Expand Up @@ -182,7 +184,9 @@ func (s *DBStore) addSiafundElements(sfes []types.SiafundElement) error {
e.Flush()
_, err := s.tx.Exec(`
INSERT INTO wt_sfes (sfoid, network, bytes)
VALUES (?, ?, ?)
VALUES (?, ?, ?) AS new
ON DUPLICATE KEY UPDATE
bytes = new.bytes
`, sfe.ID[:], s.network, buf.Bytes())
if err != nil {
s.log.Error("couldn't add SF output", zap.String("network", s.network), zap.Error(err))
Expand Down
16 changes: 14 additions & 2 deletions internal/walletutil/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,14 @@ func NewWallet(db *sql.DB, seed, seedZen, dir string, cm *chain.Manager, cmZen *
}

go func() {
for w.cm.Tip().Height <= tip.Height {
time.Sleep(5 * time.Second)
}
if err := syncStore(w.s, w.cm, tip); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "mainnet"), zap.Error(err))
index, _ := w.cm.BestIndex(tip.Height - 1)
if err := syncStore(w.s, w.cm, index); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "mainnet"), zap.Error(err))
}
}

reorgChan := make(chan types.ChainIndex, 1)
Expand All @@ -190,8 +196,14 @@ func NewWallet(db *sql.DB, seed, seedZen, dir string, cm *chain.Manager, cmZen *
}()

go func() {
for w.cmZen.Tip().Height <= tipZen.Height {
time.Sleep(5 * time.Second)
}
if err := syncStore(w.sZen, w.cmZen, tipZen); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "zen"), zap.Error(err))
index, _ := w.cmZen.BestIndex(tipZen.Height - 1)
if err := syncStore(w.sZen, w.cmZen, index); err != nil {
l.Fatal("failed to subscribe to chain manager", zap.String("network", "zen"), zap.Error(err))
}
}

reorgChan := make(chan types.ChainIndex, 1)
Expand Down

0 comments on commit 8e3dc33

Please sign in to comment.