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

Commit a2d249c

Browse files
committed
review fixes
1 parent 4fbde83 commit a2d249c

File tree

6 files changed

+19
-139
lines changed

6 files changed

+19
-139
lines changed

libraries/shared/repository/repository.go

Lines changed: 0 additions & 27 deletions
This file was deleted.

libraries/shared/repository/repository_test.go

Lines changed: 0 additions & 67 deletions
This file was deleted.

pkg/contract_watcher/header/transformer/transformer.go

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func (tr *Transformer) Init() error {
128128
firstBlock, retrieveErr := tr.Retriever.RetrieveFirstBlock()
129129
if retrieveErr != nil {
130130
if retrieveErr == sql.ErrNoRows {
131-
logrus.Error(retrieveErr)
131+
logrus.Error(fmt.Errorf("error retrieving first block: %s", retrieveErr.Error()))
132132
firstBlock = 0
133133
} else {
134134
return fmt.Errorf("error retrieving first block: %s", retrieveErr.Error())
@@ -252,33 +252,19 @@ func (tr *Transformer) Execute() error {
252252
continue
253253
}
254254

255-
// Sort logs by the contract they belong to
256-
// Start by adding every contract addr to the map
257-
// So that if we don't have any logs for it, it is caught and the header is still marked checked for its events
258-
for _, addr := range tr.contractAddresses {
259-
sortedLogs[addr] = nil
260-
}
261255
for _, log := range allLogs {
262256
addr := strings.ToLower(log.Address.Hex())
263257
sortedLogs[addr] = append(sortedLogs[addr], log)
264258
}
265259

266260
// Process logs for each contract
267261
for conAddr, logs := range sortedLogs {
268-
con := tr.Contracts[conAddr]
269-
if len(logs) < 1 {
270-
eventIds := make([]string, 0)
271-
for eventName := range con.Events {
272-
eventIds = append(eventIds, strings.ToLower(eventName+"_"+con.Address))
273-
}
274-
markCheckedErr := tr.HeaderRepository.MarkHeaderCheckedForAll(header.Id, eventIds)
275-
if markCheckedErr != nil {
276-
return fmt.Errorf("error marking header checked: %s", markCheckedErr.Error())
277-
}
262+
if logs == nil {
278263
logrus.Tracef("no logs found for contract %s at block %d, continuing", conAddr, header.BlockNumber)
279264
continue
280265
}
281266
// Configure converter with this contract
267+
con := tr.Contracts[conAddr]
282268
tr.Converter.Update(con)
283269

284270
// Convert logs into batches of log mappings (eventName => []types.Logs
@@ -290,23 +276,22 @@ func (tr *Transformer) Execute() error {
290276
for eventName, logs := range convertedLogs {
291277
// If logs for this event are empty, mark them checked at this header and continue
292278
if len(logs) < 1 {
293-
eventID := strings.ToLower(eventName + "_" + con.Address)
294-
markCheckedErr := tr.HeaderRepository.MarkHeaderChecked(header.Id, eventID)
295-
if markCheckedErr != nil {
296-
return fmt.Errorf("error marking header checked: %s", markCheckedErr.Error())
297-
}
298279
logrus.Tracef("no logs found for event %s on contract %s at block %d, continuing", eventName, conAddr, header.BlockNumber)
299280
continue
300281
}
301282
// If logs aren't empty, persist them
302-
// Header is marked checked in the transactions
303283
persistErr := tr.EventRepository.PersistLogs(logs, con.Events[eventName], con.Address, con.Name)
304284
if persistErr != nil {
305285
return fmt.Errorf("error persisting logs: %s", persistErr.Error())
306286
}
307287
}
308288
}
309289

290+
markCheckedErr := tr.HeaderRepository.MarkHeaderCheckedForAll(header.Id, tr.eventIds)
291+
if markCheckedErr != nil {
292+
return fmt.Errorf("error marking header checked: %s", markCheckedErr.Error())
293+
}
294+
310295
// Poll contracts at this block height
311296
pollingErr := tr.methodPolling(header, tr.sortedMethodIds)
312297
if pollingErr != nil {

pkg/contract_watcher/shared/getter/interface_getter.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,16 @@
1717
package getter
1818

1919
import (
20+
"fmt"
21+
2022
"github.com/vulcanize/vulcanizedb/pkg/contract_watcher/shared/constants"
2123
"github.com/vulcanize/vulcanizedb/pkg/contract_watcher/shared/fetcher"
2224
"github.com/vulcanize/vulcanizedb/pkg/core"
2325
)
2426

2527
// InterfaceGetter is used to derive the interface of a contract
2628
type InterfaceGetter interface {
27-
GetABI(resolverAddr string, blockNumber int64) string
29+
GetABI(resolverAddr string, blockNumber int64) (string, error)
2830
GetBlockChain() core.BlockChain
2931
}
3032

@@ -42,14 +44,18 @@ func NewInterfaceGetter(blockChain core.BlockChain) InterfaceGetter {
4244
}
4345

4446
// GetABI is used to construct a custom ABI based on the results from calling supportsInterface
45-
func (g *interfaceGetter) GetABI(resolverAddr string, blockNumber int64) string {
47+
func (g *interfaceGetter) GetABI(resolverAddr string, blockNumber int64) (string, error) {
4648
a := constants.SupportsInterfaceABI
4749
args := make([]interface{}, 1)
4850
args[0] = constants.MetaSig.Bytes()
4951
supports, err := g.getSupportsInterface(a, resolverAddr, blockNumber, args)
50-
if err != nil || !supports {
51-
return ""
52+
if err != nil {
53+
return "", fmt.Errorf("call to getSupportsInterface failed: %v", err)
54+
}
55+
if !supports {
56+
return "", fmt.Errorf("contract does not support interface")
5257
}
58+
5359
abiStr := `[`
5460
args[0] = constants.AddrChangeSig.Bytes()
5561
supports, err = g.getSupportsInterface(a, resolverAddr, blockNumber, args)
@@ -93,7 +99,7 @@ func (g *interfaceGetter) GetABI(resolverAddr string, blockNumber int64) string
9399
}
94100
abiStr = abiStr[:len(abiStr)-1] + `]`
95101

96-
return abiStr
102+
return abiStr, nil
97103
}
98104

99105
// Use this method to check whether or not a contract supports a given method/event interface

pkg/contract_watcher/shared/repository/event_repository.go

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import (
2424
"github.com/hashicorp/golang-lru"
2525
"github.com/sirupsen/logrus"
2626

27-
"github.com/vulcanize/vulcanizedb/libraries/shared/repository"
2827
"github.com/vulcanize/vulcanizedb/pkg/contract_watcher/shared/types"
2928
"github.com/vulcanize/vulcanizedb/pkg/datastore/postgres"
3029
)
@@ -144,17 +143,6 @@ func (r *eventRepository) persistHeaderSyncLogs(logs []types.Log, eventInfo type
144143
}
145144
}
146145

147-
// Mark header as checked for this eventId
148-
eventID := strings.ToLower(eventInfo.Name + "_" + contractAddr)
149-
markCheckedErr := repository.MarkContractWatcherHeaderCheckedInTransaction(logs[0].ID, tx, eventID) // This assumes all logs are from same block
150-
if markCheckedErr != nil {
151-
rollbackErr := tx.Rollback()
152-
if rollbackErr != nil {
153-
logrus.Warnf("error rolling back transaction while marking header checked: %s", rollbackErr.Error())
154-
}
155-
return fmt.Errorf("error marking header checked: %s", markCheckedErr.Error())
156-
}
157-
158146
return tx.Commit()
159147
}
160148

pkg/contract_watcher/shared/repository/event_repository_test.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,6 @@ var _ = Describe("Repository", func() {
355355
Expect(count).To(Equal(2))
356356
})
357357

358-
It("Fails if the persisted event does not have a corresponding eventID column in the checked_headers table", func() {
359-
err = dataStore.PersistLogs(logs, event, con.Address, con.Name)
360-
Expect(err).To(HaveOccurred())
361-
})
362-
363358
It("Fails with empty log", func() {
364359
err = dataStore.PersistLogs([]types.Log{}, event, con.Address, con.Name)
365360
Expect(err).To(HaveOccurred())

0 commit comments

Comments
 (0)