File tree Expand file tree Collapse file tree 5 files changed +88
-19
lines changed Expand file tree Collapse file tree 5 files changed +88
-19
lines changed Original file line number Diff line number Diff line change 21
21
Usage : "API server for the crawler" ,
22
22
Action : startAPI ,
23
23
Flags : []cli.Flag {
24
- & crawlerDBFlag ,
25
24
& apiDBFlag ,
25
+ & autovacuumFlag ,
26
+ & busyTimeoutFlag ,
27
+ & crawlerDBFlag ,
26
28
& dropNodesTimeFlag ,
27
29
},
28
30
}
44
46
)
45
47
46
48
func startAPI (ctx * cli.Context ) error {
47
- crawlerDB , err := sql .Open ("sqlite" , ctx .String (crawlerDBFlag .Name ))
49
+ autovacuum := ctx .String (autovacuumFlag .Name )
50
+ busyTimeout := ctx .Uint64 (busyTimeoutFlag .Name )
51
+
52
+ crawlerDB , err := openSQLiteDB (
53
+ ctx .String (crawlerDBFlag .Name ),
54
+ autovacuum ,
55
+ busyTimeout ,
56
+ )
48
57
if err != nil {
49
58
return err
50
59
}
@@ -54,7 +63,11 @@ func startAPI(ctx *cli.Context) error {
54
63
if _ , err := os .Stat (apiDBPath ); os .IsNotExist (err ) {
55
64
shouldInit = true
56
65
}
57
- nodeDB , err := sql .Open ("sqlite" , apiDBPath )
66
+ nodeDB , err := openSQLiteDB (
67
+ apiDBPath ,
68
+ autovacuum ,
69
+ busyTimeout ,
70
+ )
58
71
if err != nil {
59
72
return err
60
73
}
Original file line number Diff line number Diff line change @@ -42,19 +42,21 @@ var (
42
42
Usage : "Crawl the ethereum network" ,
43
43
Action : crawlNodes ,
44
44
Flags : []cli.Flag {
45
- utils .GoerliFlag ,
46
- utils .SepoliaFlag ,
47
- utils .NetworkIdFlag ,
45
+ & autovacuumFlag ,
48
46
& bootnodesFlag ,
49
- & nodeURLFlag ,
50
- & nodeFileFlag ,
51
- & timeoutFlag ,
47
+ & busyTimeoutFlag ,
52
48
& crawlerDBFlag ,
49
+ & geoipdbFlag ,
53
50
& listenAddrFlag ,
54
- & nodekeyFlag ,
51
+ & nodeFileFlag ,
52
+ & nodeURLFlag ,
55
53
& nodedbFlag ,
56
- & geoipdbFlag ,
54
+ & nodekeyFlag ,
55
+ & timeoutFlag ,
57
56
& workersFlag ,
57
+ utils .GoerliFlag ,
58
+ utils .NetworkIdFlag ,
59
+ utils .SepoliaFlag ,
58
60
},
59
61
}
60
62
bootnodesFlag = cli.StringSliceFlag {
@@ -118,7 +120,13 @@ func crawlNodes(ctx *cli.Context) error {
118
120
shouldInit = true
119
121
}
120
122
var err error
121
- if db , err = sql .Open ("sqlite" , name ); err != nil {
123
+
124
+ db , err = openSQLiteDB (
125
+ name ,
126
+ ctx .String (autovacuumFlag .Name ),
127
+ ctx .Uint64 (busyTimeoutFlag .Name ),
128
+ )
129
+ if err != nil {
122
130
panic (err )
123
131
}
124
132
log .Info ("Connected to db" )
Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "github.com/urfave/cli/v2"
5
+ )
6
+
7
+ var (
8
+ autovacuumFlag = cli.StringFlag {
9
+ Name : "autovacuum" ,
10
+ Usage : ("Sets the autovacuum value for the databases. Possible values: " +
11
+ "NONE, FULL, or INCREMENTAL. " +
12
+ "https://www.sqlite.org/pragma.html#pragma_auto_vacuum" ),
13
+ Value : "INCREMENTAL" ,
14
+ }
15
+ busyTimeoutFlag = cli.Uint64Flag {
16
+ Name : "busy-timeout" ,
17
+ Usage : ("Sets the busy_timeout value for the database in milliseconds. " +
18
+ "https://www.sqlite.org/pragma.html#pragma_busy_timeout" ),
19
+ Value : 3000 ,
20
+ }
21
+ )
Original file line number Diff line number Diff line change @@ -77,18 +77,18 @@ var (
77
77
78
78
// Flags holds all command-line flags required for debugging.
79
79
var Flags = []cli.Flag {
80
- & verbosityFlag ,
81
- & vmoduleFlag ,
82
- & logjsonFlag ,
83
80
& backtraceAtFlag ,
81
+ & blockprofilerateFlag ,
82
+ & cpuprofileFlag ,
84
83
& debugFlag ,
85
- & pprofFlag ,
84
+ & logjsonFlag ,
85
+ & memprofilerateFlag ,
86
86
& pprofAddrFlag ,
87
+ & pprofFlag ,
87
88
& pprofPortFlag ,
88
- & memprofilerateFlag ,
89
- & blockprofilerateFlag ,
90
- & cpuprofileFlag ,
91
89
& traceFlag ,
90
+ & verbosityFlag ,
91
+ & vmoduleFlag ,
92
92
}
93
93
94
94
var glogger * log.GlogHandler
Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import (
4
+ "database/sql"
5
+ "fmt"
6
+ )
7
+
8
+ func openSQLiteDB (
9
+ name ,
10
+ autovacuum string ,
11
+ busyTimeout uint64 ,
12
+ ) (* sql.DB , error ) {
13
+ db , err := sql .Open ("sqlite" , name )
14
+ if err != nil {
15
+ return nil , fmt .Errorf ("error opening database: %w" , err )
16
+ }
17
+ _ , err = db .Exec ("PRAGMA auto_vacuum = " + autovacuum )
18
+ if err != nil {
19
+ return nil , fmt .Errorf ("error setting auto_vacuum: %w" , err )
20
+ }
21
+ _ , err = db .Exec (fmt .Sprintf ("PRAGMA busy_timeout = %d" , busyTimeout ))
22
+ if err != nil {
23
+ return nil , fmt .Errorf ("error setting busy_timeout: %w" , err )
24
+ }
25
+
26
+ return db , nil
27
+ }
You can’t perform that action at this time.
0 commit comments