Godeps: pull in the leveldb upstream write race fix

pull/2326/head
Péter Szilágyi 9 years ago
parent 850f41b374
commit 9ff07304a3
  1. 24
      Godeps/Godeps.json
  2. 6
      Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/db_write.go
  3. 21
      Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/pool.go
  4. 33
      Godeps/_workspace/src/github.com/syndtr/goleveldb/leveldb/util/pool_legacy.go

24
Godeps/Godeps.json generated vendored

@ -140,51 +140,51 @@
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb", "ImportPath": "github.com/syndtr/goleveldb/leveldb",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/cache", "ImportPath": "github.com/syndtr/goleveldb/leveldb/cache",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/comparer", "ImportPath": "github.com/syndtr/goleveldb/leveldb/comparer",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/errors", "ImportPath": "github.com/syndtr/goleveldb/leveldb/errors",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/filter", "ImportPath": "github.com/syndtr/goleveldb/leveldb/filter",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/iterator", "ImportPath": "github.com/syndtr/goleveldb/leveldb/iterator",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/journal", "ImportPath": "github.com/syndtr/goleveldb/leveldb/journal",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/memdb", "ImportPath": "github.com/syndtr/goleveldb/leveldb/memdb",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/opt", "ImportPath": "github.com/syndtr/goleveldb/leveldb/opt",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/storage", "ImportPath": "github.com/syndtr/goleveldb/leveldb/storage",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/table", "ImportPath": "github.com/syndtr/goleveldb/leveldb/table",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "github.com/syndtr/goleveldb/leveldb/util", "ImportPath": "github.com/syndtr/goleveldb/leveldb/util",
"Rev": "ad0d8b2ab58a55ed5c58073aa46451d5e1ca1280" "Rev": "917f41c560270110ceb73c5b38be2a9127387071"
}, },
{ {
"ImportPath": "golang.org/x/crypto/pbkdf2", "ImportPath": "golang.org/x/crypto/pbkdf2",

@ -166,15 +166,15 @@ func (db *DB) Write(b *Batch, wo *opt.WriteOptions) (err error) {
merged := 0 merged := 0
danglingMerge := false danglingMerge := false
defer func() { defer func() {
for i := 0; i < merged; i++ {
db.writeAckC <- err
}
if danglingMerge { if danglingMerge {
// Only one dangling merge at most, so this is safe. // Only one dangling merge at most, so this is safe.
db.writeMergedC <- false db.writeMergedC <- false
} else { } else {
<-db.writeLockC <-db.writeLockC
} }
for i := 0; i < merged; i++ {
db.writeAckC <- err
}
}() }()
mdb, mdbFree, err := db.flush(b.size()) mdb, mdbFree, err := db.flush(b.size())

@ -1,21 +0,0 @@
// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
// All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// +build go1.3
package util
import (
"sync"
)
type Pool struct {
sync.Pool
}
func NewPool(cap int) *Pool {
return &Pool{}
}

@ -1,33 +0,0 @@
// Copyright (c) 2014, Suryandaru Triandana <syndtr@gmail.com>
// All rights reserved.
//
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// +build !go1.3
package util
type Pool struct {
pool chan interface{}
}
func (p *Pool) Get() interface{} {
select {
case x := <-p.pool:
return x
default:
return nil
}
}
func (p *Pool) Put(x interface{}) {
select {
case p.pool <- x:
default:
}
}
func NewPool(cap int) *Pool {
return &Pool{pool: make(chan interface{}, cap)}
}
Loading…
Cancel
Save