Skip to content

Commit d9504a7

Browse files
authored
[persistence/contract] move pebble db init to main (#536)
1 parent 9d9d6f7 commit d9504a7

File tree

4 files changed

+25
-18
lines changed

4 files changed

+25
-18
lines changed

cmd/coordinator/main.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"os/signal"
88
"syscall"
99

10+
"github.com/cockroachdb/pebble"
1011
"github.com/ethereum/go-ethereum/common"
1112
"github.com/ethereum/go-ethereum/common/hexutil"
1213
"github.com/pkg/errors"
@@ -51,13 +52,18 @@ func main() {
5152

5253
var contractPersistence *contract.Contract
5354
if !local {
54-
contractPersistence, err = contract.New(conf.SchedulerEpoch, conf.BeginningBlockNumber, conf.LocalDBDir,
55+
db, err := pebble.Open(conf.LocalDBDir, &pebble.Options{})
56+
if err != nil {
57+
log.Fatal(errors.Wrap(err, "failed to open pebble db"))
58+
}
59+
defer db.Close()
60+
61+
contractPersistence, err = contract.New(db, conf.SchedulerEpoch, conf.BeginningBlockNumber,
5562
conf.ChainEndpoint, common.HexToAddress(conf.ProverContractAddr),
5663
common.HexToAddress(conf.ProjectContractAddr), chainHeadNotifications, projectNotifications)
5764
if err != nil {
5865
log.Fatal(errors.Wrap(err, "failed to new contract persistence"))
5966
}
60-
defer contractPersistence.Release()
6167
}
6268

6369
var projectManager *project.Manager

cmd/prover/main.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"os/signal"
88
"syscall"
99

10+
"github.com/cockroachdb/pebble"
1011
"github.com/ethereum/go-ethereum/common"
1112
"github.com/ethereum/go-ethereum/common/hexutil"
1213
"github.com/ethereum/go-ethereum/crypto"
@@ -64,13 +65,18 @@ func main() {
6465

6566
var contractPersistence *contract.Contract
6667
if !local {
67-
contractPersistence, err = contract.New(conf.SchedulerEpoch, conf.BeginningBlockNumber, conf.LocalDBDir,
68+
db, err := pebble.Open(conf.LocalDBDir, &pebble.Options{})
69+
if err != nil {
70+
log.Fatal(errors.Wrap(err, "failed to open pebble db"))
71+
}
72+
defer db.Close()
73+
74+
contractPersistence, err = contract.New(db, conf.SchedulerEpoch, conf.BeginningBlockNumber,
6875
conf.ChainEndpoint, common.HexToAddress(conf.ProverContractAddr),
6976
common.HexToAddress(conf.ProjectContractAddr), chainHeadNotifications, projectNotifications)
7077
if err != nil {
7178
log.Fatal(errors.Wrap(err, "failed to new contract persistence"))
7279
}
73-
defer contractPersistence.Release()
7480
}
7581

7682
proverID := uint64(0)

cmd/stresstest/main.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"syscall"
1818
"time"
1919

20+
"github.com/cockroachdb/pebble"
2021
"github.com/ethereum/go-ethereum/accounts/abi/bind"
2122
"github.com/ethereum/go-ethereum/common"
2223
"github.com/ethereum/go-ethereum/core/types"
@@ -232,12 +233,17 @@ func main() {
232233

233234
projectNotifications := []chan<- uint64{projectManagerNotification}
234235

235-
contractPersistence, err := contract.New(schedulerEpoch, beginningBlockNumber, localDBDir, chainEndpoint, proverContractAddress,
236+
db, err := pebble.Open(localDBDir, &pebble.Options{})
237+
if err != nil {
238+
log.Fatal(errors.Wrap(err, "failed to open pebble db"))
239+
}
240+
defer db.Close()
241+
242+
contractPersistence, err := contract.New(db, schedulerEpoch, beginningBlockNumber, chainEndpoint, proverContractAddress,
236243
projectContractAddress, nil, projectNotifications)
237244
if err != nil {
238245
log.Fatal(errors.Wrap(err, "failed to new contract persistence"))
239246
}
240-
defer contractPersistence.Release()
241247

242248
updateProjectRequiredProverTicker := time.NewTicker(1 * time.Hour)
243249
go func() {

persistence/contract/contract.go

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -440,18 +440,7 @@ func (c *Contract) watch(listedBlockNumber uint64) {
440440
}()
441441
}
442442

443-
func (c *Contract) Release() {
444-
if err := c.db.Close(); err != nil {
445-
slog.Error("failed to close pebble db", "error", err)
446-
}
447-
}
448-
449-
func New(size, beginningBlockNumber uint64, localDBDir, chainEndpoint string, proverContractAddr, projectContractAddr common.Address, chainHeadNotifications []chan<- uint64, projectNotifications []chan<- uint64) (*Contract, error) {
450-
db, err := pebble.Open(localDBDir, &pebble.Options{})
451-
if err != nil {
452-
return nil, errors.Wrap(err, "failed to open pebble db")
453-
}
454-
443+
func New(db *pebble.DB, size, beginningBlockNumber uint64, chainEndpoint string, proverContractAddr, projectContractAddr common.Address, chainHeadNotifications []chan<- uint64, projectNotifications []chan<- uint64) (*Contract, error) {
455444
client, err := ethclient.Dial(chainEndpoint)
456445
if err != nil {
457446
return nil, errors.Wrap(err, "failed to dial chain endpoint")

0 commit comments

Comments
 (0)