Comments (3)
Would this be purely quality of life, or would this be like an "atomic reload" where the clients would not see disruption in module commands?
We might get atomic reload for free if we just do the UNLOAD and LOAD synchronously on the main thread. I can see this being useful for operators to upgrade modules without needing to failover, supposing module LOAD and UNLOAD are quick.
from valkey.
We might get atomic reload for free if we just do the UNLOAD and LOAD synchronously on the main thread. I can see this being useful for operators to upgrade modules without needing to failover, supposing module LOAD and UNLOAD are quick.
You can do that today with multi + load + unload. Not sure we need a command for that. It's worth mentioning that UNLOAD was basically a QoL feature at the time. I don't know anyone that actually unloads in production. Adding RELOAD does allow one use case, which is allows reloading modules that can't unload (for example, modules that register a type can't be unloaded).
You could potentially also allow state handover. This would allow more efficient upgrades. There was other discussions about setting module private data, which could then be handed over.
from valkey.
RELOAD is an interesting idea, but I think it is more difficult to implement. In our production process, a very troublesome point is how to roll the instances of the module.
Due to many restrictions of unload, such as type, usedby, etc., in the production environment, the instances must be restarted to realize the rolling of the module, which will trigger the reload operation of the rdb.
At this stage, a better way is to implement the division of the module according to the function, such as the API module and the Data module. At this time, we can achieve the RELOAD capability by cutting the flow + UNLOAD + LOAD operation.
So, maybe what we need more is the best practice of how to design a Module, rather than a RELOAD method?
from valkey.
Related Issues (20)
- [Daily Test Failure] 12-master-reboot.tcl in test-sanitizer-address (clang)
- [Daily Test Failure] tests/unit/cluster/slot-migration.tcl in test-macos-latest
- Improve type safety of key embedding
- code usege of sds (and maybe other data types) HOT 1
- Add maxmemory-reserved-scale parameter to evict keys earlier HOT 2
- [NEW] WAIT ALL HOT 4
- [BUG] Example ACL for sentinel does not work HOT 1
- []Defrag level is calculated correctly HOT 1
- [NEW] Cluster support without special client bindings HOT 2
- [NEW] Opt-in for inclusive language (primary/replia in ROLE reply, CLUSTER SHARDS, etc.) HOT 4
- Regression from PR #445 Incorrectly Allows Slot Ownership Updates via Replica HOT 1
- Followup items from https://github.com/valkey-io/valkey/pull/758
- [NEW] Better branching strategy for Valkey HOT 10
- [Test Case Fail]External Server Tests HOT 3
- [BUG] nodes.conf can be corrupted when node is restarted before cluster shard ID stabilizes (for 7.2) HOT 8
- [BUG] CLUSTER SHARDS command returns "empty array" in slots section HOT 6
- [NEW] Can we add 'count' option to the 'RANDOMKEY' command? HOT 5
- [NEW] Nightly builds for Docker HOT 2
- Update rioconnwrite size from https://github.com/valkey-io/valkey/pull/60 HOT 5
- Missing Check for Sender's Config Epoch Before Accepting Primary Claim
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 valkey.