Commit Graph

118 Commits

Author SHA1 Message Date
Vladimir Mihailenco 58f7149e38 feat: add ContextTimeoutEnabled to respect context timeouts and deadlines 2022-10-11 10:22:42 +03:00
jianghang baa48a4415 feat(pubsub): support sharded pub/sub 2022-08-04 00:05:22 +08:00
Vladimir Mihailenco a18fad5bd3 chore: v9 2022-06-04 17:42:06 +03:00
Vladimir Mihailenco c98c5f0eeb fix: update ChannelWithSubscriptions to accept options 2022-06-04 16:20:10 +03:00
Pau Freixes 98bb99ddc2
Fix Redis Cluster issue during roll outs of new nodes with same addr (#1914)
* fix: recycle connections in some Redis Cluster scenarios

This issue was surfaced in a Cloud Provider solution that used for
rolling out new nodes using the same address (hostname) of the nodes
that will be replaced in a Redis Cluster, while the former ones once
depromoted as Slaves would continue in service during some mintues
for redirecting traffic.

The solution basically identifies when the connection could be stale
since a MOVED response will be returned using the same address (hostname)
that is being used by the connection. At that moment we consider the
connection as no longer usable forcing to recycle the connection.
2021-10-04 13:10:42 +03:00
Vladimir Mihailenco b94bde306e
Fix/pubsub ping mutex (#1878)
* Fix PubSub.Ping to hold the lock

* Fix PubSub.Ping to hold the lock

* add write cmd data-race test

Signed-off-by: monkey92t <golang@88.com>

Co-authored-by: monkey92t <golang@88.com>
2021-09-03 17:57:34 +08:00
Vladimir Mihailenco 37f5a2b1cd Update changelog 2021-05-26 15:12:25 +03:00
monkey92t 8e8510431d
Improve pubsub (#1764)
* Improve pubsub

Signed-off-by: monkey92t <golang@88.com>

* Extract code to channel struct and tweak API

* Move chanSendTimeout to channel

* Cleanup health check

* Add WithChannelSendTimeout and tweak comments

* clear notes

Signed-off-by: monkey92t <golang@88.com>

Co-authored-by: Vladimir Mihailenco <vladimir.webdev@gmail.com>
2021-05-26 11:25:18 +08:00
monkey a2410beb43 upgrade golangci-lint to v1.39.0
Signed-off-by: monkey <golang@88.com>
2021-04-08 14:44:31 +08:00
Vladimir Mihailenco 02a9c81ef1 Fix golangci-lint check 2021-03-23 11:02:29 +02:00
Vladimir Mihailenco 76f1e50d50 Do not use retry backoff in PubSub 2020-09-17 12:54:48 +03:00
Vladimir Mihailenco 8a25ceadae
Merge pull request #1448 from rueian/pubsub-message-payload-slice
Support string array in pubsub message payload
2020-09-08 18:02:19 +03:00
Vladimir Mihailenco c357d18624 Faster renew the subscription 2020-09-05 10:56:09 +03:00
Rueian f5f73f8033
Support string array in pubsub message payload 2020-08-21 17:29:37 +08:00
刘青 8a3f304b25
Log with context to associate all log by traceID (#1413)
* Log with context to associate all log by traceID
2020-07-18 09:04:36 +03:00
Vladimir Mihailenco 4440575966 Merge branch 'v8' 2020-05-21 10:16:44 +03:00
Vladimir Mihailenco eecd319ee3 Fix nil type assertion 2020-05-21 09:11:00 +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
Iain Proctor 7247939b32 Fix "redis: discarding bad PubSub connection" stuck state (#1162)
* Reset healthy on reconnect
2019-09-30 11:24:53 +03:00
Vladimir Mihailenco 7779accbea Use semantic import versioning 2019-08-08 14:29:44 +03:00
Vladimir Mihailenco 4e9cea8876 Add proper SingleConnPool implementation 2019-08-03 17:31:28 +03:00
Vladimir Mihailenco f3ce3362a0 Add golangci-lint 2019-07-25 14:36:50 +03:00
Vladimir Mihailenco 11ef80b162 Change PubSub.Channel 2019-07-09 10:25:27 +03:00
Vladimir Mihailenco 3bdf64784a Cleanup 2019-06-17 12:32:40 +03:00
Vladimir Mihailenco 5460bc10f2 Use Context.Deadline to set net.Conn deadline 2019-06-08 15:02:51 +03:00
Francois Parquet af59960088
Typo error in comments 2019-04-08 20:06:31 +08:00
Vladimir Mihailenco b6fdeca648 Add PubSub.ChannelSize 2019-03-12 12:48:32 +02:00
Vladimir Mihailenco 21913a8304 pubsub: drop a message when the channel is full 2019-03-12 12:40:08 +02:00
Vladimir Mihailenco daf101bd79 Fix nil ping error 2018-10-09 10:52:30 +03:00
Vladimir Mihailenco 6a768df38b . 2018-10-01 11:38:21 +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 e3b56f7641 pubsub: fix ping logic 2018-08-07 16:48:32 +03:00
Vladimir Mihailenco 316917d99f pubsub: log an error on reconnect 2018-08-07 10:33:07 +03:00
Vladimir Mihailenco 96d1b85009 Cleanups 2018-08-06 13:59:15 +03:00
Vladimir Mihailenco b576fe91a1 Use single read and write buffer where possible 2018-08-04 13:09:22 +03:00
Vladimir Mihailenco 7e6413d467 Better allowTimeout in PubSub 2018-07-30 13:57:04 +03:00
Vladimir Mihailenco 9bb7bb3cde Change ReceiveMessage to not use Ping 2018-07-24 09:54:34 +03:00
Vladimir Mihailenco ea9da7c2e8 Rework ReceiveMessage 2018-07-23 17:10:58 +03:00
Vladimir Mihailenco b92dacbfa7 Conn timeout should be higher than read timeout 2018-07-22 08:49:48 +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
Veselkov Konstantin ea4d6c3490 golint warnings are removed 2018-01-24 22:38:47 +04:00
Vladimir Mihailenco 15f14b8305 Create PubSub channel once 2017-10-30 12:09:57 +02:00
Vladimir Mihailenco dbd2c99ba9 Rework pipeline retrying 2017-09-01 14:56:00 +03:00
Vladimir Mihailenco dbcf95c85e Fix PubSub.Subscribe deadlock 2017-08-01 14:21:26 +03:00
Vladimir Mihailenco 6060f097e1 Add PubSub support to Cluster client 2017-07-09 10:07:20 +03:00
Vladimir Mihailenco 0d94a7bc88 Fix race in PubSub 2017-06-29 17:09:52 +03:00
Vladimir Mihailenco fbc8000fd1 Resent client pool when sentinel switches master 2017-06-29 16:53:49 +03:00