All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
v2.4.2 (2022-11-04)
Closed issues:
- Adapter configuration per-env? #171
- On-change handler for write-through decorators #165
- Document test env setup with decorators? #155
- Managing Failovers in the cluster #131
Merged pull requests:
- Make Multilevel adapter apply deletes in reverse order #174 (martosaur)
- Use import Bitwise instead of use Bitwise #172 (ryvasquez)
- Fix result of getting value by non existent key #166 (fuelen)
v2.4.1 (2022-07-10)
Closed issues:
- Telemetry handler fails when using
put_all
#163 - Fix
incr/3
to initialize default value if ttl is expired #162 - Cannot use variables in decorator keys #161
Merged pull requests:
- Update stats handler to handle map type argument passed to
put_all
#164 (ananthakumaran) - New adapter with Horde #160 (eliasdarruda)
v2.4.0 (2022-06-05)
Closed issues:
- Multiple keys deletion at once with predefined query
{:in, keys}
#159 - Duplicate data keys when put in replicated cache when start app #158
- Option
:cache
admits MFA tuple{module, function, args}
as value on the annotated functions #157
Merged pull requests:
- Allow passing dynamic cache configuration to the decorators #156 (suzdalnitski)
- Fix typo #154 (kianmeng)
- User erlef/setup-beam for GitHub Actions #153 (kianmeng)
- Fix typos #152 (george124816)
- Fix config comments #150 (alexandrubagu)
v2.3.2 (2022-03-29)
Closed issues:
- Transaction in Replicate not block global #147
- The match spec in the doc should be of size 5 instead of size 4 #146
- Performance penalty when using Multilevel + Local + Redis adapters #138
v2.3.1 (2022-03-13)
Implemented enhancements:
- Improve cache memory/size checks for local adapter #145
Closed issues:
- What happens if cache uses more memory than the machine have? #144
v2.3.0 (2021-11-13)
Implemented enhancements:
- Additional Telemetry events for the partitioned adapter #143
- Add option
:join_timeout
to the partitioned adapter #142 - Option
:on_error
for caching annotations to ignore cache exceptions when required #141 - Fix
Nebulex.Adapters.Multilevel.get_all/3
to call the same invoked function into the underlying levels #139 - Option
:key_generator
admits MFA tuple{module, function, args}
as value on the annotated functions #135
Closed issues:
- Unhandled :erpc failures #140
- Release a version with new telemetry dependency #137
- handle_rpc_multi_call/3 doesn't handle empty list in res argument #136
- New telemetry isn't user friendly #129
v2.2.1 (2021-10-18)
Closed issues:
- Compilation error if cacheable decorator has an argument ignored (FIX: Skip ignored and/or unassigned arguments when invoking key generator) #134
- Is it possible to use return value in key-generation along with the passed parameters? #132
Merged pull requests:
- Fix
max_size
to be actually 1 million instead of 100,000 #133 (adamz-prescribefit)
v2.2.0 (2021-09-10)
Implemented enhancements:
- Improve the Telemetry documentation for the partitioned, replicated, and multi-level adapters. #130
- Make
:keys
option available forcache_put
annotation #128
Closed issues:
cache_put
does not work when passing a list of keys #127
v2.1.1 (2021-06-25)
Implemented enhancements:
- Add cache option
:default_key_generator
to change the key generator at compile-time #126
Closed issues:
- Hits/Misses statistics not updated when using
get_all
#125 - Compilation fails in file lib/nebulex/rpc.ex #123
- Nebulex.Caching.SimpleKeyGenerator should produce a unique key #122
Merged pull requests:
v2.1.0 (2021-05-15)
Added features:
- Telemetry handler for aggregating and/or handling cache stats #119
- Instrument multi-level adapter with the recommended Telemetry events #118
- Instrument replicated adapter with the recommended Telemetry events #117
- Instrument partitioned adapter with the recommended Telemetry events #116
- Instrument the local adapter with the recommended Telemetry events #115
- Add custom key generator support by implementing
Nebulex.Caching.KeyGenerator
behaviour #109 - Add default key generator
Nebulex.Caching.SimpleKeyGenerator
Implemented enhancements:
- Settle down the foundations to support Telemetry events in the adapters #114
- Support
:before_invocation
option in thecache_evict
annotation #110
Fixed bugs:
- Possible race-condition when removing older generation while ongoing operations on it #121
- Bug on boolean values #111
- Issue when raising Nebulex.RPCMultiCallError in replicated adapter #108
Closed issues:
- Use of
:ets
reference after delete #120 - Node's that are gracefully shutting down trigger Nebulex errors #113
- Rolling deployment after adding the cache does not start new nodes #107
- Unable to migrate to v.2 https://hexdocs.pm/nebulex/migrating-to-v2.html is broken #102
Merged pull requests:
- Avoid calling
cacheable()
method when cached value isfalse
#112 (escobera) - Declarative annotation-based caching improvements #105 (cabol)
v2.0.0 (2021-02-20)
Added features:
- Added
delete_all/2
andcount_all/2
functions to the Cache API #100 - Added
decr/3
to the Cache API.
Implemented enhancements:
- Added
join_cluster
andleave_cluster
functions to the distributed adapters #104 - Removed
Nebulex.Time.expiry_tine/2
; use:timer.(seconds|minutes|hours)/1
instead.
Closed issues:
- Migrating to v2 link is broken #103
- Fixed replicated adapter to work properly with dynamic caches #101
v2.0.0-rc.2 (2021-01-06)
Added features:
Implemented enhancements:
- Improved replicated adapter to ensure better consistency across the nodes #99
- Refactored Nebulex task for generating caches #97
- Added
Nebulex.Adapter.Stats
behaviour as optional #95 - Added
Nebulex.Adapter.Entry
andNebulex.Adapter.Storage
behaviours #93 - Added
:default
option to theincr/3
callback #92 - Fixed
Nebulex.RPC
to use:erpc
when depending on OTP 23 or higher, otherwise use current implementation #91
Fixed bugs:
- Fixed stats to update evictions when a new generation is created and the older is deleted #98
Closed issues:
- Is there a way to disable caching entirely? #87
- Slow cache under moderate simultaneous load #80
mix nebulex.gen.cache
replaces everything in folder #75- Replicated hash_slots for partitioned adapter #65
Merged pull requests:
- Overall fixes and enhancements for adapter behaviours #94 (cabol)
- Typo in code example 👀 #89 (Awlexus)
v2.0.0-rc.1 (2020-11-15)
Implemented enhancements:
- Made the local adapter completely agnostic to the cache name
- Added documentation in local adapter for eviction settings, caveats and recommendations.
- Added support for new
:pg
module since OTP 23 #84
Closed issues:
- Error on
cache.import
using ReplicatedCache #86 {:EXIT, #PID<0.2945.0>, :normal}
#79opts[:stats]
not getting through to the adapter #78- Partitioned Cache + stats + multiple nodes causes failure #77
- Recommended gc settings? #76
Merged pull requests:
- Add test for unflushed messages with exits trapped #85 (garthk)
- Misc doc changes #83 (kianmeng)
- Use TIDs for the generation tables instead of names #82 (cabol)
- Update
:shards
dependency to the latest version #81 (cabol)
v2.0.0-rc.0 (2020-07-05)
Closed issues:
- Asynchronous testing struggles #72
MyCache.ttl/0
is undefined or private #71- Add telemetry integration #62
Merged pull requests:
v1.2.2 (2020-06-11)
Closed issues:
Merged pull requests:
- Fix: Dialyzer useless control flow #73 (filipeherculano)
v1.2.1 (2020-04-12)
Fixed bugs:
- Fix issue when memory check is ran for the generation manager #69
v1.2.0 (2020-03-30)
Implemented enhancements:
- Refactor
Nebulex.Caching
in order to use annotated functions via decorators #66
Fixed bugs:
- Sporadic
:badarg
error #52
Closed issues:
- Question: disabling cache conditionally in defcacheable #63
- Support for persistence operations #61
- Implement adapter for replicated topology #60
Merged pull requests:
- [#66] Refactor
Nebulex.Caching
to use annotated functions via decorators #67 (cabol) - Fixes and enhancements for
v1.2.0
#64 (cabol) - Features for next release (
v1.2.0
) #59 (cabol)
v1.1.1 (2019-11-11)
Implemented enhancements:
- Add capability to limit cache size #53
- Ability to "get or set" a key #49
- Multilevel Cache: transaction/3 is attempting to change all levels multiple times. #35
Closed issues:
- Pre Expire Hook #57
- Add matching option on returned result to Nebulex.Caching #55
- Multi Level with dist not working as expected #54
- Adapter for FoundationDB #51
Merged pull requests:
v1.1.0 (2019-05-11)
Implemented enhancements:
- Refactor flush action in the local adapter to delete all objects instead of deleting all generation tables #48
- Write a guide for
Nebulex.Caching
#45 - Turn
Nebulex.Adapter.NodeSelector
into a generic hash behaviorNebulex.Adapter.Hash
#44 - Turn
Nebulex.Adapters.Dist.RPC
into a reusable utility #43 - Add support to evict multiple keys from cache in
defevict
#42
Fixed bugs:
- custom ttl on mulltilevel cache gets overwritten #46
Closed issues:
- Will nebulex support replicating cache partitions? #47
- Add support to define
:opts
indefcacheable
anddefupdatable
#40 - Random test failure - UndefinedFunctionError #28
- Adapter for Memcached #22
- Invalidate keys cluster-wide #18
Merged pull requests:
v1.0.1 (2019-01-11)
Fixed bugs:
- The
:infinity
atom is being set for unexpired object when is retrieved from an older generation #37
Closed issues:
- Caching utility macros:
defcacheable
,defevict
anddefupdatable
#39 - Multilevel Cache:
replicate/2
is attempting to subtract from:infinity
#34 has_key?/1
does not respect ttl #33- Add dialyzer and credo checks to the CI pipeline #31
- Fix documentation about hooks #30
- FAQ list #25
Merged pull requests:
- typo in transaction docs #38 (fredr)
- Handle an :infinity expiration in multilevel replication. #36 (sdost)
- Add missing coma in conf section of readme file #32 (Kociamber)
v1.0.0 (2018-10-31)
Implemented enhancements:
- Refactor
Nebulex.Adapters.Dist
to useTask
instead of:rpc
#24 - Create first cache generation by default when the cache is started #21
Closed issues:
- Performance Problem. #27
- Cache Failing to Start on Production #26
- Adapter for Redis #23
- For
update
andget_and_update
functions, the :ttl is being overridden #19 - TTL and EXPIRE functions? #17
- Publish a rc.3 release #16
- Replicated cache adapter #15
- Fulfil the open-source checklist #1
v1.0.0-rc.3 (2018-01-10)
Closed issues:
- Add stream #10
v1.0.0-rc.2 (2017-11-25)
Closed issues:
- Atom exhaustion from generations #8
- Custom ttl for every cache record? #7
- Load/Stress Tests #6
- Update Getting Started guide #4
- Add counters support – increments and decrements by a given amount #3
v1.0.0-rc.1 (2017-07-30)
Closed issues:
- Implement mix task to automate cache generation #2
* This Changelog was automatically generated by github_changelog_generator