Skip to content

Commit bb25891

Browse files
authored
Merge pull request etcd-io#10268 from gyuho/dump-db
tools/etcd-dump-db: add "--timeout" flag
2 parents af893d3 + f8a513c commit bb25891

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

tools/etcd-dump-db/backend.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ func snapDir(dataDir string) string {
3232
}
3333

3434
func getBuckets(dbPath string) (buckets []string, err error) {
35-
db, derr := bolt.Open(dbPath, 0600, &bolt.Options{})
35+
db, derr := bolt.Open(dbPath, 0600, &bolt.Options{Timeout: flockTimeout})
3636
if derr != nil {
37-
return nil, derr
37+
return nil, fmt.Errorf("failed to open bolt DB %v", derr)
3838
}
3939
defer db.Close()
4040

@@ -94,9 +94,9 @@ func leaseDecoder(k, v []byte) {
9494
}
9595

9696
func iterateBucket(dbPath, bucket string, limit uint64, decode bool) (err error) {
97-
db, derr := bolt.Open(dbPath, 0600, &bolt.Options{})
98-
if derr != nil {
99-
return derr
97+
db, err := bolt.Open(dbPath, 0600, &bolt.Options{Timeout: flockTimeout})
98+
if err != nil {
99+
return fmt.Errorf("failed to open bolt DB %v", err)
100100
}
101101
defer db.Close()
102102

tools/etcd-dump-db/main.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"os"
2121
"path/filepath"
2222
"strings"
23+
"time"
2324

2425
"github.com/spf13/cobra"
2526
)
@@ -46,10 +47,12 @@ var (
4647
}
4748
)
4849

50+
var flockTimeout time.Duration
4951
var iterateBucketLimit uint64
5052
var iterateBucketDecode bool
5153

5254
func init() {
55+
rootCommand.PersistentFlags().DurationVar(&flockTimeout, "timeout", 10*time.Second, "time to wait to obtain a file lock on db file, 0 to block indefinitely")
5356
iterateBucketCommand.PersistentFlags().Uint64Var(&iterateBucketLimit, "limit", 0, "max number of key-value pairs to iterate (0< to iterate all)")
5457
iterateBucketCommand.PersistentFlags().BoolVar(&iterateBucketDecode, "decode", false, "true to decode Protocol Buffer encoded data")
5558

0 commit comments

Comments
 (0)