Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit 7be070f

Browse files
author
Rob Mulholand
authored
Merge pull request #156 from vulcanize/contract-watcher-init
Enable contractWatcher without prior headerSync
2 parents f6ab938 + 2800e6d commit 7be070f

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

integration_test/contract_watcher_header_sync_transformer_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,10 @@ var _ = Describe("contractWatcher headerSync transformer", func() {
7878
Expect(c.Address).To(Equal(tusdAddr))
7979
})
8080

81-
It("Fails to initialize if first and block cannot be fetched from vDB headers table", func() {
81+
It("initializes when no headers available in db", func() {
8282
t := transformer.NewTransformer(test_helpers.TusdConfig, blockChain, db)
8383
err = t.Init()
84-
Expect(err).To(HaveOccurred())
85-
Expect(err.Error()).To(ContainSubstring("no rows in result set"))
84+
Expect(err).ToNot(HaveOccurred())
8685
})
8786

8887
It("Does nothing if nothing if no addresses are configured", func() {

pkg/contract_watcher/header/transformer/transformer.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package transformer
1818

1919
import (
20+
"database/sql"
2021
"errors"
2122
"fmt"
2223
"strings"
@@ -124,7 +125,11 @@ func (tr *Transformer) Init() error {
124125
// Get first block and most recent block number in the header repo
125126
firstBlock, retrieveErr := tr.Retriever.RetrieveFirstBlock()
126127
if retrieveErr != nil {
127-
return fmt.Errorf("error retrieving first block: %s", retrieveErr.Error())
128+
if retrieveErr == sql.ErrNoRows {
129+
firstBlock = 0
130+
} else {
131+
return fmt.Errorf("error retrieving first block: %s", retrieveErr.Error())
132+
}
128133
}
129134

130135
// Set to specified range if it falls within the bounds

pkg/contract_watcher/header/transformer/transformer_test.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package transformer_test
1818

1919
import (
20+
"database/sql"
2021
. "github.com/onsi/ginkgo"
2122
. "github.com/onsi/gomega"
2223

@@ -101,7 +102,17 @@ var _ = Describe("Transformer", func() {
101102
Expect(c.Address).To(Equal(fakeAddress))
102103
})
103104

104-
It("Fails to initialize if first block cannot be fetched from vDB headers table", func() {
105+
It("uses first block from config if vDB headers table has no rows", func() {
106+
blockRetriever := &fakes.MockHeaderSyncBlockRetriever{}
107+
blockRetriever.FirstBlockErr = sql.ErrNoRows
108+
t := getFakeTransformer(blockRetriever, &fakes.MockParser{}, &fakes.MockPoller{})
109+
110+
err := t.Init()
111+
112+
Expect(err).ToNot(HaveOccurred())
113+
})
114+
115+
It("returns error if fetching first block fails for other reason", func() {
105116
blockRetriever := &fakes.MockHeaderSyncBlockRetriever{}
106117
blockRetriever.FirstBlockErr = fakes.FakeError
107118
t := getFakeTransformer(blockRetriever, &fakes.MockParser{}, &fakes.MockPoller{})

0 commit comments

Comments
 (0)