forked from agoragames/haigha
-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGELOG
356 lines (226 loc) · 9.51 KB
/
CHANGELOG
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
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
0.9.0
=====
Merge https://github.com/agoragames/haigha/pull/69 from @kevinconway
Add support for IPv6 connections. Cycle through all available addresses
from socket.getaddrinfo() in their natural order.
Merge https://github.com/agoragames/haigha/pull/74 from @vitaly-krugl
Significant cleanup of channel frame processing and error handling.
Merge https://github.com/agoragames/haigha/pull/82 from @vitaly-krugl
Implemented support for RabbitMQ broker-initiated Basic.Cancel.
Integration test framework. Integration tests running on Travis CI.
0.8.0
=====
Merge https://github.com/agoragames/haigha/pull/73 from @vitaly-krugl
Adds listener support for basic.return, fixes protocol errors when not
correctly reading the list of frames upon a basic.return.
Merge https://github.com/agoragames/haigha/pull/78 from @liorn
Correctly handle heartbeat intervals and disconnect when no traffic according
to 0.9.1 spec section 4.2.7
0.7.3
=====
Merge https://github.com/agoragames/haigha/pull/66 from @rocco66
Adds IPv6 support.
0.7.2
=====
Merge https://github.com/agoragames/haigha/pull/64 from @subzey
Fixes installation on Windows.
0.7.1
=====
PEP8 styling fixes
Merge https://github.com/agoragames/haigha/pull/55 from @dizpers
Adds keyword argument passing to GeventPoolTransport constructor
from the Connection constructor.
0.7.0
=====
Adds `synchronous` keyword argument to `Connection` constructor, which makes
the connection behave as if it were synchronous, no matter the underlying
transport type. Useful for gevent where one does not want to use callbacks.
Applies to all channels, enforces `nowait=False` where applicable.
Adds `synchronous` keyword argument to `Connection.channel`, which makes the
`Channel` object synchronous independent of the underlying transport type.
For example, if a synchronous channel on an asynchronous transport has a
protocol method called with `nowait=False` (where applicable), then the method
will not return until the response frame has been read. Does not enforce
`nowait=False` where applicable.
Adds `synchronous_connect` option to Connection constructor which will enforce
synchronous behavior in `Connection.connect` regardless of the underlying
transport type. Improves features to handle issue #7. Also makes
`Connection.close` synchronous. Defaults to True if transport is synchronous
or `synchronous=True` passed in constructor.
https://github.com/agoragames/haigha/issues/7
Standard and gevent socket transport will raise EnvironmentErrors that aren't
in `(errno.EAGAIN,errno.EWOULDBLOCK,errno.EINTR)`. Fixes notifying read loops
of potential problems and fixes #44
https://github.com/agoragames/haigha/issues/44
Immediately close connection and raise ConnectionClosed if there is a
FrameError in reading frames from the broker in `Connection.read_frames`.
Detect frames that are larger than negotiated frame max in
`Connection.send_frame`, immediately close connection and raise
ConnectionClosed.
Add property `Connection.closed`
0.6.2
=====
Raise ConnectionClosed in Connection.synchronous if the transport has
been cleared
0.6.1
=====
Merge https://github.com/agoragames/haigha/pull/35 from @xjdrew
Fix exception raising when there's an application error on a synchronous transport
Fixes synchronous return values from queue.declare
Adds an example synchronous RPC client and server
0.6.0
=====
Fixes #33, only accept (str,unicode,bytearray) as Message body types. Default
to empty string.
0.5.12
======
Fixes #31 wherein a channel is closed on a synchronous transport while reading
frames and waiting for the synchronous callback to be executed.
0.5.11
======
Fixed writing headers if the type of a field is a subclass of the supported
native types
0.5.10
======
Fixed unexpected indent error.
0.5.9
=====
Support array lists in headers. Thanks to @joeyimbasciano
https://github.com/agoragames/haigha/pull/28
0.5.8
=====
Merge pull requests, suppresses DeprecationWarning in latest gevent.
0.5.7
=====
Fixed exception in handling in SocketTransport when sendall() raises a socket
error. Also fixed re-raise of exception on SocketTransport.read() so that it
always marks the transport as closed.
0.5.6
=====
Only catch Exception subclasses in Connection and Channel. Fixes issue #23.
Update to Chai 0.2.0
0.5.5
=====
Fixed bug in gevent transport connect parameter to socket transport
0.5.4
=====
Gevent transport can be used without monkey patching sockets
If there is an error in a channel close callback, don't fail in the second
call to Channel.close
0.5.3
=====
Added 'haigha.connections' to package. Thanks to @grncdr
https://github.com/agoragames/haigha/pull/16
0.5.2
=====
Added haigha.connections.RabbitConnection to support RabbitMQ-specific
features. This includes `auto_delete` and `internal` parameters to
exchange.declare, exchange.bind, exchange.unbind, client side basic.nack,
and confirm.select to enable publisher confirms. See basic.set_ack_listener
and basic.set_nack_listener for handling the confirmations.
http://www.rabbitmq.com/blog/2011/02/10/introducing-publisher-confirms/
Removed `auto_delete` and `internal` parameters from common exchange.declare
Default transport is now the SocketTransport. This is unlikely to change again.
Implemented PEP 396.
0.5.1
=====
GeventTransport subclasses SocketTransport
In all cases, if a method has 'nowait' argument and an optional callback is
supplied, the method will execute as 'nowait=False', i.e. synchronously
Connection supplies Channels with the protocol mapping
Connection close_info is available if the connection is closed or disconnected
The reply_text in Channel.close is truncated to 255 characters when sent to
the broker
Fixed bug in Channel.clear_synchronous_cb which needs to return the argument
if no matching callback was found. This fixes a bug in ProtocolClass.dispatch.
Fix isinstance parameter ordering in Channel.SyncWrapper.__eq__
0.5.0
=====
Fix message reading in basic.get
Added optional open_cb kwarg to Connection constructor
Added optional callback to basic.consume for notifications when broker has
registered the consumer
Moved channel state out of ChannelClass and into Channel to fix access problems
after Channel has been cleaned up
Added support for Channel open notification listeners
All AMQP timestamps are in UTC
Most exceptions will now propagate to user code, fixing problems with
gevent.GreenletExit and SystemExit
Preliminary support for synchronous clients
0.4.5
=====
Fix heartbeat support in event transport
0.4.4
=====
Fix handling of socket timeouts in gevent transport
0.4.3
=====
Client sends heartbeat frames on its own rather than simply replying to ones
received from the broker
0.4.2
=====
Channel close listeners are now notified before channel local data is cleaned
up
Default to the gevent transport
Removed fixed requirements for libevent or gevent. It is now up to the user to
install the packages corresponding to their preferred transport.
0.4.1
=====
Added a write lock around GeventTransport.write() call to socket.sendall()
0.4.0
=====
Fixed handling of channel closures due to error. This cleaned up several DoS
vulnerabilities, including a lockup in the ChannelPool, unbounded memory
consumption, and failure to re-use channel ids after max id enumerator
rolled over. Channel cleanup relies on reference counting to ensure a client
can respond to rapid opening and closing of channels.
Fixed failure to always cast GeventTransport.read() return to a bytearray,
which caused problems when reading partial frames.
Fixed failure in GeventTransport to switch to non-blocking socket after
connecting.
Fixed fetching of close_info when connection close callback executes.
0.3.4
=====
Abstracted libevent requirement and added support for gevent backend
Support non-blocking connect on libevent transport
Removed connection strategies from Connection and deleted ConnectionStrategy
class. Combined with a simplified and abstracted approach to IO and scheduling
in the Transports, the strategy for failed connections is more deterministic
and left in the hands of the user.
0.3.3
=====
Added cap to ChannelPool. This should be used to ensure that all of the broker
memory is consumed by channels in cases where it is slow to process
transactions.
0.3.2
=====
Fixed calling into user-provided close callback, changed interface of close_cb
to accept no arguments
Use buffer-per-frame in Connection.send_frame() to work around a memory
freeing problem in EventSocket
First round of in-depth documentation in DOCUMENTATION.rst
Added callbacks to Exchange.declare(), Exchange.delete() and
Transaction.select().
Fixed FIFO ordering problems for all methods that support callbacks to user
after a synchronous operation.
0.3.1
=====
Removed encoding of arrays as table fields
0.3.0
=====
Test coverage of all protocol and frame classes
Test coverage, bug fixes and minor performance improvements to Reader and
Writer classes
Reader and Writer conform to RabbitMQ and QPid errata as documented
at http://dev.rabbitmq.com/wiki/Amqp091Errata#section_3. Added
scripts/rabbit_table_test for integration testing.
0.2.3
=====
First changelog.
Removed manipulation of channels in Connection.disconnect(). It's now
up to the application to manage channels when explicitly shutting down a
connection or when the socket is dropped and the strategy reconnects. This
fixed a problem wherein an application may have created a connection,
created some channels and queued operations on them, but it takes the
strategy a few attempts before completing a socket connection.
Fixed character escpaing when logging outbound ContentFrames.