Commit 7e9e8a9d authored by Kirill Smelkov's avatar Kirill Smelkov

go/zodb/zodbtools: *: Don't forget to close storage on program exit

Implement "TODO defer stor.Close()" that was sitting there in every subcommand.
parent 949d42da
// Copyright (C) 2017-2019 Nexedi SA and Contributors. // Copyright (C) 2017-2020 Nexedi SA and Contributors.
// Kirill Smelkov <kirr@nexedi.com> // Kirill Smelkov <kirr@nexedi.com>
// //
// This program is free software: you can Use, Study, Modify and Redistribute // This program is free software: you can Use, Study, Modify and Redistribute
...@@ -125,12 +125,17 @@ func catobjMain(argv []string) { ...@@ -125,12 +125,17 @@ func catobjMain(argv []string) {
} }
ctx := context.Background() ctx := context.Background()
err := func() (err error) {
stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true}) stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true})
if err != nil { if err != nil {
prog.Fatal(err) return err
} }
// TODO defer stor.Close() defer func() {
err2 := stor.Close()
if err == nil {
err = err2
}
}()
catobj := func(xid zodb.Xid) error { catobj := func(xid zodb.Xid) error {
if raw { if raw {
...@@ -143,7 +148,14 @@ func catobjMain(argv []string) { ...@@ -143,7 +148,14 @@ func catobjMain(argv []string) {
for _, xid := range xidv { for _, xid := range xidv {
err = catobj(xid) err = catobj(xid)
if err != nil { if err != nil {
prog.Fatal(err) return err
} }
} }
return nil
}()
if err != nil {
prog.Fatal(err)
}
} }
...@@ -256,20 +256,27 @@ func dumpMain(argv []string) { ...@@ -256,20 +256,27 @@ func dumpMain(argv []string) {
tidRange = argv[1] tidRange = argv[1]
} }
ctx := context.Background()
err := func() (err error) {
tidMin, tidMax, err := zodb.ParseTidRange(tidRange) tidMin, tidMax, err := zodb.ParseTidRange(tidRange)
if err != nil { if err != nil {
prog.Fatal(err) return err
} }
ctx := context.Background()
stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true}) stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true})
if err != nil { if err != nil {
prog.Fatal(err) return err
}
defer func() {
err2 := stor.Close()
if err == nil {
err = err2
} }
// TODO defer stor.Close() }()
return Dump(ctx, os.Stdout, stor, tidMin, tidMax, hashOnly)
}()
err = Dump(ctx, os.Stdout, stor, tidMin, tidMax, hashOnly)
if err != nil { if err != nil {
prog.Fatal(err) prog.Fatal(err)
} }
......
// Copyright (C) 2017-2019 Nexedi SA and Contributors. // Copyright (C) 2017-2020 Nexedi SA and Contributors.
// Kirill Smelkov <kirr@nexedi.com> // Kirill Smelkov <kirr@nexedi.com>
// //
// This program is free software: you can Use, Study, Modify and Redistribute // This program is free software: you can Use, Study, Modify and Redistribute
...@@ -127,14 +127,21 @@ func infoMain(argv []string) { ...@@ -127,14 +127,21 @@ func infoMain(argv []string) {
zurl := argv[0] zurl := argv[0]
ctx := context.Background() ctx := context.Background()
err := func() (err error) {
stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true}) stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true})
if err != nil { if err != nil {
prog.Fatal(err) return err
} }
// TODO defer stor.Close() defer func() {
err2 := stor.Close()
if err == nil {
err = err2
}
}()
return Info(ctx, os.Stdout, stor, argv[1:])
}()
err = Info(ctx, os.Stdout, stor, argv[1:])
if err != nil { if err != nil {
prog.Fatal(err) prog.Fatal(err)
} }
......
// Copyright (C) 2019 Nexedi SA and Contributors. // Copyright (C) 2019-2020 Nexedi SA and Contributors.
// Kirill Smelkov <kirr@nexedi.com> // Kirill Smelkov <kirr@nexedi.com>
// //
// This program is free software: you can Use, Study, Modify and Redistribute // This program is free software: you can Use, Study, Modify and Redistribute
...@@ -153,14 +153,21 @@ func watchMain(argv []string) { ...@@ -153,14 +153,21 @@ func watchMain(argv []string) {
zurl := argv[0] zurl := argv[0]
ctx := context.Background() ctx := context.Background()
err := func() (err error) {
stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true}) stor, err := zodb.Open(ctx, zurl, &zodb.OpenOptions{ReadOnly: true})
if err != nil { if err != nil {
prog.Fatal(err) return err
} }
// TODO defer stor.Close() defer func() {
err2 := stor.Close()
if err == nil {
err = err2
}
}()
return Watch(ctx, stor, os.Stdout, verbose)
}()
err = Watch(ctx, stor, os.Stdout, verbose)
if err != nil { if err != nil {
prog.Fatal(err) prog.Fatal(err)
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment