David Fu
bb6761fe83
Make cluster client get updated nodes' addrs
...
During loading state, if all the nodes can't be connected, it's
possible that all the nodes' IP addresses have changed at the same
time. Clear the clusterAddrs so that the cluster client has chance
to get updated nodes' IP addresses by using the initial setting of
cluster addresses.
2020-06-15 15:24:18 +08:00
Vladimir Mihailenco
736fa28659
Cleanup
2020-06-10 15:04:12 +03:00
Vladimir Mihailenco
ef82e3705c
Add OnConnect context
2020-06-10 10:36:22 +03:00
Vladimir Mihailenco
4440575966
Merge branch 'v8'
2020-05-21 10:16:44 +03:00
Vladimir Mihailenco
f8e2e89878
Add ClusterOptions.NewClient hook
...
Replaces https://github.com/go-redis/redis/pull/1316
2020-05-21 09:34:55 +03:00
Vladimir Mihailenco
2960952204
Merge pull request #1316 from YiweiZhuang/yzhuang/add_limiter_in_cluster_client
...
allow cluster client to use limiter
2020-05-21 09:12:59 +03:00
filipe oliveira
cf6cf7f450
Add AuthACL
2020-05-21 08:59:51 +03:00
Vladimir Mihailenco
3dcb844106
Bump major version
2020-05-19 08:52:38 +03:00
Vladimir Mihailenco
f5593121e0
Add ctx as first arg
2020-05-19 08:52:38 +03:00
Yiwei Zhuang
5cd9e7f2f8
allow cluster client use limiter
2020-04-30 18:35:46 -07:00
Vladimir Mihailenco
218b17f0fc
Include multi & exec in pipeline hook
2020-02-14 15:55:16 +02:00
Vladimir Mihailenco
49a0c8c319
Add test for ring and cluster hooks
2020-02-14 14:30:40 +02:00
Vladimir Mihailenco
2e3402d33d
Don't allocate tmp slice in txPipelineWriteMulti
2020-02-14 12:55:59 +02:00
Vladimir Mihailenco
512e6c7a40
Unexport Clone and Lock from embedded hooks
2020-02-12 13:02:09 +02:00
git-hulk
d52b11cb42
Exported the setErr function as public
2020-02-03 17:53:47 +08:00
Vladimir Mihailenco
45de1c42ae
Set error on the commands in case there are no more attempts left
2020-02-02 14:17:14 +02:00
Vladimir Mihailenco
152e52f203
Fix WithContext race
2019-08-24 12:40:23 +03:00
Vladimir Mihailenco
2a46cb006d
Add withConn and set cmd errors more consistently
2019-08-09 13:53:05 +03:00
Vladimir Mihailenco
7779accbea
Use semantic import versioning
2019-08-08 14:29:44 +03:00
Vladimir Mihailenco
48224a399f
Remove releaseConnStrict
2019-08-08 11:44:55 +03:00
Vladimir Mihailenco
2927e15b6b
Retry BadConnError
2019-08-08 11:44:55 +03:00
Vladimir Mihailenco
4e9cea8876
Add proper SingleConnPool implementation
2019-08-03 17:31:28 +03:00
Vladimir Mihailenco
c837612911
Cancel sleep when context is cancelled
2019-07-30 12:13:00 +03:00
Vladimir Mihailenco
f3ce3362a0
Add golangci-lint
2019-07-25 14:36:50 +03:00
Vladimir Mihailenco
52ec525849
Propagate context in Pipeline
2019-07-25 13:28:15 +03:00
Vladimir Mihailenco
9d9e126af0
Implement TxPipeline for Ring
2019-07-19 12:00:11 +03:00
Vladimir Mihailenco
2cbb5194fb
Fix WithContext and add tests
2019-07-04 11:57:54 +03:00
Vladimir Mihailenco
fa479814de
Fix cmdsInfo to create node
2019-06-29 10:28:33 +03:00
Vladimir Mihailenco
fa2f6ee00b
Merge pull request #1056 from go-redis/fix/do-not-use-random-node
...
Use master / another slave node when current node is failing
2019-06-19 11:02:25 +03:00
Vladimir Mihailenco
3bdf64784a
Cleanup
2019-06-17 12:32:40 +03:00
Vladimir Mihailenco
1cc1ba9990
Use master / another slave node when current node is failing
2019-06-16 14:10:09 +03:00
Vladimir Mihailenco
880e05d975
Cleanup
2019-06-14 16:00:03 +03:00
Vladimir Mihailenco
5460bc10f2
Use Context.Deadline to set net.Conn deadline
2019-06-08 15:02:51 +03:00
Vladimir Mihailenco
53c8a4a6b7
Pass context to Dialer
2019-06-04 14:26:26 +03:00
Vladimir Mihailenco
09eb108738
Allow passing context where possible
2019-06-04 13:30:47 +03:00
Vladimir Mihailenco
3da4357c0c
Pass network and addr to dialer
2019-06-04 12:40:36 +03:00
Vladimir Mihailenco
84422d7ae7
Speedup WithContext
2019-05-31 17:31:54 +03:00
Vladimir Mihailenco
8476dfea4a
Replace Wrap* with hooks that support context
2019-05-31 16:36:57 +03:00
Vladimir Mihailenco
6238b8d4b7
Mark node as loading in Cluster pipeline read
2019-05-30 17:17:27 +03:00
Нимо
0f8e53e874
fix pubsub panic on redis reload
2019-04-18 19:06:16 +03:00
Andrea Spacca
9d63d8db54
Added WrapProcessPipeline to UniversalClient, wrap c.processTxPipeline in cluster client
2019-04-14 10:56:15 +02:00
Vladimir Mihailenco
5c012a3872
Use random node when there are no channels
2019-03-07 12:24:43 +02:00
Vladimir Mihailenco
b665d8fcf2
Rename copy to clone
2019-03-05 16:10:34 +02:00
Vladimir Mihailenco
ac9e1abf54
Retry master node on readonly errors. Fixes #977
2019-02-27 12:53:44 +02:00
Vladimir Mihailenco
473d039f0b
Merge pull request #955 from go-redis/fix/dont-remember-node
...
Don't remember cluster node for the PubSub
2019-02-08 15:37:55 +02:00
Vladimir Mihailenco
981cf0f5bb
Don't remember cluster node for the PubSub
2019-02-08 13:46:27 +02:00
Jake Gregg
67dcdea95a
⏪ Reverting changes to command.go, refactoring cluster client's calls to cmdSlot
2019-02-01 09:12:20 -08:00
Jake Gregg
f3804cd0b7
👌 Adding additional logic to handle this case
2019-02-01 08:23:41 -08:00
Jake Gregg
dba9cb31f5
♻️ Commands that specify keyslots should not try to hash for keyslot location
2019-01-31 15:47:13 -08:00
Vladimir Mihailenco
2e5bd7a411
Reload cluster state almost on any error
2019-01-08 16:37:22 +02:00
WANG QIANG
e6eeeda3d8
Remove unnecessary error check
2019-01-08 17:15:59 +08:00
WANG QIANG
6baf00e56b
Fix race condition when creating the cluster node
2019-01-08 15:25:41 +08:00
Vladimir Mihailenco
10edc85b67
Retry cluster pipeline read commands
2018-12-13 13:27:41 +02:00
Vladimir Mihailenco
382feca784
clusterStateHolder.Get should load a state when there is none
2018-12-13 12:41:58 +02:00
Vladimir Mihailenco
1d1269e0cf
Merge pull request #884 from go-redis/feature/limiter
...
Add Limiter interface
2018-11-29 11:21:03 +02:00
Vladimir Mihailenco
5d8c5c5c37
Add Limiter interface
2018-11-29 09:52:49 +02:00
Vladimir Mihailenco
17e8439f2f
Remove Redis Cluster state check
2018-11-24 13:16:21 +02:00
Vladimir Mihailenco
18e7a81047
Fix corner cases and a bug
2018-11-21 10:49:30 +02:00
Vladimir Mihailenco
fa76dd0e87
Add releaseConnStrict
2018-10-14 11:27:34 +03:00
Vladimir Mihailenco
69445c6e87
Don't enable ReadOnly in custom cluster mode
2018-09-20 13:35:51 +03:00
Vladimir Mihailenco
f7094544a5
Process pipeline commands concurrently
2018-09-11 13:30:51 +03:00
zhanyr
a9e329d3bc
execute commans concurrently on each cluster node in method `defaultProcessPipeline` ( #861 )
...
Execute commands concurrently on each cluster node
2018-09-11 12:37:57 +03:00
Vladimir Mihailenco
0197108027
Use bufio.Writer
2018-08-17 14:14:02 +03:00
Vladimir Mihailenco
5146fb0c57
Cleanup buffers manipulation
2018-08-15 11:53:15 +03:00
Vladimir Mihailenco
7c26d1ceb6
Pass cn.Rd where possible
2018-08-15 09:38:58 +03:00
Vladimir Mihailenco
ef3e0e9827
Merge pull request #839 from go-redis/fix/cluster-loopback-fix
...
Fix cluster loopback handling. Fixes #589
2018-08-15 08:52:04 +03:00
Vladimir Mihailenco
0d132966a4
Add missing options to UniversalOptions
2018-08-15 08:44:06 +03:00
Vladimir Mihailenco
c1c2753ae8
Fix cluster loopback handling. Fixes #589
2018-08-14 15:57:17 +03:00
Vladimir Mihailenco
d5fc79d4ee
Add Client.Do
2018-08-12 11:20:24 +03:00
Vladimir Mihailenco
651e9fef1d
Add MaxConnAge
2018-08-12 10:25:16 +03:00
Vladimir Mihailenco
b576fe91a1
Use single read and write buffer where possible
2018-08-04 13:09:22 +03:00
Vladimir Mihailenco
ea9da7c2e8
Rework ReceiveMessage
2018-07-23 17:10:58 +03:00
Vladimir Mihailenco
2559f32464
cluster: optimize newClusterState
2018-07-22 14:17:42 +03:00
Vladimir Mihailenco
b92dacbfa7
Conn timeout should be higher than read timeout
2018-07-22 08:49:48 +03:00
Vladimir Mihailenco
ee41b90923
Improve docs
2018-07-18 15:28:51 +03:00
Vladimir Mihailenco
1f59be5cc0
cluster: add manual setup
2018-06-29 10:46:12 +03:00
Vladimir Mihailenco
bdf8f06904
cluster: preload commands info
2018-06-18 12:55:26 +03:00
Puneeth Gadangi
0269263441
Use cmdSlotAndNode() to route read-only ClusterClient pipeline commands
2018-05-31 17:04:36 -07:00
Vladimir Mihailenco
4237a34c31
cluster: fix origin addr check
2018-05-31 10:25:40 +03:00
Vladimir Mihailenco
faf5666fbd
Cleanup pool
2018-05-29 17:29:47 +03:00
Nathan Ziebart
d790448589
reset cmdable.process when copying cluster client
2018-05-23 17:30:50 -07:00
Jeffrey Hutchins
471caa3d91
cluster: reload state for ForEach functions and every 1 minute
2018-05-21 16:40:06 +03:00
Vladimir Mihailenco
5c742fff78
cluster: cleanup tests
2018-05-21 16:17:57 +03:00
Vladimir Mihailenco
18b2e30835
Cleanup cmds info
2018-05-17 15:21:51 +03:00
Vladimir Mihailenco
092971361b
cluster: retry same node on retryable error
2018-05-17 15:02:35 +03:00
Vladimir Mihailenco
34facee367
Add more race tests
2018-05-17 14:55:00 +03:00
Vadim Liman
09b9a99666
Add TLS configuration support for Universal Client
2018-05-11 09:46:09 +03:00
superkinglabs
877867d284
Remove costly 'appendIfNotExists' and 'remove' call from PubSub ( #743 )
...
* remove costly 'appendIfNotExists' and 'remove' call from pubsub
2018-03-14 12:42:51 +02:00
Gabriel Aszalos
731dd72b84
{cluster,ring}: add support for context to ClusterClient and Ring
2018-03-07 14:41:18 +01:00
Vladimir Mihailenco
4fe9f93940
Re-order atomic field to please race detector
2018-03-07 14:38:18 +02:00
Vladimir Mihailenco
d6cb688ea7
Cleanup context implementation
2018-03-07 13:50:14 +02:00
Vladimir Mihailenco
a64d3e1ef1
Fix build on 32bit arch
2018-03-07 12:41:11 +02:00
T. Thyer
063393987a
Add option to balance load between master node and replica nodes ( #729 )
...
* Add option to balance load between master node and replica nodes
2018-03-07 12:23:38 +02:00
Vladimir Mihailenco
5e72be1cbf
Extract clusterStateHolder
2018-03-07 12:09:45 +02:00
Vladimir Mihailenco
f13fc5381c
Extract commands info cache
2018-03-07 12:09:45 +02:00
Vladimir Mihailenco
68362cfda1
Fix doc
2018-02-27 16:11:25 +02:00
Vladimir Mihailenco
cac7aa8c36
Reduce ClusterOptions.MaxRedirects from 16 to 8
2018-02-27 16:10:17 +02:00
Vladimir Mihailenco
cc47cf2439
Use fresh cluster state after sleeping
2018-02-27 16:10:17 +02:00
Vladimir Mihailenco
9df09066e2
Store all created cluster nodes in allNodes
2018-02-27 14:48:59 +02:00
Vladimir Mihailenco
fa7f64f7f2
Rework retrying
2018-02-16 13:40:23 +02:00