forked from django/channels_redis
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG.txt
279 lines (169 loc) · 7 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
3.1.0 (2020-09-06)
------------------
* Ensured per-channel queues are bounded in size to avoid a slow memory leak if
consumers stop reading.
Queues are bound to the channel layer's configured ``capacity``. You may
adjust this to a suitably high value if you were relying on the previously
unbounded behaviour.
3.0.1 (2020-07-15)
------------------
* Fixed error in Lua script introduced in 3.0.0.
3.0.0 (2020-07-03)
------------------
* Redis >= 5.0 is now required.
* Updated msgpack requirement to `~=1.0`.
* Ensured channel names are unique using UUIDs.
* Ensured messages are expired even when channel is in constant activity.
* Optimized Redis script caching.
* Reduced group_send failure logging level to reduce log noise.
* Removed trailing `:` from default channel layer `prefix` to avoid double
`::` in group keys. (You can restore the old default specifying
`prefix="asgi:"` if necessary.)
2.4.2 (2020-02-19)
------------------
* Fixed a bug where ``ConnectionPool.pop()`` might return an invalid
connection.
* Added logging for a group_send over capacity failure.
2.4.1 (2019-10-23)
------------------
* Fixed compatibility with Python 3.8.
2.4.0 (2019-04-14)
------------------
* Updated ASGI and Channels dependencies for ASGI v3.
2.3.3 (2019-01-10)
------------------
* Bumped msgpack to 0.6
* Enforced Python 3.6 and up because 3.5 is too unreliable.
2.3.2 (2018-11-27)
------------------
* Fix memory leaks with receive_buffer
* Prevent double-locking problems with cancelled tasks
2.3.1 (2018-10-17)
------------------
* Fix issue with leaking of connections and instability introduced in 2.3.0
2.3.0 (2018-08-16)
------------------
* Messages to the same process (with the same prefix) are now bundled together
in a single message for efficiency.
* Connections to Redis are now kept in a connection pool with significantly
improved performance as a result. This change required lists to be changed
from oldest-first to newest-first, so immediately after any upgrade,
existing messages in Redis will be drained in reverse order until your
expiry time (normally 60 seconds) has passed. After this, behaviour will
be normal again.
2.2.1 (2018-05-17)
------------------
* Fixed a bug in group_send where it would not work if channel_capacity was set
2.2.0 (2018-05-13)
------------------
* The group_send method now uses Lua to massively increase the speed of sending
to large groups.
2.1.1 (2018-03-21)
------------------
* Fixed bug where receiving messages would hang after a while or at high
concurrency levels.
* Fixed bug where the default host values were invalid.
2.1.0 (2018-02-21)
------------------
* Internals have been reworked to remove connection pooling and sharing. All
operations will now open a fresh Redis connection, but the backend will no
longer leak connections or Futures if used in multiple successive event loops
(e.g. via multiple calls to sync_to_async)
2.0.3 (2018-02-14)
------------------
* Don't allow connection pools from other event loops to be re-used (fixes
various RuntimeErrors seen previously)
* channel_capacity is compiled in the constructor and now works again
2.0.2 (2018-02-04)
------------------
* Capacity enforcement was off by one; it's now correct
* group_send no longer errors with the wrong ChannelFull exception
2.0.1 (2018-02-02)
------------------
* Dependency fix in packaging so asgiref is set to ~=2.1, not ~=2.0.0
2.0.0 (2018-02-01)
------------------
* Rewrite and rename to channels_redis to be based on asyncio and the
Channels 2 channel layer specification.
1.4.2 (2017-06-20)
------------------
* receive() no longer blocks indefinitely, just for a while.
* Built-in lua scripts have their SHA pre-set to avoid a guaranteed cache miss
on their first usage.
1.4.1 (2017-06-15)
------------------
* A keyspace leak has been fixed where message body keys were not deleted after
receive, and instead left to expire.
1.4.0 (2017-05-18)
------------------
* Sharded mode support is now more robust with send/receive deterministically
moving around the shard ring rather than picking random connections. This
means there is no longer a slight chance of messages being missed when there
are not significantly more readers on a channel than shards. Tests have
also been updated so they run fully on sharded mode thanks to this.
* Sentinel support has been considerably improved, with connection caching
(via sentinal_refresh_interval), and automatic service discovery.
* The Twisted backend now picks up the Redis password if one is configured.
1.3.0 (2017-04-07)
------------------
* Change format of connection arguments to be a single dict called
``connection_kwargs`` rather than individual options, as they change by
connection type. You will need to change your settings if you have any of
socket_connect_timeout, socket_timeout, socket_keepalive or
socket_keepalive_options set to move them into a ``connection_kwargs`` dict.
1.2.1 (2017-04-02)
------------------
* Error with sending to multi-process channels with the same message fixed
1.2.0 (2017-04-01)
------------------
* Process-specific channel behaviour changed to match new spec
* Redis Sentinel channel layer added
1.1.0 (2017-03-18)
------------------
* Support for the ASGI statistics extension
* Distribution of items over multiple servers using consistent hashing is improved
* Handles timeout exceptions in newer redis-py library versions correctly
* Support for configuring the socket_connect_timeout, socket_timeout, socket_keepalive and socket_keepalive_options
options that are passed to redis-py.
1.0.0 (2016-11-05)
------------------
* Renamed "receive_many" to "receive"
* Improved (more explicit) error handling for Redis errors/old versions
* Bad hosts (string not lost) configuration now errors explicitly
0.14.1 (2016-08-24)
-------------------
* Removed unused reverse channels-to-groups mapping keys as they were not
cleaned up proactively and quickly filled up databases.
0.14.0 (2016-07-16)
-------------------
* Implemented group_channels method.
0.13.0 (2016-06-09)
-------------------
* Added local-and-remote backend option (uses asgi_ipc)
0.12.0 (2016-05-25)
-------------------
* Added symmetric encryption for messages and at-rest data with key rotation.
0.11.0 (2016-05-07)
-------------------
* Implement backpressure with per-channel and default capacities.
0.10.0 (2016-03-27)
-------------------
* Group expiry code re-added and fixed.
0.9.1 (2016-03-23)
------------------
* Remove old group expiry code that was killing groups after 60 seconds.
0.9.0 (2016-03-21)
------------------
* Connections now pooled per backend shard
* Random portion of channel names now 12 characters
* Implements new ASGI single-response-channel pattern spec
0.8.3 (2016-02-28)
------------------
* Nonblocking receive_many now uses Lua script rather than for loop.
0.8.2 (2016-02-22)
------------------
* Nonblocking receive_many now works, but is inefficient
* Python 3 fixes
0.8.1 (2016-02-22)
------------------
* Fixed packaging issues