All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.11.0 - 2023-04-26
- Add storage support for redis gem v5 #63 justinhoward
- Add Redis 5 support for patch #67 justinhoward
0.10.0 - 2023-04-05
- Support the opensearch-ruby gem #65 justinhoward
- Split CI tasks into their own jobs #64 justinhoward
0.9.0 - 2022-08-18
- Setup codecov code coverage #57 justinhoward
- Fix a regression where ConnectionPool was required for the redis storage #58 justinhoward
- Change current_time to a float #59 justinhoward
- Remove features deprecated in 0.8.5 #60 justinhoward
Faulty.current_time
is now a float instead of an integer- The 3 argument form of
Storage::Interface#entry
deprecated in 0.8.5 is now removed. - The
error_module
circuit option deprecated in 0.8.5 is now removed.
0.8.7 - 2022-08-11
- Add a Faulty#clear method to reset all circuits #55 justinhoward
- Update rubocop cleanup gemspec #56 justinhoward
0.8.6 - 2022-02-24
- Define an inspect method that represent circuit #50 JuanitoFatas
0.8.5 - 2022-02-17
- Add granular errors for Elasticsearch patch #48 justinhoward
- Fix yard warnings #49 justinhoward
- Fix crash in Redis storage backend if opened_at was missing #46 justinhoward
- Return status conditionally for Storage::Interface#entry #45 justinhoward
- Storage::Interface#entry should now accept an additional parameter
status
. If given, the method must return the updated status, otherwise if status isnil
#entry may return nil. Previously #entry always returned a history array. - The error_module option is deprecated. Patches should use the error_mapper option instead. The option will be removed in 0.9
0.8.4 - 2022-01-28
- Add Elasticsearch client patch #44 justinhoward
0.8.2 - 2021-10-18
- Fix crash for older versions of concurrent-ruby #42 justinhoward
0.8.1 - 2021-09-22
- Add cause message to CircuitTrippedError #40 justinhoward
- Record failures for cache hits #41 justinhoward
0.8.0 - 2021-09-14
- Store circuit options in the backend when run #34 justinhoward
- Added #get_options and #set_options to Faulty::Storage::Interface. These will need to be added to any custom backends
- Faulty::Storage::Interface#reset now requires removing options in addition to other stored values
- Circuit options will now be supplemented by stored options until they are run. This is technically a breaking change in behavior, although in most cases this should cause the expected result.
- Circuits are not memoized until they are run. Subsequent calls to Faulty#circuit can return different instances if the circuit is not run. However, once run, options are synchronized between instances, so likely this will not be a breaking change for most cases.
0.7.2 - 2021-09-02
- Add Faulty.disable! for disabling globally #38 justinhoward
- Suppress circuit_success for proxy circuits #39 justinhoward
0.7.1 - 2021-09-02
- Fix success event crash in log listener #37 justinhoward
0.7.0 - 2021-09-02
- Add initial benchmarks and performance improvements #36 justinhoward
The circuit_success
event no longer contains the status value. Computing this
value was causing performance problems.
0.6.0 - 2021-06-10
- Capture an error for BUSY redis backend when patched #30 justinhoward
- Add a patch for mysql2 #28 justinhoward
- docs, use correct state in description for skipped event #27 senny
- Fix CI to set REDIS_VERSION correctly #31 justinhoward
- Fix a potential memory leak in patches #32 justinhoward
0.5.1 - 2021-05-28
- Fix Storage::FaultTolerantProxy to return empty history on entries fail #26 justinhoward
0.5.0 - 2021-05-28
- Allow creating a new Faulty instance in Faulty#register #24 justinhoward
- Add support for patches to core dependencies starting with redis #14 justinhoward
- Improve storage #entries performance by returning entries #23 justinhoward
- Faulty #[] no longer differentiates between symbols and strings when accessing Faulty instances
- Faulty::Storage::Interface must now return a history array instead of a circuit status object. Custom storage backends must be updated.
0.4.0 - 2021-02-19
- Explicitly add support for Redis 3 and 4 #15 justinhoward
- Allow setting default circuit options on Faulty instances #16 justinhoward
- Switch from Travis CI to GitHub actions #11 justinhoward
- Only run rubocop for Ruby 2.7 in CI #12 justinhoward
- Switch to codacy for quality metrics #17 justinhoward
- Allow passing custom circuit to AutoWire #22 justinhoward
- Small logic fix to README #19 silasb
- Fix Redis storage dependency on ConnectionPool #21 justinhoward
AutoWire.new is replaced with AutoWire.wrap and no longer creates an instance of AutoWire.
0.3.0 - 2020-10-24
- Add tools for backend fault-tolerance #10
- CircuitProxy for wrapping storage in an internal circuit
- FallbackChain storage backend for falling back to stable storage
- Timeout warnings for Redis backend
- AutoWire wrappers for automatically configuring storage and cache
- Better documentation for fault-tolerance
0.2.0 - 2020-10-18
- Remove Scopes and replace them with Faulty instances #9
Faulty::Scope
has been removed. UseFaulty.new
instead.Faulty
is now a class, not a module
0.1.5 - 2020-10-18
- Fix redis storage to expire state key when using CAS #8
0.1.4 - 2020-10-18
- Improve spec coverage for supporting classes #6
- Fix redis bug where concurrent CAS requests could crash #7
0.1.3 - 2020-09-29
- Add HoneybadgerListener for error reporting #4
- Fix bug where memory storage would delete the newest entries #5
0.1.2 - 2020-08-28
- Fix Storage::FaultTolerantProxy open and reopen methods #2
0.1.1 - 2020-08-28
- Fix a crash when Storage::FaultTolerantProxy created a status stub #1
0.1.0 - 2020-08-27
Initial public release