Skip to content

Latest commit

 

History

History
730 lines (523 loc) · 29.2 KB

CHANGELOG.md

File metadata and controls

730 lines (523 loc) · 29.2 KB

Changelog

All notable changes to this project will be documented in this file.

This project adheres to Semantic Versioning.

v2.6.2 (2024-06-15)

Full Changelog

Closed issues:

  • Having a cache per user ID #224

Merged pull requests:

v2.6.1 (2024-02-24)

Full Changelog

Merged pull requests:

  • Improve variable handing in key generators #221 (hissssst)

v2.6.0 (2024-01-21)

Full Changelog

Fixed bugs:

  • Fix compatibility with Elixir 1.15 and 1.16 #220

Closed issues:

  • Multilevel inclusive cache doesn't duplicate entries backwards on get_all/2 #219
  • Empty arguments list passed to generate/3 in Elixir 1.16 #218
  • Regression on decorated functions and Elixir 1.16 #216
  • Bug on Local adapter when using delete_all and keys are nested tuples: not a valid match specification #211
  • Nebulex.RegistryLookupError #207
  • Docs on Migrating to v2 from Nebulex.Adapters.Dist.Cluster #198

Merged pull requests:

  • Partitioned Adapter supports two-item tuples as keys #214 (twinn)
  • Adds nebulex Ecto adapter #212 (hissssst)

v2.5.2 (2023-07-14)

Full Changelog

Closed issues:

  • Replicated adapter syncing during rolling deployment. #209
  • Ambiguity regarding ttl and gc_interval relation. #208
  • Seeing Nebulex.RPCError during deployments with partitioned adapter. #206
  • Random :erpc, :timeout with partitioned get. #202
  • Processes reading from cache blocked by generational gc process. #197

Merged pull requests:

  • Delay flushing ets table to avoid blocking processes using it. #210 (szajbus)

v2.5.1 (2023-05-27)

Full Changelog

Merged pull requests:

v2.5.0 (2023-05-13)

Full Changelog

Implemented enhancements:

  • Support for functions that can set TTL in Decorator similar to Match #200
  • Improve default match function in decorators to cover more scenarios #177
  • Adapters implementation guide #96

Fixed bugs:

  • Issue with keys set to false when calling get_all in local adapter #187

Closed issues:

  • Is there any way to get the size of the cache? #203
  • Where to use load/2, dump/2 #201
  • Nebulex.Cache callbacks mention "Shared Options" section that do not exist #199
  • Errors when storing nil values #195
  • Unregistering cache in registry happens after cache shuts down #194
  • Is there a good way to evict multiple caches at once by some conditions? #192
  • Unable to use module attributes when specifying a MFA cache within the decorator #191
  • Nebulex crash when gc_interval is not set #182
  • ArgumentError * 1st argument: the table identifier does not refer to an existing ETS table #181
  • Feedback for NebulexLocalDistributedAdapter #180
  • Multilevel invalidation #179
  • External cache-key references on cacheable decorator #178
  • [multiple clause functions] Cannot use ignored variables in decorator keys #173
  • Ability for referencing a key in the cacheable decorator via :references option #169
  • Multi level caching suggestion? #168

Merged pull requests:

v2.4.2 (2022-11-04)

Full Changelog

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)

Full Changelog

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:

v2.4.0 (2022-06-05)

Full Changelog

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:

v2.3.2 (2022-03-29)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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)

Full Changelog

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:

v2.2.0 (2021-09-10)

Full Changelog

Implemented enhancements:

  • Improve the Telemetry documentation for the partitioned, replicated, and multi-level adapters. #130
  • Make :keys option available for cache_put annotation #128

Closed issues:

  • cache_put does not work when passing a list of keys #127

v2.1.1 (2021-06-25)

Full Changelog

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)

Full Changelog

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 the cache_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:

Merged pull requests:

  • Avoid calling cacheable() method when cached value is false #112 (escobera)
  • Declarative annotation-based caching improvements #105 (cabol)

v2.0.0 (2021-02-20)

Full Changelog

Added features:

  • Added delete_all/2 and count_all/2 functions to the Cache API #100
  • Added decr/3 to the Cache API.

Implemented enhancements:

  • Added join_cluster and leave_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)

Full Changelog

Added features:

  • Added adapter Nebulex.Adapters.Nil for disabling caching #88
  • Added adapter for whitfin/cachex #20

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 and Nebulex.Adapter.Storage behaviours #93
  • Added :default option to the incr/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)

Full Changelog

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} #79
  • opts[: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)

Full Changelog

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)

Full Changelog

Closed issues:

  • Fix: Dialyzer #74
  • Question: Use environment variables for config #70

Merged pull requests:

v1.2.1 (2020-04-12)

Full Changelog

Fixed bugs:

  • Fix issue when memory check is ran for the generation manager #69

v1.2.0 (2020-03-30)

Full Changelog

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)

Full Changelog

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:

  • Add match option to Nebulex.Caching #56 (polmiro)

v1.1.0 (2019-05-11)

Full Changelog

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 behavior Nebulex.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 in defcacheable and defupdatable #40
  • Random test failure - UndefinedFunctionError #28
  • Adapter for Memcached #22
  • Invalidate keys cluster-wide #18

Merged pull requests:

v1.0.1 (2019-01-11)

Full Changelog

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 and defupdatable #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)

Full Changelog

Implemented enhancements:

  • Refactor Nebulex.Adapters.Dist to use Task 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 and get_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)

Full Changelog

Closed issues:

  • Add stream #10

v1.0.0-rc.2 (2017-11-25)

Full Changelog

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)

Full Changelog

Closed issues:

  • Implement mix task to automate cache generation #2

* This Changelog was automatically generated by github_changelog_generator