Skip to content

Commit b3add30

Browse files
committed
major refactor
1 parent dcaaa40 commit b3add30

File tree

120 files changed

+3447
-1644
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+3447
-1644
lines changed

cmd/geth/config.go

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,11 @@ import (
2323
"math/big"
2424
"os"
2525
"reflect"
26+
"time"
2627
"unicode"
2728

29+
"github.com/ethereum/go-ethereum/statediff/indexer/database/sql"
30+
2831
"github.com/ethereum/go-ethereum/eth/downloader"
2932
"github.com/ethereum/go-ethereum/statediff"
3033
"gopkg.in/urfave/cli.v1"
@@ -182,27 +185,48 @@ func makeFullNode(ctx *cli.Context) (*node.Node, ethapi.Backend) {
182185
}
183186

184187
if ctx.GlobalBool(utils.StateDiffFlag.Name) {
185-
var dbParams *statediff.DBParams
186-
if ctx.GlobalIsSet(utils.StateDiffDBFlag.Name) {
187-
dbParams = new(statediff.DBParams)
188-
dbParams.ConnectionURL = ctx.GlobalString(utils.StateDiffDBFlag.Name)
188+
var dbConfig *sql.Config
189+
if ctx.GlobalIsSet(utils.StateDiffWritingFlag.Name) {
190+
dbConfig = new(sql.Config)
191+
dbConfig.Hostname = ctx.GlobalString(utils.StateDiffDBHostFlag.Name)
192+
dbConfig.Port = ctx.GlobalInt(utils.StateDiffDBPortFlag.Name)
193+
dbConfig.DatabaseName = ctx.GlobalString(utils.StateDiffDBNameFlag.Name)
194+
dbConfig.Username = ctx.GlobalString(utils.StateDiffDBUserFlag.Name)
195+
dbConfig.Password = ctx.GlobalString(utils.StateDiffDBPasswordFlag.Name)
196+
189197
if ctx.GlobalIsSet(utils.StateDiffDBNodeIDFlag.Name) {
190-
dbParams.ID = ctx.GlobalString(utils.StateDiffDBNodeIDFlag.Name)
198+
dbConfig.ID = ctx.GlobalString(utils.StateDiffDBNodeIDFlag.Name)
191199
} else {
192200
utils.Fatalf("Must specify node ID for statediff DB output")
193201
}
202+
194203
if ctx.GlobalIsSet(utils.StateDiffDBClientNameFlag.Name) {
195-
dbParams.ClientName = ctx.GlobalString(utils.StateDiffDBClientNameFlag.Name)
204+
dbConfig.ClientName = ctx.GlobalString(utils.StateDiffDBClientNameFlag.Name)
196205
} else {
197206
utils.Fatalf("Must specify client name for statediff DB output")
198207
}
199-
} else {
200-
if ctx.GlobalBool(utils.StateDiffWritingFlag.Name) {
201-
utils.Fatalf("Must pass DB parameters if enabling statediff write loop")
208+
209+
if ctx.GlobalIsSet(utils.StateDiffDBMinConns.Name) {
210+
dbConfig.MinConns = ctx.GlobalInt(utils.StateDiffDBMinConns.Name)
211+
}
212+
if ctx.GlobalIsSet(utils.StateDiffDBMaxConns.Name) {
213+
dbConfig.MaxConns = ctx.GlobalInt(utils.StateDiffDBMaxConns.Name)
214+
}
215+
if ctx.GlobalIsSet(utils.StateDiffDBMaxIdleConns.Name) {
216+
dbConfig.MaxIdle = ctx.GlobalInt(utils.StateDiffDBMaxIdleConns.Name)
217+
}
218+
if ctx.GlobalIsSet(utils.StateDiffDBMaxConnLifetime.Name) {
219+
dbConfig.MaxConnLifetime = ctx.GlobalDuration(utils.StateDiffDBMaxConnLifetime.Name) * time.Second
220+
}
221+
if ctx.GlobalIsSet(utils.StateDiffDBMaxConnIdleTime.Name) {
222+
dbConfig.MaxConnIdleTime = ctx.GlobalDuration(utils.StateDiffDBMaxConnIdleTime.Name) * time.Second
223+
}
224+
if ctx.GlobalIsSet(utils.StateDiffDBConnTimeout.Name) {
225+
dbConfig.ConnTimeout = ctx.GlobalDuration(utils.StateDiffDBConnTimeout.Name) * time.Second
202226
}
203227
}
204228
p := statediff.ServiceParams{
205-
DBParams: dbParams,
229+
DBParams: dbConfig,
206230
EnableWriteLoop: ctx.GlobalBool(utils.StateDiffWritingFlag.Name),
207231
NumWorkers: ctx.GlobalUint(utils.StateDiffWorkersFlag.Name),
208232
}

cmd/geth/main.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,17 @@ var (
149149
utils.GpoIgnoreGasPriceFlag,
150150
utils.MinerNotifyFullFlag,
151151
utils.StateDiffFlag,
152-
utils.StateDiffDBFlag,
152+
utils.StateDiffDBNameFlag,
153+
utils.StateDiffDBPasswordFlag,
154+
utils.StateDiffDBUserFlag,
155+
utils.StateDiffDBHostFlag,
156+
utils.StateDiffDBPortFlag,
157+
utils.StateDiffDBMaxConnLifetime,
158+
utils.StateDiffDBMaxConnIdleTime,
159+
utils.StateDiffDBMaxConns,
160+
utils.StateDiffDBMinConns,
161+
utils.StateDiffDBMaxIdleConns,
162+
utils.StateDiffDBConnTimeout,
153163
utils.StateDiffDBNodeIDFlag,
154164
utils.StateDiffDBClientNameFlag,
155165
utils.StateDiffWritingFlag,

cmd/geth/usage.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,17 @@ var AppHelpFlagGroups = []flags.FlagGroup{
225225
Name: "STATE DIFF",
226226
Flags: []cli.Flag{
227227
utils.StateDiffFlag,
228-
utils.StateDiffDBFlag,
228+
utils.StateDiffDBNameFlag,
229+
utils.StateDiffDBPasswordFlag,
230+
utils.StateDiffDBUserFlag,
231+
utils.StateDiffDBHostFlag,
232+
utils.StateDiffDBPortFlag,
233+
utils.StateDiffDBMaxConnLifetime,
234+
utils.StateDiffDBMaxConnIdleTime,
235+
utils.StateDiffDBMaxConns,
236+
utils.StateDiffDBMinConns,
237+
utils.StateDiffDBMaxIdleConns,
238+
utils.StateDiffDBConnTimeout,
229239
utils.StateDiffDBNodeIDFlag,
230240
utils.StateDiffDBClientNameFlag,
231241
utils.StateDiffWritingFlag,

cmd/utils/flags.go

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -786,16 +786,59 @@ var (
786786
Name: "statediff",
787787
Usage: "Enables the processing of state diffs between each block",
788788
}
789-
StateDiffDBFlag = cli.StringFlag{
790-
Name: "statediff.db",
791-
Usage: "PostgreSQL database connection string for writing state diffs",
789+
StateDiffDBHostFlag = cli.StringFlag{
790+
Name: "statediff.db.host",
791+
Usage: "Statediff database hostname/ip",
792+
Value: "localhost",
793+
}
794+
StateDiffDBPortFlag = cli.IntFlag{
795+
Name: "statediff.db.port",
796+
Usage: "Statediff database port",
797+
Value: 5432,
798+
}
799+
StateDiffDBNameFlag = cli.StringFlag{
800+
Name: "statediff.db.name",
801+
Usage: "Statediff database name",
802+
}
803+
StateDiffDBPasswordFlag = cli.StringFlag{
804+
Name: "statediff.db.password",
805+
Usage: "Statediff database password",
806+
}
807+
StateDiffDBUserFlag = cli.StringFlag{
808+
Name: "statediff.db.user",
809+
Usage: "Statediff database username",
810+
Value: "postgres",
811+
}
812+
StateDiffDBMaxConnLifetime = cli.DurationFlag{
813+
Name: "statediff.db.maxconnlifetime",
814+
Usage: "Statediff database maximum connection lifetime (in seconds)",
815+
}
816+
StateDiffDBMaxConnIdleTime = cli.DurationFlag{
817+
Name: "statediff.db.maxconnidletime",
818+
Usage: "Statediff database maximum connection idle time (in seconds)",
819+
}
820+
StateDiffDBMaxConns = cli.IntFlag{
821+
Name: "statediff.db.maxconns",
822+
Usage: "Statediff database maximum connections",
823+
}
824+
StateDiffDBMinConns = cli.IntFlag{
825+
Name: "statediff.db.minconns",
826+
Usage: "Statediff database minimum connections",
827+
}
828+
StateDiffDBMaxIdleConns = cli.IntFlag{
829+
Name: "statediff.db.maxidleconns",
830+
Usage: "Statediff database maximum idle connections",
831+
}
832+
StateDiffDBConnTimeout = cli.DurationFlag{
833+
Name: "statediff.db.conntimeout",
834+
Usage: "Statediff database connection timeout (in seconds)",
792835
}
793836
StateDiffDBNodeIDFlag = cli.StringFlag{
794-
Name: "statediff.dbnodeid",
837+
Name: "statediff.db.nodeid",
795838
Usage: "Node ID to use when writing state diffs to database",
796839
}
797840
StateDiffDBClientNameFlag = cli.StringFlag{
798-
Name: "statediff.dbclientname",
841+
Name: "statediff.db.clientname",
799842
Usage: "Client name to use when writing state diffs to database",
800843
}
801844
StateDiffWritingFlag = cli.BoolFlag{

go.mod

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ require (
2525
github.com/fatih/color v1.7.0
2626
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5
2727
github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff
28+
github.com/georgysavva/scany v0.2.9
2829
github.com/go-ole/go-ole v1.2.1 // indirect
2930
github.com/go-stack/stack v1.8.0
3031
github.com/golang/protobuf v1.4.3
@@ -46,6 +47,10 @@ require (
4647
github.com/ipfs/go-ipfs-blockstore v1.0.1
4748
github.com/ipfs/go-ipfs-ds-help v1.0.0
4849
github.com/ipfs/go-ipld-format v0.2.0
50+
github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect
51+
github.com/jackc/pgconn v1.10.0
52+
github.com/jackc/pgx v3.6.2+incompatible
53+
github.com/jackc/pgx/v4 v4.13.0
4954
github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458
5055
github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e
5156
github.com/jmoiron/sqlx v1.2.0
@@ -55,7 +60,6 @@ require (
5560
github.com/lib/pq v1.10.2
5661
github.com/mattn/go-colorable v0.1.8
5762
github.com/mattn/go-isatty v0.0.12
58-
github.com/mattn/go-sqlite3 v1.14.7 // indirect
5963
github.com/multiformats/go-multihash v0.0.14
6064
github.com/naoina/go-stringutil v0.1.0 // indirect
6165
github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416
@@ -70,7 +74,7 @@ require (
7074
github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
7175
github.com/tklauser/go-sysconf v0.3.5 // indirect
7276
github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef
73-
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a
77+
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97
7478
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
7579
golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912
7680
golang.org/x/text v0.3.6

0 commit comments

Comments
 (0)