Giter VIP home page Giter VIP logo

codis's People

Contributors

anywhy avatar apache9 avatar c4pt0r avatar ccl0326 avatar ceshihao avatar coocood avatar elvuel avatar fancy-rabbit avatar foxmailed avatar gitter-badger avatar haraldnordgren avatar huangdongxu avatar kmiku7 avatar learninto avatar left2right avatar lfaoro avatar masterlvng avatar maxgalbu avatar mrhein avatar ngaut avatar niubell avatar petrie avatar spinlock avatar tangcong avatar tiancaiamao avatar tobegit3hub avatar yangzhe1991 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codis's Issues

Auto Rebalance操作时,无效果

使用生产数据压力测试时的四组Redis实例内存占用分别为,227MB,498MB,163MB,99MB 但在web界面按了Auto Rebalance 按钮后,并没有实现按照内存占用的大小来均衡。不知道是什么原因,因为之前简单测试时是可以实现的。

warning when slot initing

I got continuous warning when slot initializing .
action.go:95: [warning] abnormal waiting time for receivers zk/codis/db_cluster_0/actions/action_0000009102

My script is below:

echo "start zookeeper"
$zookeeper_path/zkServer.sh start
echo "sleep 10s"
sleep 10
echo "done"

echo "slots initializing..."
$codis_path/bin/codis-config -c $conf_path/config_1.ini slot init
echo "done"

Can LedisDB use codis as its cluster solution

Hi

I try to use codis for the ledisdb cluster solution. I see your source that you add some slot commands in redis source, can I use codis directly if I can implement these slot commands in LedisDB, do I need do more?

Thanks.

[fatal] zk: node does not exist

http://192.168.13.202:18087/admin/ 可以正常访问
但是proxy启动起来以后,果断时间就自己关闭了
zk也可以正常访问,这个是什么原因呢?
proxy.log日志

2014/12/03 17:28:30 router.go:544: [warning] proxy_1 wait to be online
2014/12/03 17:28:34 router.go:544: [warning] proxy_1 wait to be online
2014/12/03 17:28:37 router.go:544: [warning] proxy_1 wait to be online
2014/12/03 17:28:40 router.go:544: [warning] proxy_1 wait to be online
2014/12/03 17:28:43 router.go:534: [info] we are online proxy_1
2014/12/03 17:28:43 router.go:86: [info] fill slot 0, force false
2014/12/03 17:28:43 router.go:92: [fatal] zk: node does not exist
github.com/wandoulabs/codis/pkg/models/server_group.go:294:
github.com/wandoulabs/codis/pkg/models/server_group.go:85:
github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:55:

why not using different db but db 0 + hash_slots

codis only support db 0 and saves the slot keys in a hash slot, why not using different db? e.g, if the slot for a key is 100, we can use db 100 to store it, and we can use dbsize to get the key num in a slot. is it more simpler and easier?

Maybe the problem is that codis must use select first which may hit a little performance, but I think it is acceptable.

change language category of this project

https://github.com/github/linguist

github is using the above code to detect the language category of projects. the detection code has the ability to ignore vendor files:

Ignore vendored files

Checking other code into your git repo is a common practice. But this often inflates your project's language stats and may even cause your project to be labeled as another language. We are able to identify some of these files and directories and exclude them.

https://github.com/github/linguist/blob/master/lib/linguist/vendor.yml

redis-port error: dbnum must be 0, but got 1

When I use redis-port to restore rdb file to codis, an err happened:
"2014/11/27 11:27:49 [panic]: dbnum must be 0, but got 1"

Does redis-port accept rdf file if it consists of keys from different dbs?

About promote and manual failover in codis

  1. There is an issue in promotion. Assume I have node1 and node2 in group1, node1 is master, node2 is slave. When I do promotion (through dashboard or command or rest api) for node2, node2's type becomes to master, but node1's type becomes to offline. I think node1's type should be slave, what happens?
  2. How to do manual failover?
    Still Assume node1 and node2 in group1, node1 is master, node2 is slave. Now node1 is down.
    Currently my manual failover solution is:
    1. In begging, I set "slaveof node1's host and port" in node2's redis config file
    2. Then I notice node1 is down. I do promotion for node2, node2 becomes master and node1 becomes offline. From client side, the redis proxy still work well.
    3. Fix node1's issue. Fixing issue costs some time and new data will write to node2 during this period. After that, I set "slaveof node2's host and port" in node1's redis config, then start node1's server.
    4. Node1 is up again, then it will cost some time to get replication from node2 to catch up data, and it will work as slave now.

This process is tricky. And I am not sure whether it has some potential problems. How do wandoujia do failover with codis?

related questions:
#11

cc: ../deps/lua/src/liblua.a:没有那个文件或目录

When i run bootstrap.sh, come across error like this

