Comments (3)
This is a bit of a pain, because hooks have to be built and started before the worker actually is... so the irony is the worker doesn't even exist during start up.
So... Need to think of another way around it. Considering an option to pass into a hook of requires_worker: true
which causes the worker to ping { :worker, worker }
on startup to allow the hook to configure itself accordingly.
This is kinda gross, but it does lend itself to backwards compatibility well.
defmodule MyModule.WorkerHook do
use Cachex.Hook
def init(args) when is_map(args) do
{ :ok, args }
end
def handle_modify({ :worker, worker }, state) do
{ :ok, Map.put(state, :worker, worker) }
end
def handle_notify(_action, state) do
{ :ok, IO.inspect(state) }
end
end
from cachex.
Ok I have this working now... I'll just neaten it up a bit and get a PR in. It's not the nicest interface, but I expect it to be less frequently used, so it shouldn't matter too much.
from cachex.
Hit a bug with overriding handle_call/2
to give myself access to handle_modify/2
(namely that it breaks too easily). For this reason, just going to provide changes to handle_call/2
and document well.
from cachex.
Related Issues (20)
- Does `Cachex.fetch` accept `ttl` option? HOT 4
- Supervisor.start_link/2 HOT 2
- Sending a message to `self()` when starting a warmer crashes app HOT 8
- [question][guidance] bulk increment with ttl HOT 3
- Using Cachex with Phoenix and iex HOT 4
- [Elixir 1.15] ** (MatchError) no match of right hand side value: {1, {:error, :no_cache}} HOT 3
- Cachex.fetch hangs and breaks my app HOT 13
- Cachex warmer breaks the application with "no match of right hand side value: {:error, :no_cache}" error HOT 11
- Possible bug in :cachex_notify event handling? HOT 1
- Using `ordered_set` type tables to back cache HOT 1
- qlc error - max limit cache eviction fails for no cwd write permissions HOT 3
- Consider upgrading provisions to support Warmers as well as Hooks HOT 1
- Warmer blocking should be enabled on cache, rather than individual warmers HOT 2
- Warmers should have names defined, rather than simply the module name
- The :transactional option should be renamed to :transactions
- Cachex.warm/2 should be able to flip between blocking vs. non-blocking
- Remove set and set_many from the public API
- Migrate from using jump hashing to libring
- Create an abstraction over cluster state and routing
- Improve documentation on distributed caches
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cachex.