Commit 6282747f authored by astaxie's avatar astaxie

update vendor

parent d5fd5cad
module github.com/astaxie/beego module github.com/astaxie/beego
require ( require (
github.com/BurntSushi/toml v0.3.1 // indirect
github.com/Knetic/govaluate v3.0.0+incompatible // indirect github.com/Knetic/govaluate v3.0.0+incompatible // indirect
github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd github.com/beego/goyaml2 v0.0.0-20130207012346-5545475820dd
github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542 github.com/beego/x2j v0.0.0-20131220205130-a0352aadc542
...@@ -9,13 +8,12 @@ require ( ...@@ -9,13 +8,12 @@ require (
github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737 github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737
github.com/casbin/casbin v1.7.0 github.com/casbin/casbin v1.7.0
github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58
github.com/couchbase/go-couchbase v0.0.0-20181019154153-595f46701cbc github.com/couchbase/go-couchbase v0.0.0-20181122212707-3e9b6e1258bb
github.com/couchbase/gomemcached v0.0.0-20180723192129-20e69a1ee160 // indirect github.com/couchbase/gomemcached v0.0.0-20181122193126-5125a94a666c // indirect
github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a // indirect github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a // indirect
github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76 // indirect github.com/cupcake/rdb v0.0.0-20161107195141-43ba34106c76 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 // indirect github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 // indirect
github.com/elazarl/go-bindata-assetfs v0.0.0-20180223110309-38087fe4dafb github.com/elazarl/go-bindata-assetfs v1.0.0
github.com/go-redis/redis v6.14.2+incompatible github.com/go-redis/redis v6.14.2+incompatible
github.com/go-sql-driver/mysql v1.4.1 github.com/go-sql-driver/mysql v1.4.1
github.com/gogo/protobuf v1.1.1 github.com/gogo/protobuf v1.1.1
...@@ -23,23 +21,16 @@ require ( ...@@ -23,23 +21,16 @@ require (
github.com/gomodule/redigo v2.0.0+incompatible github.com/gomodule/redigo v2.0.0+incompatible
github.com/lib/pq v1.0.0 github.com/lib/pq v1.0.0
github.com/mattn/go-sqlite3 v1.10.0 github.com/mattn/go-sqlite3 v1.10.0
github.com/onsi/ginkgo v1.7.0 // indirect
github.com/onsi/gomega v1.4.3 // indirect
github.com/pelletier/go-toml v1.2.0 // indirect github.com/pelletier/go-toml v1.2.0 // indirect
github.com/pkg/errors v0.8.0 // indirect github.com/pkg/errors v0.8.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 // indirect github.com/siddontang/go v0.0.0-20180604090527-bdc77568d726 // indirect
github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373 github.com/siddontang/ledisdb v0.0.0-20181029004158-becf5f38d373
github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d // indirect github.com/siddontang/rdb v0.0.0-20150307021120-fc89ed2e418d // indirect
github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec
github.com/stretchr/testify v1.2.2 // indirect github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c // indirect
github.com/syndtr/goleveldb v0.0.0-20181105012736-f9080354173f // indirect
github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b // indirect github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b // indirect
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 golang.org/x/crypto v0.0.0-20181126163421-e657309f52e7
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a // indirect golang.org/x/net v0.0.0-20181114220301-adae6a3d119a // indirect
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f // indirect
golang.org/x/sys v0.0.0-20181121002834-0cf1ed9e522b // indirect
google.golang.org/appengine v1.3.0 // indirect google.golang.org/appengine v1.3.0 // indirect
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 // indirect
gopkg.in/yaml.v2 v2.2.1 gopkg.in/yaml.v2 v2.2.1
) )
This diff is collapsed.
...@@ -129,17 +129,20 @@ func (b *Bucket) Do(k string, f func(mc *memcached.Client, vb uint16) error) (er ...@@ -129,17 +129,20 @@ func (b *Bucket) Do(k string, f func(mc *memcached.Client, vb uint16) error) (er
err = f(conn, uint16(vb)) err = f(conn, uint16(vb))
} }
var st gomemcached.Status
var retry bool var retry bool
discard := isOutOfBoundsError(err)
// MB-30967 / MB-31001 implement back off for transient errors // MB-30967 / MB-31001 implement back off for transient errors
if i, ok := err.(*gomemcached.MCResponse); ok { if i, ok := err.(*gomemcached.MCResponse); ok {
st = i.Status switch i.Status {
switch st {
case gomemcached.NOT_MY_VBUCKET: case gomemcached.NOT_MY_VBUCKET:
b.Refresh() b.Refresh()
// MB-28842: in case of NMVB, check if the node is still part of the map
// and ditch the connection if it isn't.
discard = b.checkVBmap(pool.Node())
retry = true retry = true
case gomemcached.NOT_SUPPORTED: case gomemcached.NOT_SUPPORTED:
discard = true
retry = true retry = true
case gomemcached.ENOMEM: case gomemcached.ENOMEM:
fallthrough fallthrough
...@@ -151,9 +154,7 @@ func (b *Bucket) Do(k string, f func(mc *memcached.Client, vb uint16) error) (er ...@@ -151,9 +154,7 @@ func (b *Bucket) Do(k string, f func(mc *memcached.Client, vb uint16) error) (er
} }
} }
// MB-28842: in case of NMVB, check if the node is still part of the map if discard {
// and ditch the connection if it isn't.
if st == gomemcached.NOT_MY_VBUCKET && b.checkVBmap(pool.Node()) {
pool.Discard(conn) pool.Discard(conn)
} else { } else {
pool.Return(conn) pool.Return(conn)
...@@ -338,7 +339,7 @@ func isConnError(err error) bool { ...@@ -338,7 +339,7 @@ func isConnError(err error) bool {
} }
func isOutOfBoundsError(err error) bool { func isOutOfBoundsError(err error) bool {
return strings.Contains(err.Error(), "Out of Bounds error") return err != nil && strings.Contains(err.Error(), "Out of Bounds error")
} }
...@@ -459,6 +460,7 @@ func (b *Bucket) doBulkGet(vb uint16, keys []string, reqDeadline time.Time, ...@@ -459,6 +460,7 @@ func (b *Bucket) doBulkGet(vb uint16, keys []string, reqDeadline time.Time,
case error: case error:
if isOutOfBoundsError(err) { if isOutOfBoundsError(err) {
// We got an out of bound error, retry the operation // We got an out of bound error, retry the operation
discard = true
return nil return nil
} else if isConnError(err) && backOff(backOffAttempts, MaxBackOffRetries, backOffDuration, true) { } else if isConnError(err) && backOff(backOffAttempts, MaxBackOffRetries, backOffDuration, true) {
backOffAttempts++ backOffAttempts++
......
...@@ -581,7 +581,9 @@ func (c *Client) GetBulk(vb uint16, keys []string, rv map[string]*gomemcached.MC ...@@ -581,7 +581,9 @@ func (c *Client) GetBulk(vb uint16, keys []string, rv map[string]*gomemcached.MC
return return
} }
// continue receiving in case of KEY_ENOENT // continue receiving in case of KEY_ENOENT
} else if res.Opcode == gomemcached.GET { } else if res.Opcode == gomemcached.GET ||
res.Opcode == gomemcached.SUBDOC_GET ||
res.Opcode == gomemcached.SUBDOC_MULTI_LOOKUP {
opaque := res.Opaque - opStart opaque := res.Opaque - opStart
if opaque < 0 || opaque >= uint32(len(keys)) { if opaque < 0 || opaque >= uint32(len(keys)) {
// Every now and then we seem to be seeing an invalid opaque // Every now and then we seem to be seeing an invalid opaque
...@@ -598,12 +600,6 @@ func (c *Client) GetBulk(vb uint16, keys []string, rv map[string]*gomemcached.MC ...@@ -598,12 +600,6 @@ func (c *Client) GetBulk(vb uint16, keys []string, rv map[string]*gomemcached.MC
if res.Opcode == gomemcached.NOOP { if res.Opcode == gomemcached.NOOP {
ok = false ok = false
} }
if res.Opcode == gomemcached.SUBDOC_GET || res.Opcode == gomemcached.SUBDOC_MULTI_LOOKUP {
opaque := res.Opaque - opStart
rv[keys[opaque]] = res
}
} }
} }
}() }()
......
...@@ -663,7 +663,7 @@ type cCmd interface { ...@@ -663,7 +663,7 @@ type cCmd interface {
} }
type cAuto struct { type cAuto struct {
// Note for table compaction, an empty ackC represents it's a compaction waiting command. // Note for table compaction, an non-empty ackC represents it's a compaction waiting command.
ackC chan<- error ackC chan<- error
} }
...@@ -844,7 +844,12 @@ func (db *DB) tCompaction() { ...@@ -844,7 +844,12 @@ func (db *DB) tCompaction() {
switch cmd := x.(type) { switch cmd := x.(type) {
case cAuto: case cAuto:
if cmd.ackC != nil { if cmd.ackC != nil {
waitQ = append(waitQ, x) // Check the write pause state before caching it.
if db.resumeWrite() {
x.ack(nil)
} else {
waitQ = append(waitQ, x)
}
} else { } else {
ackQ = append(ackQ, x) ackQ = append(ackQ, x)
} }
......
...@@ -158,6 +158,12 @@ type Options struct { ...@@ -158,6 +158,12 @@ type Options struct {
// The default value is 8MiB. // The default value is 8MiB.
BlockCacheCapacity int BlockCacheCapacity int
// BlockCacheEvictRemoved allows enable forced-eviction on cached block belonging
// to removed 'sorted table'.
//
// The default if false.
BlockCacheEvictRemoved bool
// BlockRestartInterval is the number of keys between restart points for // BlockRestartInterval is the number of keys between restart points for
// delta encoding of keys. // delta encoding of keys.
// //
...@@ -384,6 +390,13 @@ func (o *Options) GetBlockCacheCapacity() int { ...@@ -384,6 +390,13 @@ func (o *Options) GetBlockCacheCapacity() int {
return o.BlockCacheCapacity return o.BlockCacheCapacity
} }
func (o *Options) GetBlockCacheEvictRemoved() bool {
if o == nil {
return false
}
return o.BlockCacheEvictRemoved
}
func (o *Options) GetBlockRestartInterval() int { func (o *Options) GetBlockRestartInterval() int {
if o == nil || o.BlockRestartInterval <= 0 { if o == nil || o.BlockRestartInterval <= 0 {
return DefaultBlockRestartInterval return DefaultBlockRestartInterval
......
...@@ -290,11 +290,12 @@ func (x *tFilesSortByNum) Less(i, j int) bool { ...@@ -290,11 +290,12 @@ func (x *tFilesSortByNum) Less(i, j int) bool {
// Table operations. // Table operations.
type tOps struct { type tOps struct {
s *session s *session
noSync bool noSync bool
cache *cache.Cache evictRemoved bool
bcache *cache.Cache cache *cache.Cache
bpool *util.BufferPool bcache *cache.Cache
bpool *util.BufferPool
} }
// Creates an empty table and returns table writer. // Creates an empty table and returns table writer.
...@@ -422,7 +423,7 @@ func (t *tOps) remove(f *tFile) { ...@@ -422,7 +423,7 @@ func (t *tOps) remove(f *tFile) {
} else { } else {
t.s.logf("table@remove removed @%d", f.fd.Num) t.s.logf("table@remove removed @%d", f.fd.Num)
} }
if t.bcache != nil { if t.evictRemoved && t.bcache != nil {
t.bcache.EvictNS(uint64(f.fd.Num)) t.bcache.EvictNS(uint64(f.fd.Num))
} }
}) })
...@@ -459,11 +460,12 @@ func newTableOps(s *session) *tOps { ...@@ -459,11 +460,12 @@ func newTableOps(s *session) *tOps {
bpool = util.NewBufferPool(s.o.GetBlockSize() + 5) bpool = util.NewBufferPool(s.o.GetBlockSize() + 5)
} }
return &tOps{ return &tOps{
s: s, s: s,
noSync: s.o.GetNoSync(), noSync: s.o.GetNoSync(),
cache: cache.NewCache(cacher), evictRemoved: s.o.GetBlockCacheEvictRemoved(),
bcache: bcache, cache: cache.NewCache(cacher),
bpool: bpool, bcache: bcache,
bpool: bpool,
} }
} }
......
...@@ -21,9 +21,9 @@ github.com/casbin/casbin/util ...@@ -21,9 +21,9 @@ github.com/casbin/casbin/util
github.com/casbin/casbin/config github.com/casbin/casbin/config
# github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58 # github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58
github.com/cloudflare/golz4 github.com/cloudflare/golz4
# github.com/couchbase/go-couchbase v0.0.0-20181019154153-595f46701cbc # github.com/couchbase/go-couchbase v0.0.0-20181122212707-3e9b6e1258bb
github.com/couchbase/go-couchbase github.com/couchbase/go-couchbase
# github.com/couchbase/gomemcached v0.0.0-20180723192129-20e69a1ee160 # github.com/couchbase/gomemcached v0.0.0-20181122193126-5125a94a666c
github.com/couchbase/gomemcached github.com/couchbase/gomemcached
github.com/couchbase/gomemcached/client github.com/couchbase/gomemcached/client
# github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a # github.com/couchbase/goutils v0.0.0-20180530154633-e865a1461c8a
...@@ -35,7 +35,7 @@ github.com/cupcake/rdb/nopdecoder ...@@ -35,7 +35,7 @@ github.com/cupcake/rdb/nopdecoder
github.com/cupcake/rdb/crc64 github.com/cupcake/rdb/crc64
# github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712 # github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712
github.com/edsrzf/mmap-go github.com/edsrzf/mmap-go
# github.com/elazarl/go-bindata-assetfs v0.0.0-20180223110309-38087fe4dafb # github.com/elazarl/go-bindata-assetfs v1.0.0
github.com/elazarl/go-bindata-assetfs github.com/elazarl/go-bindata-assetfs
# github.com/go-redis/redis v6.14.2+incompatible # github.com/go-redis/redis v6.14.2+incompatible
github.com/go-redis/redis github.com/go-redis/redis
...@@ -85,7 +85,7 @@ github.com/siddontang/ledisdb/store/rocksdb ...@@ -85,7 +85,7 @@ github.com/siddontang/ledisdb/store/rocksdb
github.com/siddontang/rdb github.com/siddontang/rdb
# github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec # github.com/ssdb/gossdb v0.0.0-20180723034631-88f6b59b84ec
github.com/ssdb/gossdb/ssdb github.com/ssdb/gossdb/ssdb
# github.com/syndtr/goleveldb v0.0.0-20181105012736-f9080354173f # github.com/syndtr/goleveldb v0.0.0-20181127023241-353a9fca669c
github.com/syndtr/goleveldb/leveldb github.com/syndtr/goleveldb/leveldb
github.com/syndtr/goleveldb/leveldb/cache github.com/syndtr/goleveldb/leveldb/cache
github.com/syndtr/goleveldb/leveldb/filter github.com/syndtr/goleveldb/leveldb/filter
...@@ -100,7 +100,7 @@ github.com/syndtr/goleveldb/leveldb/memdb ...@@ -100,7 +100,7 @@ github.com/syndtr/goleveldb/leveldb/memdb
github.com/syndtr/goleveldb/leveldb/table github.com/syndtr/goleveldb/leveldb/table
# github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b # github.com/wendal/errors v0.0.0-20130201093226-f66c77a7882b
github.com/wendal/errors github.com/wendal/errors
# golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 # golang.org/x/crypto v0.0.0-20181126163421-e657309f52e7
golang.org/x/crypto/acme/autocert golang.org/x/crypto/acme/autocert
golang.org/x/crypto/acme golang.org/x/crypto/acme
golang.org/x/crypto/pbkdf2 golang.org/x/crypto/pbkdf2
......
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