downloading dependcies, it may take a few minutes...
go build -o bin/codis-proxy ./cmd/proxy
go build -o bin/codis-config ./cmd/cconfig
make -j4 -C extern/redis-2.8.13/
make[1]: Entering directory `/opt/down/codis/extern/redis-2.8.13'
cd src && make all
make[2]: Entering directory `/opt/down/codis/extern/redis-2.8.13/src'
    LINK redis-server
cc: ../deps/lua/src/liblua.a:没有那个文件或目录
make[2]: *** [redis-server] 错误 1
make[2]: Leaving directory `/opt/down/codis/extern/redis-2.8.13/src'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/opt/down/codis/extern/redis-2.8.13'
make: *** [build-server] 错误 2

go get 失败

go get github.com/wandoulabs/codis
提示 can't load package: package github.com/wandoulabs/codis: no buildable Go source xxxx

加上-u参数依然

dns/connection errors reported when migrating slots

codis-version: 1.5

stack trace:

2014/12/24 18:51:07 migrate_task.go:118: [error] ERR Can't connect to target node: Name or service not known
2014/12/24 18:51:07 slot.go:197: [warning] ERR Can't connect to target node: Name or service not known
2014/12/24 18:51:07 main.go:237: [fatal] ERR Can't connect to target node: Name or service not known
github.com/wandoulabs/codis/cmd/cconfig/slot.go:198:

Errors happens after every three or four slots migrated.

All redis nodes host names have been put in /etc/hosts, so it should not be the problem of dns. Redis nodes are connected and available for service online.

zookeeper works normally with only a single master node, and the proxy is working without any load. All slots are empty, but errors happens with keys in slots as well.

哪个分支是稳定的?

如题,
master, 1.4, 1.5, bugfix, bug_fix 这么多分支, 哪个可以放到生产环境中??

麻烦加一个releases 的包出来.

crash when run codis-config, codis-proxy in docker

docker环境:ubuntu:14.04
codis-proxy.dump:

wait to be online proxy_1
good, we are on line proxy_1
runtime/cgo: pthread_create failed: Resource temporarily unavailable
SIGABRT: abort
PC=0x7fa0fcd98bb9

goroutine 1 [IO wait]:
net.runtime_pollWait(0x7fa0fd5316b8, 0x72, 0x0)
/usr/lib/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(_pollDesc).Wait(0xc2119051b0, 0x72, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:81 +0x34
net.(_pollDesc).WaitRead(0xc2119051b0, 0xb, 0x7fa0fd5300e8)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:86 +0x30
net.(_netFD).accept(0xc211905150, 0x8419d0, 0x0, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_unix.go:382 +0x2c2
net.(_TCPListener).AcceptTCP(0xc2118fc428, 0x4777d6, 0x7fa0fd390cf0, 0x4777d6)
/usr/lib/go/src/pkg/net/tcpsock_posix.go:233 +0x47
net.(_TCPListener).Accept(0xc2118fc428, 0x7fa0fd531ca0, 0xc212793280, 0x0, 0x0)
/usr/lib/go/src/pkg/net/tcpsock_posix.go:243 +0x27
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run(0xc21012b000)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:345 +0x234
main.main()
/opt/codis/cmd/proxy/main.go:112 +0xb35

goroutine 5 [IO wait]:
net.runtime_pollWait(0x7fa0fd5318b0, 0x72, 0x0)
/usr/lib/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(_pollDesc).Wait(0xc210100060, 0x72, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:81 +0x34
net.(_pollDesc).WaitRead(0xc210100060, 0xb, 0x7fa0fd5300e8)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:86 +0x30
net.(_netFD).accept(0xc210100000, 0x8419d0, 0x0, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_unix.go:382 +0x2c2
net.(_TCPListener).AcceptTCP(0xc2100bf040, 0x44f90b, 0x7fa0fd3ace78, 0x44f90b)
/usr/lib/go/src/pkg/net/tcpsock_posix.go:233 +0x47
net.(_TCPListener).Accept(0xc2100bf040, 0x7fa0fd531ca0, 0xc2100b9140, 0xc21157d300, 0x0)
/usr/lib/go/src/pkg/net/tcpsock_posix.go:243 +0x27
net/http.(_Server).Serve(0xc2101070f0, 0x7fa0fd530910, 0xc2100bf040, 0x0, 0x0)
/usr/lib/go/src/pkg/net/http/server.go:1622 +0x91
net/http.(*Server).ListenAndServe(0xc2101070f0, 0xc2101070f0, 0x559570)
/usr/lib/go/src/pkg/net/http/server.go:1612 +0xa0
net/http.ListenAndServe(0x7fff5066ff2c, 0xd, 0x0, 0x0, 0x1b, ...)
/usr/lib/go/src/pkg/net/http/server.go:1677 +0x6d
created by main.main
/opt/codis/cmd/proxy/main.go:105 +0x903

goroutine 6 [semacquire]:
sync.runtime_Semacquire(0xc2100bf070)
/usr/lib/go/src/pkg/runtime/sema.goc:199 +0x30
sync.(_WaitGroup).Wait(0xc210145000)
/usr/lib/go/src/pkg/sync/waitgroup.go:127 +0x14b
github.com/ngaut/go-zookeeper/zk.(_Conn).loop(0xc2100391a0)
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:227 +0x597
github.com/ngaut/go-zookeeper/zk.func·001()
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:145 +0x2b
created by github.com/ngaut/go-zookeeper/zk.ConnectWithDialer
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:149 +0x386

goroutine 76 [finalizer wait]:
runtime.park(0x40cf30, 0xb70148, 0xb6c548)
/usr/lib/go/src/pkg/runtime/proc.c:1342 +0x66
runfinq()
/usr/lib/go/src/pkg/runtime/mgc0.c:2279 +0x84
runtime.goexit()
/usr/lib/go/src/pkg/runtime/proc.c:1394

goroutine 9 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 10 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 11 [runnable]:
github.com/garyburd/redigo/redis.(_conn).writeBytes(0xc211ca6be0, 0xc2127c2065, 0x26, 0x51, 0x26, ...)
/gocode/src/github.com/garyburd/redigo/redis/conn.go:144
github.com/garyburd/redigo/redis.(_conn).writeCommand(0xc211ca6be0, 0x7936a0, 0x4, 0xc2127e2030, 0x1, ...)
/gocode/src/github.com/garyburd/redigo/redis/conn.go:170 +0x370
github.com/garyburd/redigo/redis.(_conn).Do(0xc211ca6be0, 0x7936a0, 0x4, 0xc2127e2030, 0x1, ...)
/gocode/src/github.com/garyburd/redigo/redis/conn.go:393 +0x199
github.com/garyburd/redigo/redis.(_pooledConnection).Do(0xc21278c5e0, 0x7936a0, 0x4, 0xc2127e2030, 0x1, ...)
/gocode/src/github.com/garyburd/redigo/redis/pool.go:365 +0xce
github.com/wandoulabs/codis/pkg/proxy/router.(_MultiOperator).mgetResults(0xc210102a50, 0xc2127a2600, 0x0, 0x0, 0x0, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:83 +0x259
github.com/wandoulabs/codis/pkg/proxy/router.(_MultiOperator).mget(0xc210102a50, 0xc2127a2600)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:109 +0x94
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:69 +0x11e
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 12 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 13 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 14 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 15 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 16 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 17 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 18 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 19 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 20 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 21 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 22 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 23 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 24 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 25 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 26 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 27 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 28 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 29 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 30 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 31 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 32 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 33 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 34 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 35 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 36 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 37 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 38 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 39 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 40 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 41 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 42 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 43 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 44 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 45 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 46 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 47 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 48 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 49 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 50 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 51 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 52 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 53 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 54 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 55 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 56 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 57 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 58 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 59 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 60 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 61 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 62 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 63 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 64 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 65 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 66 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 67 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 68 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 69 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 70 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 71 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 72 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*MultiOperator).work(0xc210102a50)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:66 +0x3d
created by github.com/wandoulabs/codis/pkg/proxy/router.NewMultiOperator
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/multioperator.go:31 +0xc1

goroutine 73 [syscall]:
runtime.goexit()
/usr/lib/go/src/pkg/runtime/proc.c:1394

goroutine 74 [runnable]:
reflect.Value.NumField(0x725be0, 0xc2127a5200, 0x196, 0x0)
/usr/lib/go/src/pkg/reflect/value.go:1212
github.com/ngaut/go-zookeeper/zk.encodePacketValue(0xc210148004, 0x9ffffc, 0x9ffffc, 0x725be0, 0xc2127a5200, ...)
/gocode/src/github.com/ngaut/go-zookeeper/zk/structs.go:530 +0xc8b
github.com/ngaut/go-zookeeper/zk.encodePacket(0xc210148004, 0x9ffffc, 0x9ffffc, 0x676c00, 0xc2127a5200, ...)
/gocode/src/github.com/ngaut/go-zookeeper/zk/structs.go:511 +0x151
github.com/ngaut/go-zookeeper/zk.(_Conn).sendLoop(0xc2100391a0, 0x7fa0fd531ca0, 0xc2100bfaa8, 0xc210144000, 0x0, ...)
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:451 +0x7fd
github.com/ngaut/go-zookeeper/zk.func·002()
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:212 +0x59
created by github.com/ngaut/go-zookeeper/zk.(_Conn).loop
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:215 +0x528

goroutine 75 [runnable]:
github.com/ngaut/go-zookeeper/zk.decodePacketValue(0xc210b53000, 0x10, 0xa00000, 0x692d40, 0xc212782900, ...)
/gocode/src/github.com/ngaut/go-zookeeper/zk/structs.go:423
github.com/ngaut/go-zookeeper/zk.decodePacketValue(0xc210b53000, 0x10, 0xa00000, 0x732e60, 0xc212782900, ...)
/gocode/src/github.com/ngaut/go-zookeeper/zk/structs.go:446 +0xd9e
github.com/ngaut/go-zookeeper/zk.decodePacket(0xc210b53000, 0x10, 0xa00000, 0x676c80, 0xc212782900, ...)
/gocode/src/github.com/ngaut/go-zookeeper/zk/structs.go:420 +0x151
github.com/ngaut/go-zookeeper/zk.(_Conn).recvLoop(0xc2100391a0, 0x7fa0fd531ca0, 0xc2100bfaa8, 0x0, 0x0)
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:493 +0x3f8
github.com/ngaut/go-zookeeper/zk.func·003()
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:219 +0x5e
created by github.com/ngaut/go-zookeeper/zk.(_Conn).loop
/gocode/src/github.com/ngaut/go-zookeeper/zk/conn.go:225 +0x587

goroutine 77 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router/topology.(_Topology).doWatch(0xc210051cc0, 0xc210b4a080, 0xc2100ce800)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:131 +0x3b
created by github.com/wandoulabs/codis/pkg/proxy/router/topology.(_Topology).WatchNode
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:165 +0xfa

goroutine 92 [runnable]:
github.com/ngaut/gostats.(_Counters).Add(0xc210102a20, 0x795880, 0x3, 0x1)
/gocode/src/github.com/ngaut/gostats/counters.go:41 +0xa6
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc21157b300, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:222 +0x42e
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc211c20290)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 79 [IO wait]:
net.runtime_pollWait(0x7fa0fd531760, 0x72, 0x0)
/usr/lib/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(_pollDesc).Wait(0xc211576c30, 0x72, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:81 +0x34
net.(_pollDesc).WaitRead(0xc211576c30, 0xb, 0x7fa0fd5300e8)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:86 +0x30
net.(_netFD).Read(0xc211576bd0, 0xc211599000, 0x1000, 0x1000, 0x0, ...)
/usr/lib/go/src/pkg/net/fd_unix.go:204 +0x2a0
net.(_conn).Read(0xc2100b9140, 0xc211599000, 0x1000, 0x1000, 0x72fdc0, ...)
/usr/lib/go/src/pkg/net/net.go:122 +0xc5
net/http.(_liveSwitchReader).Read(0xc21157d328, 0xc211599000, 0x1000, 0x1000, 0x7fa0f9190ab8, ...)
/usr/lib/go/src/pkg/net/http/server.go:204 +0xa5
io.(_LimitedReader).Read(0xc2115935e0, 0xc211599000, 0x1000, 0x1000, 0x101, ...)
/usr/lib/go/src/pkg/io/io.go:398 +0xbb
bufio.(_Reader).fill(0xc211582720)
/usr/lib/go/src/pkg/bufio/bufio.go:91 +0x110
bufio.(_Reader).ReadSlice(0xc211582720, 0xc20000000a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:274 +0x204
bufio.(_Reader).ReadLine(0xc211582720, 0x0, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:305 +0x63
net/textproto.(_Reader).readLineSlice(0xc211597390, 0x7fa0fd527000, 0x683f80, 0x4211a3, 0x4227b2, ...)
/usr/lib/go/src/pkg/net/textproto/reader.go:55 +0x61
net/textproto.(_Reader).ReadLine(0xc211597390, 0xc2126f1750, 0x0, 0xc21159a000, 0x0)
/usr/lib/go/src/pkg/net/textproto/reader.go:36 +0x27
net/http.ReadRequest(0xc211582720, 0xc2126f1750, 0x0, 0x0)
/usr/lib/go/src/pkg/net/http/request.go:526 +0x88
net/http.(_conn).readRequest(0xc21157d300, 0x0, 0x0, 0x0)
/usr/lib/go/src/pkg/net/http/server.go:575 +0x1bb
net/http.(_conn).serve(0xc21157d300)
/usr/lib/go/src/pkg/net/http/server.go:1123 +0x3b4
created by net/http.(_Server).Serve
/usr/lib/go/src/pkg/net/http/server.go:1644 +0x28b

goroutine 80 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(*Server).handleTopoEvent(0xc21012b000)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:510 +0x5e
created by github.com/wandoulabs/codis/pkg/proxy/router.NewServer
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:609 +0xa33

goroutine 90 [runnable]:
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc211598200, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:252 +0x6db
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc211c20080)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(*Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 86 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router/topology.(_Topology).doWatch(0xc210051cc0, 0xc211909780, 0xc2100ce800)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:131 +0x3b
created by github.com/wandoulabs/codis/pkg/proxy/router/topology.(_Topology).WatchChildren
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:155 +0xfa

goroutine 101 [runnable]:
github.com/wandoulabs/codis/pkg/proxy/parser.(_Resp).Bytes(0xc212794580, 0x11c20428, 0x40c27a, 0x700920, 0x761140, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:335 +0xea
github.com/wandoulabs/codis/pkg/proxy/router.write2Redis(0xc212794580, 0x7fa0f9146b48, 0xc2118b69e0, 0x7fa0f9146b48, 0xc2118b69e0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/helper.go:144 +0x27
github.com/wandoulabs/codis/pkg/proxy/router.forward(0x7fa0f9146a60, 0xc212794c00, 0x7fa0f9146b00, 0xc2118b69e0, 0xc212794580, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/helper.go:169 +0x1c7
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc212794c00, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:264 +0x907
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc2127a30e0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 96 [IO wait]:
net.runtime_pollWait(0x7fa0f914a748, 0x72, 0x0)
/usr/lib/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(_pollDesc).Wait(0xc211c0e300, 0x72, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:81 +0x34
net.(_pollDesc).WaitRead(0xc211c0e300, 0xb, 0x7fa0fd5300e8)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:86 +0x30
net.(_netFD).Read(0xc211c0e2a0, 0xc211be9000, 0x1000, 0x1000, 0x0, ...)
/usr/lib/go/src/pkg/net/fd_unix.go:204 +0x2a0
net.(_conn).Read(0xc2118bfbd0, 0xc211be9000, 0x1000, 0x1000, 0xc212115000, ...)
/usr/lib/go/src/pkg/net/net.go:122 +0xc5
bufio.(_Reader).fill(0xc2118fe360)
/usr/lib/go/src/pkg/bufio/bufio.go:91 +0x110
bufio.(_Reader).ReadSlice(0xc2118fe360, 0xc20fd9660a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:274 +0x204
bufio.(_Reader).ReadBytes(0xc2118fe360, 0x10000c21155f00a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:355 +0xbf
github.com/wandoulabs/codis/pkg/proxy/parser.readLine(0xc2118fe360, 0xc21010ad50, 0x77fa60, 0x40626c, 0x683e60, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:104 +0x37
github.com/wandoulabs/codis/pkg/proxy/parser.Parse(0xc2118fe360, 0xc2126949d0, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:169 +0x35
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc211cda0c0, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:197 +0x75
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc2118bfbd0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 97 [chan receive]:
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).filter(0xc21012b000, 0xc2127a1d18, 0x4, 0xc212712800, 0x14, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:189 +0x515
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc211c87580, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:216 +0x36c
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc211c7e798)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 98 [IO wait]:
net.runtime_pollWait(0x7fa0f914a550, 0x72, 0x0)
/usr/lib/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(_pollDesc).Wait(0xc21194ad10, 0x72, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:81 +0x34
net.(_pollDesc).WaitRead(0xc21194ad10, 0xb, 0x7fa0fd5300e8)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:86 +0x30
net.(_netFD).Read(0xc21194acb0, 0xc211bbc000, 0x1000, 0x1000, 0x0, ...)
/usr/lib/go/src/pkg/net/fd_unix.go:204 +0x2a0
net.(_conn).Read(0xc211c855d8, 0xc211bbc000, 0x1000, 0x1000, 0x5, ...)
/usr/lib/go/src/pkg/net/net.go:122 +0xc5
bufio.(_Reader).fill(0xc211ca73c0)
/usr/lib/go/src/pkg/bufio/bufio.go:91 +0x110
bufio.(_Reader).ReadSlice(0xc211ca73c0, 0xc20fd9ab0a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:274 +0x204
bufio.(_Reader).ReadBytes(0xc211ca73c0, 0x10000c21155f00a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:355 +0xbf
github.com/wandoulabs/codis/pkg/proxy/parser.readLine(0xc211ca73c0, 0xc21010ad50, 0x77fa60, 0x40626c, 0x683e60, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:104 +0x37
github.com/wandoulabs/codis/pkg/proxy/parser.Parse(0xc211ca73c0, 0xc2125ba418, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:169 +0x35
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc211ba7380, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:197 +0x75
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc211c855d8)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 99 [IO wait]:
net.runtime_pollWait(0x7fa0f914a4a8, 0x72, 0x0)
/usr/lib/go/src/pkg/runtime/netpoll.goc:116 +0x6a
net.(_pollDesc).Wait(0xc21194a6f0, 0x72, 0x7fa0fd5300e8, 0xb)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:81 +0x34
net.(_pollDesc).WaitRead(0xc21194a6f0, 0xb, 0x7fa0fd5300e8)
/usr/lib/go/src/pkg/net/fd_poll_runtime.go:86 +0x30
net.(_netFD).Read(0xc21194a690, 0xc2125b1000, 0x1000, 0x1000, 0x0, ...)
/usr/lib/go/src/pkg/net/fd_unix.go:204 +0x2a0
net.(_conn).Read(0xc2125a3fa8, 0xc2125b1000, 0x1000, 0x1000, 0xc211ebd000, ...)
/usr/lib/go/src/pkg/net/net.go:122 +0xc5
bufio.(_Reader).fill(0xc21159f360)
/usr/lib/go/src/pkg/bufio/bufio.go:91 +0x110
bufio.(_Reader).ReadSlice(0xc21159f360, 0xc20fd8720a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:274 +0x204
bufio.(_Reader).ReadBytes(0xc21159f360, 0x10000c21155f00a, 0x0, 0x0, 0x0, ...)
/usr/lib/go/src/pkg/bufio/bufio.go:355 +0xbf
github.com/wandoulabs/codis/pkg/proxy/parser.readLine(0xc21159f360, 0xc21010ad50, 0x77fa60, 0x40626c, 0x683e60, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:104 +0x37
github.com/wandoulabs/codis/pkg/proxy/parser.Parse(0xc21159f360, 0xc212785a68, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:169 +0x35
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc2125aaf40, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:197 +0x75
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc2125a3fa8)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 103 [semacquire]:
sync.runtime_Semacquire(0xc210102a24)
/usr/lib/go/src/pkg/runtime/sema.goc:199 +0x30
sync.(_Mutex).Lock(0xc210102a20)
/usr/lib/go/src/pkg/sync/mutex.go:66 +0xd6
github.com/ngaut/gostats.(_Counters).Add(0xc210102a20, 0x795880, 0x3, 0x1)
/gocode/src/github.com/ngaut/gostats/counters.go:40 +0x32
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc2127a6c40, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:222 +0x42e
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc2127931a8)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(*Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 104 [runnable]:
github.com/wandoulabs/codis/pkg/proxy/parser.(_Resp).Bytes(0xc2127e1000, 0x118fc8d0, 0x40c27a, 0x700920, 0x761140, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:335 +0xea
github.com/wandoulabs/codis/pkg/proxy/router.write2Redis(0xc2127e1000, 0x7fa0f9146b48, 0xc211883560, 0x7fa0f9146b48, 0xc211883560)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/helper.go:144 +0x27
github.com/wandoulabs/codis/pkg/proxy/router.forward(0x7fa0f9146a60, 0xc212790b80, 0x7fa0f9146b00, 0xc211883560, 0xc2127e1000, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/helper.go:169 +0x1c7
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc212790b80, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:264 +0x907
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc2127931c8)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

goroutine 105 [runnable]:
github.com/wandoulabs/codis/pkg/proxy/parser.defaultGetKeys(0xc21278f180, 0xc21001ec00, 0xc2127a3ef0, 0x4, 0x84e200, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:149
github.com/wandoulabs/codis/pkg/proxy/parser.(_Resp).GetOpKeys(0xc21278f180, 0xc2126b7344, 0x4, 0xc, 0x0, ...)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:139 +0x336
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).redisTunnel(0xc21012b000, 0xc212790900, 0x0, 0x0)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:202 +0xd1
github.com/wandoulabs/codis/pkg/proxy/router.(_Server).handleConn(0xc21012b000, 0x7fa0fd531ca0, 0xc212793280)
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:300 +0x2c4
created by github.com/wandoulabs/codis/pkg/proxy/router.(_Server).Run
/gocode/src/github.com/wandoulabs/codis/pkg/proxy/router/router.go:350 +0x336

rax 0x0
rbx 0xb
rcx 0xffffffffffffffff
rdx 0x6
rdi 0x45
rsi 0x67
rbp 0x7fa0f88ccbb0
rsp 0x7fa0f88cc9e8
r8 0x7fa0f88cd700
r9 0x616e7520796c6972
r10 0x8
r11 0x202
r12 0x7fa0d40008c0
r13 0x0
r14 0x73c
r15 0x10
rip 0x7fa0fcd98bb9
rflags 0x202
cs 0x33
fs 0x0
gs 0x0

关于HA的问题

昨天测试了一下codis,我添加了多个group,每个group中都有master和slave,当我把某个group中的master杀掉之后,slave是不会自动切换成master的,并且连接到proxy的client会有一部分请求失败。我想请问一下你们在实际应用中是怎样做到高可用的。

about code change in migrate command of redis source code

Hi, we want to use codis to replace redis, so we need to understand your code change in original redis source code.
In migrate.c, you do a slight change on migrateCommand function:

  1. Enable tcp no delay on socket. (This socket is used to connect with migration's destination server node.)
  2. Set the default timeout value of syncRead and syncWrite from 1 millisecond to 1000 milliseconds. (If timeout value is set in migrate command, ignored this default value)

What's the purpose of these 2 change?

pipeline support?

codis兼容Twemproxy,但Twemproxy自带脚本pipelined_write.sh和pipelined_read.sh,前者如图
image
Twemproxy虽然不支持python包redis-py的pipeline方法,但可以用这种方式实现pipeline。但这个脚本连codis proxy的话就没法运行,报socat[14792] E write(3, 0x8f8c00, 16384): Connection reset by peer 错误。是不是因为twemproxy与每个redis服务器都会建立一个连接,每个连接实现了两个FIFO的队列,通 过这两个队列实现对redis的pipeline访问,而codis没实现这种连接队列?

redo range-set is a dangerous operation if system is running

Codis dashboard provide button for changing range-set even if the system is running, but it won't lead to slot migration automatically. So after slot range-set changed, some key may lost from the client view, because the proxy route the request to a different server group. In fact, if we want to add server group dynamically, using "Migrate slot(s)" button is the only right way.
I want to say that the “Slot Control” button on the dashboard may lead to wrong operation.
Is my understanding correct?

install error

In file included from adlist.c:34:
zmalloc.h:51:29: error: operator '==' has no left operand
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[2]: *** [adlist.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from ae.c:44:
zmalloc.h:51:29: error: operator '==' has no left operand
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
In file included from dict.c:47:
zmalloc.h:51:29: error: operator '==' has no left operand
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[2]: *** [ae.o] Error 1
make[2]: *** [dict.o] Error 1
In file included from redis.h:60,
from redis.c:30:
zmalloc.h:51:29: error: operator '==' has no left operand
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[2]: *** [redis.o] Error 1
make[2]: Leaving directory /home/codis/src/github.com/wandoulabs/codis/extern/redis-2.8.13/src' make[1]: *** [all] Error 2 make[1]: Leaving directory/home/codis/src/github.com/wandoulabs/codis/extern/redis-2.8.13'
make: *** [build-server] Error 2

does codis support auto failover?

hi,
if the master instance down, does codis support auto failover, or it just set a master-slave mode, if the master down ,wo need manual switch the slave as master?

redis-port导入数据报错

之前的redis-server的版本是2.8.12,想用用redis-port从里面导数据到codis里。会报错:

./extern/redis-port/redis-port sync -f 127.0.0.1:6379 -t codis:20001 -n 1
2015/01/07 12:12:25 [ncpu=1] sync from '127.0.0.1:6379' to codis:20001'
2015/01/07 12:12:25 [panic]: parse rdb checksum error = 'checksum validation failed'
******/lib/go/deps/src/github.com/wandoulabs/codis/extern/redis-port/cmd/worker.go:67
github.com/wandoulabs/codis/extern/redis-port/cmd.func·018

SET性能测试的问题

我在单机上(32G内存,8核)测了4种情况,起了3进程并发SET,每个set 200W个key,proxy启动方式参照sample,nohup $codis_path/bin/codis-proxy -c config.ini -L ./log/proxy.log --cpu=4 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 --log-level=error &,两个proxy的时候这3个进程1个连第一个proxy,两个连第二个。
结果如下,数字表示3个进程SET用时的平均:
image
为什么差这么多,而且两个proxy性能比单个proxy没任何提升?
本人小白,帮指点下问题可能在哪里,谢谢。

godep support?

codis depends some 3rd go packages, maybe using godep or other is better than go get -u directly in bootstrap.sh. :-)

router.go:92: [fatal] github.com/wandoulabs/codis/pkg/models/server_group.go:92: group 0 not found github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:55:

no group 0 in zk, but start proxy, it throws out the error:

router.go:92: [fatal] github.com/wandoulabs/codis/pkg/models/server_group.go:92: group 0 not found github.com/wandoulabs/codis/pkg/proxy/router/topology/topology.go:55: 

zk details:

[zk: localhost:2181(CONNECTED) 43] ls  /zk/codis/db_test/servers 
[group_1, group_3, group_2]
[zk: localhost:2181(CONNECTED) 44] 

screenshot from 2014-12-25 12 01 18

redis-port “EOF” error

在使用redis-port导入的时候,出现EOF错我

2015/01/16 13:30:01 [panic]: restore command error = 'EOF'
/home/rlyu/go/src/github.com/wandoulabs/codis/ext/redis-port/cmd/utils.go:125
github.com/wandoulabs/codis/ext/redis-port/cmd.restoreRdbEntry
/home/rlyu/go/src/github.com/wandoulabs/codis/ext/redis-port/cmd/sync.go:68
github.com/wandoulabs/codis/ext/redis-port/cmd.func路014

在proxy代理中出现了以下日志:

2015/01/16 17:25:58 router.go:248: [warning] op: SLOTSRESTORE, key:user:1:18386112980, on: 192.168.85.39:6379, too long 3 seconds, client: 127.0.0.1:39604
2015/01/16 17:53:29 router.go:248: [warning] op: SLOTSRESTORE, key:OriginalActivityAndActivityID, on: 192.168.85.224:6379, too long 6 seconds, client: 127.0.0.1:39609
2015/01/16 17:53:29 router.go:287: [warning] close connection 127.0.0.1:39609, &{r:0xc209b0e0c0 w: Conn:0xc20d426028 CreateAt:2015-01-16 17:08:23.505097375 +0800 CST Ops:2085513}, read tcp 192.168.85.224:6379: i/o timeout
github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:106:
github.com/wandoulabs/codis/pkg/proxy/parser/parser.go:171:
github.com/wandoulabs/codis/pkg/proxy/router/helper.go:130:
github.com/wandoulabs/codis/pkg/proxy/router/router.go:269:
2015/01/16 17:53:29 router.go:248: [warning] op: SLOTSRESTORE, key:UserAndActivityID_17148766, on: 192.168.85.224:6379, too long 5 seconds, client: 127.0.0.1:39606
2015/01/16 17:53:29 router.go:248: [warning] op: SLOTSRESTORE, key:user:1:13468340700, on: 192.168.85.224:6379, too long 5 seconds, client: 127.0.0.1:39601
2015/01/16 17:53:29 router.go:287: [warning] close connection 127.0.0.1:39606, &{r:0xc209afa0c0 w: Conn:0xc20cf0e168 CreateAt:2015-01-16 17:08:23.504010017 +0800 CST Ops:2084977}, read tcp 192.168.85.224:6379: i/o timeout

我们的原有的redis里面可能存在大value,这个应该怎么设置才能保证能迁移过来呢。

Typo error of tutorial and a minor log path bug

  • In both en and cn tutorial workflow section, the master and slave redis server should be different.
    $ ./codis-config server add 2 localhost:6479 master
    $ ./codis-config server add 2 localhost:6479 slave
  • this line: https://github.com/wandoulabs/codis/blob/master/cmd/proxy/main.go#L97
    for example if we run ../bin/codis-proxy -c config.ini -L ./log/proxy.log --cpu=8 --addr=0.0.0.0:19000 --http-addr=0.0.0.0:11000 in working dir /codis/bin, the crash dump file will be /codis/bin.dump. If the working dir is /codis, /codis.dump: permission denied will be raised.

./bootstrap.sh error, your help is desired!!

go build -o bin/cconfig ./cmd/cconfig
cmd/cconfig/main.go:16:2: cannot find package "github.com/c4pt0r/cfg" in any of:
/usr/local/go/src/github.com/c4pt0r/cfg (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard.go:15:2: cannot find package "github.com/codegangsta/martini-contrib/binding" in any of:
/usr/local/go/src/github.com/codegangsta/martini-contrib/binding (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard.go:16:2: cannot find package "github.com/codegangsta/martini-contrib/render" in any of:
/usr/local/go/src/github.com/codegangsta/martini-contrib/render (from $GOROOT)
($GOPATH not set)
cmd/cconfig/action.go:10:2: cannot find package "github.com/docopt/docopt-go" in any of:
/usr/local/go/src/github.com/docopt/docopt-go (from $GOROOT)
($GOPATH not set)
cmd/cconfig/migrate_helper.go:13:2: cannot find package "github.com/garyburd/redigo/redis" in any of:
/usr/local/go/src/github.com/garyburd/redigo/redis (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard.go:18:2: cannot find package "github.com/go-martini/martini" in any of:
/usr/local/go/src/github.com/go-martini/martini (from $GOROOT)
($GOPATH not set)
cmd/cconfig/action.go:7:2: cannot find package "github.com/juju/errors" in any of:
/usr/local/go/src/github.com/juju/errors (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard.go:19:2: cannot find package "github.com/martini-contrib/cors" in any of:
/usr/local/go/src/github.com/martini-contrib/cors (from $GOROOT)
($GOPATH not set)
cmd/cconfig/action.go:11:2: cannot find package "github.com/ngaut/logging" in any of:
/usr/local/go/src/github.com/ngaut/logging (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard.go:8:2: cannot find package "github.com/ngaut/zkhelper" in any of:
/usr/local/go/src/github.com/ngaut/zkhelper (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard_apis.go:13:2: cannot find package "github.com/nu7hatch/gouuid" in any of:
/usr/local/go/src/github.com/nu7hatch/gouuid (from $GOROOT)
($GOPATH not set)
cmd/cconfig/action.go:8:2: cannot find package "github.com/wandoulabs/codis/pkg/models" in any of:
/usr/local/go/src/github.com/wandoulabs/codis/pkg/models (from $GOROOT)
($GOPATH not set)
cmd/cconfig/dashboard_apis.go:10:2: cannot find package "github.com/wandoulabs/codis/pkg/utils" in any of:
/usr/local/go/src/github.com/wandoulabs/codis/pkg/utils (from $GOROOT)
($GOPATH not set)
make: *** [build] Error 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.