* change log level from info to notice on relevant logs
* bump log level to notice for everything except request logger
* format
* fix choose_plan_test.exs for good (starter tier launch)
* Revert "Temporarily disable ingest metrics (#5369)"
This reverts commit b96e96a7f6.
* Add :tools to MIX_ENV=dev
* Stop tracking caches hit ratio in favour of raw counters
* Implement very rudimentary support for cache partitioning for sessions
* Convenience for starting partitioned caches
* Test basic partitioning expectations
* Include put_many in test
* Use div/2
* Remove unused alias
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Drop event explicitly on session lock timeout
* Make session `user_id` more random in tests to avoid excess locking
* Improve testability to event ingestion
* Test lock timeout in ingestion
* Create a regression demonstration test for race condition
* Use `ConCache.isolated/1` to force sequential processing of session events
* Revise comment in regression test
* Put lock call behind cache adapter API
* Add more explicit handling of failing lock
NOTE: Apparent double execution of lock function needs to be investigated.
* Improve slow lock cases tests
* Reduce number of session cache locks and instrument them w/ telemetry
* Format
---------
Co-authored-by: Adam Rutkowski <hq@mtod.org>
* Rely on con_cache telemetry
Now that https://github.com/sasa1977/con_cache/pull/76
is released, we don't have to use low-level operations
to emit hit/miss events.
This PR also wraps cache processes with
a function returning appropriate child specs lists.
Ideally each cache will have its own supervisor/child specs
going forward. This is an intermediate step in that direction.
* Update lib/plausible/application.ex
Co-authored-by: Adrian Gruntkowski <adrian.gruntkowski@gmail.com>
* Declare caches without warmers with plain child specs
---------
Co-authored-by: Adrian Gruntkowski <adrian.gruntkowski@gmail.com>
* Reapply "Replace caching engine (#3878)" (#3883)
This reverts commit c5881cdc6d.
* Ensure hit rate is tracked on `get_or_store`
* Remove :wx and :observer
* Remove unused deps
* Use `:set` table type
* Dependencies: swap Cachex for ConCache
* Implement Cache adapter wrapping ConCache
* Implement cache stats tracker, for metrics
* Use Cache.Adapter in Plausible.Cache
Marking the test as not slow anymore
* Use Cache Adapter when tracking sessions
* Use Cache Adapter for UA parsing
* Rename child identifiers - cachex is obsolete now
* Test stats tracking
* Update grafana metrics
* Put all caches under common child specification
* Try less
* Shorten the function delegation path
* Simplify caches config
The intervals were proven to never change really,
and previous shape made them not very discoverable either.
We'll look into a more declarative setup.
* Aim for more declarative supervision tree setup
* Generalize `Plausible.Cache`
This makes the `Site.Cache` module implement the specifics,
leaving the common bits reusable for upcoming cache processes.
* Generalize `Plausible.Cache` warmers
* Fix typos