forked from mailgun/gubernator
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
188 lines (159 loc) · 6.68 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
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [2.0.0-rc.10] - 2021-10-25
## Changes
* Fixed async send when sending multiple rate limits to other nodes
* Fix leaky bucket reset time #110
## [2.0.0-rc.9] - 2021-10-12
## Changes
* Fixed infinite loop in async send
## [2.0.0-rc.7] - 2021-08-20
## Added
* Added optional os and golang internal metrics collectors
## [2.0.0-rc.6] - 2021-08-20
## Changes
* JSON responses are now back to their original camel_case form
* Fixed reporting of number of peers in health check
## [2.0.0-rc.5] - 2021-06-03
## Changes
* Implemented performance recommendations reported in Issue #74
## [2.0.0-rc.4] - 2021-06-03
## Changes
* Add support for burst in leaky bucket #103
* Add working example of aws ecs service discovery deployment #102
## [2.0.0-rc.2] - 2021-07-11
## Changes
* Deprecated github.com/golang/protobuf was replaced with google.golang.org/protobuf
* github.com/grpc-ecosystem/grpc-gateway was upgraded to v2
## [2.0.0-rc.1] - 2021-07-02
## Changes
* github.com/coreos/etcd was replaced with go.etcd.io/etcd/client/v3. This is
an API breaking change. It entailed updated of github.com/mailgun/holster to
the next major version v4
* Deprecated ConsistentHash was removed
* HashBytes64 is replaced with HashString64 to avoid unsafe conversions that is
reported by go vet since v1.16 https://github.com/golang/go/issues/40701#issue-677219527
## [1.0.0-rc.8] - 2021-03-16
## Added
* Add GUBER_GRPC_MAX_CONN_AGE_SEC to limit GRPC keep alive
## [1.0.0-rc.7] - 2021-02-10
## Changes
* Fix leaky bucket algorithm returning remaining more than limit
## [1.0.0-rc.6] - 2020-12-21
## Changes
* Update the k8s example to reflect the latest changes from the release
candidate.
## [1.0.0-rc.5] - 2020-12-21
## Changes
* Respect SIGTERM from docker during shutdown
* Peer info provided to etcd and memberlist pools is now consistent
* Fixed a race in getGlobalRateLimit
* Fixed issues with EtcdPool
* Changes in preparation of MultiRegion support testing
### Added
* Added GUBER_K8S_WATCH_MECHANISM for k8s deployments.
## [1.0.0-rc.4] - 2020-12-18
### Change
* Fix leaky bucket algorithm
## [1.0.0-rc.3] - 2020-11-10
### Change
* Added TLS Support for both GRPC and HTTP interfaces #76
* Prometheus metrics are now prefixed with `gubernator_`
* Switched prometheus Histograms to Summary's
* Changed gubernator.Config.GRPCServer to GRPCServers to support registering
with GRPC instances on multiple ports.
* Gubernator now opens a second GRPC instance on a random localhost port when
TLS is enabled for use by the HTTP API Gateway.
## [1.0.0-rc.2] - 2020-11-05
### Change
* Add Service Account to k8s deployment yaml
## [1.0.0-rc.1] - 2020-10-22
### Change
* Added `GUBER_DATA_CENTER` as a config option
* Use `GUBER_PEER_DISCOVERY_TYPE` to pick a peer discovery type, removed
'Enable' options from k8s, etcd, and member-list.
* Added `GUBER_ADVERTISE_ADDRESS` to specify which address is published for
discovery
* Gubernator now attempts to detect the proper `GUBER_ADVERTISE_ADDRESS` if
not specified
* Gubernator now binds to `localhost` by default instead of binding to
`0.0.0.0:80` to avoid allowing
access to a test version of gubernator from the network.
* Fix inconsistent tests failing #57
* Fix GRPC/HTTP Gateway #50
* Renamed functions to ensure clarity of version
* Removed deprecated `EtcdAdvertiseAddress` config option
* Refactored configuration options
* `member-list` metadata no longer assumes the member-list address is the same
as the gubernator advertise address.
* Now MD5 sums the peer address key when using replicated hash. This ensures
better key distribution when using domain names or ip address that are very
similar. (gubernator-1, gubernator-2, etc...)
* Now defaults to `replicated-hash` if `GUBER_PEER_PICKER` is unset
* Added support for DataCenter fields when using etcd discovery
* Now storing member-list metadata as JSON instead of glob
## [0.9.2] - 2020-10-23
### Change
* ETCD discovery now sets the IsOwner property when updating the peers list.
## [0.9.1] - 2020-10-19
### Change
* Fix GUBER_PEER_PICKER_HASH and GUBER_PEER_PICKER
* Now warns if GUBER_PEER_PICKER value is incorrect
* Now ignoring spaces between `key = value` in config file
## [0.9.0] - 2020-10-13
### Change
* Fix GUBER_MEMBERLIST_ADVERTISE_PORT value type
* Fixed race condition and updated tests for limit change
* Fix limit change not having effect until reset
## [0.8.0] - 2020-01-04
### Added
* Allow cache users to invalidate a ratelimit after a specific time
* Changing limit and duration before expire should now work correctly
* Added Behavior RESET_REMAINING to reset any hits recorded in the cache for the
specified rate limit
## Changes
* TokenBucketItem is now provided when `OnChange()` is called instead of `RateLimitResp`
* Fixed a bug in global behaviour where it would return an error if the async
update had not occured before the a second request is made. Now it acts like it
owns the rate limit until the owning node sends an update
* Always include reset_time in leaky bucket responses
* Fixed subtle bug during shutdown where PeerClient passed into goroutine could
be out of scope/changed when routine runs
* Behavior is now a flag, this should be a backward compatible change for
anyone using GLOBAL or NO_BATCHING but will break anyone using
DURATION_IS_GREGORIAN. Use `HasBehavior()` function to check for behavior
flags.
## [0.7.1] - 2019-12-10
### Added
* Added `Loader` interface for only loading and saving at startup and shutdown
* Added `Store` interface for continuous synchronization between the persistent store and the cache.
### Changes
* Moved `cache.Cache` into the `gubernator` package
* Changed the `Cache` interface to use `CacheItem` for storing and retrieving cached items.
## [0.6.0] - 2019-11-12
### Added
* DURATION_IS_GREGORIAN behavior to support interval based ratelimit durations
* Fixed issue where switching to leakybucket was impossible
* Fixed rate would never decrease if the client continued to add hits and failed.
## [0.5.0] - 2019-07-23
### Added
* Support for prometheus monitoring
* Support for environment based config
* Support for kubernetes peer discovery
## [0.4.0] - 2019-07-16
### Added
* Support for GLOBAL behavior
* Improved README documentation
### Changes
* GetRateLimits() now fetches rate limits asynchronously
## [0.3.2] - 2019-06-03
### Changes
* Now properly respecting the maxBatchLimit when talking with peers
## [0.3.1] - 2019-06-03
### Changes
* Minor log wording change when registering etcd pool
## [0.3.0] - 2019-05-16
### Changes
* Initial Release