-
Notifications
You must be signed in to change notification settings - Fork 821
/
ChangeLog.txt
166 lines (152 loc) · 11.3 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
Version 0.18-SNAPSHOT:
[feature] User properties: covered publish with user properties with tests and fixed publish of will messages. (#877)
[feature] Topic alias: implemented handling of topic alias received by publishers. (#873)
[feature] Flow-control: Handled client's receive maximum property to configure the inflight window through the client. (#858)
[feature] Generate correct MANIFEST.MF with bnd-maven-plugin. (#848)
[feature] Flow-control: implemented publish's quota management on the server side. (#852)
[fix] Incorrect reference used in compareAndSet in CTrie.cleanTomb. (#841)
[feature] Implement response-information property for request-response flow. (#840)
[fix] Optimised page file opening for disk-based queues. (#837)
[feature] Manage payload format indicator property, when set verify payload format. (#826)
[refactoring] Refactory of PostOffice to pass publish message in hits entirety avoiding decomposition into single parameters. (#827)
[feature] Add Netty native transport support on MacOS. Bundle all the native transport module by default (#806)
[feature] message expiry interval: (issue #818)
- Implements the management of message expiry for retained part. (#819)
- Avoid to publish messages that has elapsed its expire property. (#822)
- Update the message expiry property remaining seconds when a publish is forwarded. (#823)
- Updated will publishing to contains also the message expire property. (#824)
[feature] subscription option handling: (issue #808)
- Move from qos to subscription option implementing the persistence of SubscriptionOption to/from storage. (#810)
- Exposed the maximum granted QoS by the server with the config setting 'max_server_granted_qos'. (#811)
- Implements handling of noLocal subscription option on MQTT5 connections. (#814)
- Implements subscription options retain as published feature. (#815)
- Implements subscription options retains handling policies. (#816)
[feature] subscription identifiers: (issue #801)
- Implements the validation of subscription identifier properties in SUBSCRIBE. (#803)
- Store and retrieve the subscription identifier into the subscriptions directory. (#804)
- Update H2 storage to persist and reload subscription identifiers for shared and non-shared subscriptions. (#805)
- Adds subscription identifier as property in the published message back to the subscriber. (#807)
[feature] shared subscriptions:
- Initial implementation of shared subscription subscribe and publish part. (#796)
- Added unsubscribe of shared subscriptions. (#799)
- Implemented persistence for shared subscriptions to sustain broker restarts (#802)
- CONNACK set shared subscription available property to true. (#800)
[fix] Implements requirements on reserved topics (starts with $). Implements the matching rules and avoid to proceed with processing on client's publishes on those topics (#793)
[feature] Handle will delay interval and MQTT5's Will optional properties (#770)
[fix] Handle empty collector batches in PostOffice (#777)
[feature] Introduce a new option "PEER_CERTIFICATE_AS_USERNAME". When enabled, the client certificate is provided as the username to the authenticator.
Version 0.17:
[feature] Introduced DSL FluentConfig to simplify Server's API instantiation #761.
[fix] resolved issue #633 of bad perfomance when adding many subscriptions to few topics, resolved in #758.
[fix] resolved issue #629 that originated from subscription trees wide and flat, resolved in #630
[dependency] updated Netty to 4.1.93 and tcnative to 2.0.61 (#755)
[feature] add saved session expiry configurable through the `persistent_client_expiration` setting (#739).
[feature] implemented methods to forcibly disconnects a clients from a Server instance (#744).
[refactory] moved code to handle session event loops from PostOffice into separate SessionEventLoopGroup (#742).
[feature] added new callback method in interceptor to notify exceptions that happens on SessionEventLoop (#736).
[feature] introduce new `buffer_flush_millis` deprecating the old `immediate_buffer_flush` and switch default behavior to flush on every write (#738).
[refactory] purge of session state also on disconnect and reused logic (#715).
[feature] add `moquette.session_loop.debug` property to enable session loop checking assignments (#714).
[break] deprecate `persistent_store` to separate the enablement of persistence with `persistence_enabled` and the path `data_path` (#706).
[enhancement] introduced new queue implementation based on segments in memory mapped files. The type of queue implementation
could be selected by setting `persistent_queue_type` (#691, #704).
Version 0.16:
[build] drop generation of broker-test, removed distribution and embedding_moquette modules from deploy phase (#616)
[fix] introduces sessions event processors to segregate changes to a session in one single thread, simplifying concurrency and code (#631)
[util] add collection of telemetry data (#700)
Version 0.15.1:
[fix] avoid double subscription (#612)
[leak] fixed buffer leak in processing of PUBREC for QoS2 flow (#609)
Version 0.12:
Fixed issue #415
Dropped Hazelcast because at the moment Moquette is not designed to be clusterizable
Rewritten completly the broker to introduce the concept of MqttConnection
Dropped suppoert for MapDB and keeped only H2 MvStore for persistence
Version 0.10:
Netty epoll system added
Separated in memory and MapDB storage implementations
Cleanly separated inflight part (inbound and outbound)
Version 0.9:
Moved canRead check to topic from publish phase to subscribe (#144)
Added javadoc and src jars creations for JCenter/Maven central
Added persisting of clean session flag for already existing client session (fix issue #145)
Moved the message logic management fo FSM, to better control the concurrency.
Changed default config to use in memory store and not default moquette.mapdb
Version 0.8:
Introduced authenticator and authorizator implementations.
Fixed bug, doesn't close the channel when connect doesn't contains a valid proto name, issue #65
Fixed bug, does not check for zero length topic (filters) in PUBLISH, SUBSCRIBE, and UNSUBSCRIBE, issue #67
Fixed issue #69
Fixed bug #68, UNSUBSCRIBE has to fail on bad topicFilter names
Fixed bug #81, on stop of moquette broker it doesn't shutdown due to no shutdown of ringbuffer used on the back of ProtocolProcessor
Moved config to be not only filesystem based, but also classpath and memory (fix issue #73)
Switched from commit persistence on every change to time based to fix delay in handling many msgs/sec (fix issue #79)
Changed willMessage and password in CONNECT message from String to byte[] (fix issue #94 and #95)
Fixed ugly empty session storage, avoid fake NullObject empty subscription subscription
Added check to avoid creation of LostConnectionEvents for not yet completed connects (fix issue #88)
Removed LMAX ringbuffer to use multi threading with persistent (copy on write) data structures
Fixed bug that on connection stolen dropped also the new connection (fix issue #108)
Refactored the storage part to be more rational and use ClientSession concept
Added config property 'autosave_interval' (issue #97)
Removed leaking ref to parent's node (issue #119 and #126)
Added internal publish once the broker is embedded (issue #113)
Removed client active/not active state from persistence (issue #118)
Avoid deletion of client descriptor in case of multiple clients with same clientID (issues #116 and #124)
Removed a queue per client of inFlightIds (never cleaned) in favor of single atomic generator
Version 0.7:
Fix issue #38, added aligned to MQTT 3.1.1
Refactored big event switch to @Annotation dispatcher
Switched from HawtDB to MapDB
Fixed bug that didn't update client subscription on persistent store so that on server restart there where ghost subscriptions.
Fixed Issue #11, multiple republish of persisted QoS1/2 messages on clients reconnections.
Refactored the publish logic for QoS 1 2 to try to be more readable
Added packetIdentifier storage and generation
Fixed issue #16, bad packetId for will messages with qos > 0
Added store path variable "persistent_store" to configuration file (picked from Steven Warwick fork)
Removed OSGi bundle, developer time burner
Fixed github issue #30, returning error on mapdb file not deleted that corrupt reiterated builds
Added handling of allow_anonymous clients (as in mosquitto issue #34)
Modified the password_file format to use password stored in sha256 and not plain text
Added ACL file for topic read|write operations.
Removed cause of leakage of Netty Sessions (fix issue #39)
Cleaned Netty's stuff reference from Events used in Disruptor (fix issue #40)
Bad assignment of PacketID during publish to subscribed QoS0 topics (fix issue #38)
Fixed duplicated subscription with different QoS same client and topic (fix issue #49)
Fixed UNSUBSCRIBE that missed to remove the subscription from the persistent store (fix issue #50)
Fixed issue on multiple publish for overlapping subscription by the same client (fix issue #52).
Moved the authorization check before dropping an already connected client with same clientID (fix issue #44).
Fixed subscription tree that was unable to update clean session flag on subs with same client, topic and qos (fix issue #55)
Fixed overwriting of published qos in forward publish loop (fix issue #56)
Version 0.6:
Fix issue #42, bad password file path composition
Fix issue #43, missed topic case (finance/+ does has to match finance)
Integrated WebSocket support (issue #37)
Integrated SSL support (issue #41)
Fixed issue #40, check Logging inside the Felix OSGi
Fixed issue #46, implement correct behaviour for Will stuff
Splitted stores to persist messages and sessions into different interfaces
Renamed some methods in sessions store
Moved logging conf and slf4j-log4j deps out of broker to let it use the container's log configuration
Version 0.5:
Fix issue 20 (no flush of message on PINGREQ)
Fix issue 21 (bad channel timeout handler)
Created a self contained distribution package (issue 22)
Fix issue 28, OSGi-fied the broker
Fixed issue #31 missed to insert the hawtdb jars
Added a separate mvn module to host the OSGi bundle declaration
Fixed issue #30
Added password file for identity management on connect (Fix #23)
Version 0.4:
Dropped support for MINA
Fix Issue 15 (bad re-activation of client's subscriptions after a recconection)
Fix Issue 16 (bad re-publish of stored messages after a client reconnection)
Fixed a bug in unsubscribe due to missed clientID check
Fixed Issue 18 (descriptor of a disconnected (not active) client)
Bug fix for override subscriptions to the same /topic but with different QoS (latest wins)
Added test to check the downgrading of QoS of messages sent to registered subscribers (fixed a bug of double delivery of QoS2 messages)
Version 0.3:
Added Netty IO connectors
Dropped tests based on Fuse source client lib moving to Paho java client
Version 0.2:
Fixed issues (10, 11, 12, 13)
Fixed interdependency bug in test