v5.0.0
Breaking changes
This major release updates cats-helper
dependency to 3.5.0
and smetrics
to 2.0.0
. APIs that used com.evolutiongaming.smetrics.MeasureDuration
now expect com.evolutiongaming.catshelper.MeasureDuration
. See smetrics
2.0.0 release notes for details.
Other notable changes
getOrUpdate*
andremove
interaction: ifremove
is performed whilegetOrUpdate*
effect is being evaluated, the value will be put in cache after the evaluation finishes. Before,getOrUpdate*
would return result of the calculation, but it would not be saved in cache.remove
will not return an effect corresponding to release of the value, if the value is still loading (but the release will still be performed). It will return the releasing effect resulting in the released value only if the value was already loaded in cache.put
is now executed faster in a highly-contentious scenarios: it will now give up much easier give up updating cache if encountered with concurrent changes being performed. Before, it would only finish executing when it succeeded writing the value, even if it meant retrying multiple times. That guarantee didn't bring much benefits, but hurt the performance.- A bug was fixed in which a
release
of some cache entries would be performed 0 or 2+ times in various scenarios involving concurrent execution ofgetOrUpdate*
,put
and `remove.
What's Changed
- Fix bug of counting optional loading for None as a failure by @Phill101 in #190
- Fix release race conditions and refactor core flows by @i-surkov in #192
- Update cats-effect to 3.4.11 by @scala-steward in #195
- Update smetrics to 2.0.0 by @Z1kkurat in #197
Full Changelog: v4.4.1...v5.0.0