Commit Graph

259 Commits

Author SHA1 Message Date
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
Vladimir Mihailenco 1a4d34448d Update cluster node latency asynchronously 2018-02-13 11:42:06 +02:00
yifei.huang 8b4fa6d443 Add WrapProcessPipeline 2018-01-30 16:47:29 +02:00
Vladimir Mihailenco a84876237b Retry if node is closed; close nodes with delay 2018-01-17 13:00:11 +02:00
Vladimir Mihailenco 3de5605ab2 Pick random node when command does not have keys 2017-12-28 16:47:08 +02:00
Vladimir Mihailenco 7cb146a31b Increase read timeout for blocking commands and don't retry such commands 2017-09-29 16:12:43 +03:00
Vladimir Mihailenco 2a5293c99c Export Cmder.Args 2017-09-26 11:29:22 +03:00
Vladimir Mihailenco f9307ab2fe Add TxPipeline to Cmdable 2017-09-25 11:48:44 +03:00
Vladimir Mihailenco bc5f9a6878 Replace PoolStats.Requests with PoolStats.Misses 2017-09-22 12:28:08 +03:00
Vladimir Mihailenco 5294b5dae1 Add PoolStats.StaleConns and enable logging by default 2017-09-11 09:10:17 +03:00
Vladimir Mihailenco 1173a9589f Cleanup code 2017-09-11 08:58:56 +03:00
Vladimir Mihailenco dbd2c99ba9 Rework pipeline retrying 2017-09-01 14:56:00 +03:00