Merge pull request #258 from op/metadata-npe
Fix nil pointer panic when meta bucket is missing
This commit is contained in:
commit
09f59d1832
1 changed files with 10 additions and 1 deletions
|
|
@ -37,6 +37,10 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
errNoBucket = errors.New("bolt: bucket is missing")
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
hashPool = sync.Pool{
|
hashPool = sync.Pool{
|
||||||
New: func() interface{} { return sha1.New() },
|
New: func() interface{} { return sha1.New() },
|
||||||
}
|
}
|
||||||
|
|
@ -97,7 +101,9 @@ func newQuadStore(path string, options graph.Options) (graph.QuadStore, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
err = qs.getMetadata()
|
err = qs.getMetadata()
|
||||||
if err != nil {
|
if err == errNoBucket {
|
||||||
|
panic("bolt: quadstore has not been initialised")
|
||||||
|
} else if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &qs, nil
|
return &qs, nil
|
||||||
|
|
@ -451,6 +457,9 @@ func (qs *QuadStore) SizeOf(k graph.Value) int64 {
|
||||||
func (qs *QuadStore) getInt64ForKey(tx *bolt.Tx, key string, empty int64) (int64, error) {
|
func (qs *QuadStore) getInt64ForKey(tx *bolt.Tx, key string, empty int64) (int64, error) {
|
||||||
var out int64
|
var out int64
|
||||||
b := tx.Bucket(metaBucket)
|
b := tx.Bucket(metaBucket)
|
||||||
|
if b == nil {
|
||||||
|
return empty, errNoBucket
|
||||||
|
}
|
||||||
data := b.Get([]byte(key))
|
data := b.Get([]byte(key))
|
||||||
if data == nil {
|
if data == nil {
|
||||||
return empty, nil
|
return empty, nil
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue