New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A way for in-place upgrade of a module (old version pass state to new version) #10325
Comments
maybe we should allow upgrades for modules with registered data types, |
@oranagra But what if the data struct of data types have been modified(i.g add new filed)? |
I think we should let the modules handle it (in many cases there's a bug fix in the code, but no changes in the data structures). |
IIUC, we are talking about modules hot upgrade? |
@chenyang8094 Yes. |
I'm not sure what scenarios require it, but in our production environment, both For the module hot upgrade of the running So, I don't think it's a strong requirement (maybe only for those modules that don't export data types), of course it would be best if it could be supported, but I think it would cost a lot. |
Yep, This is the most problematic part of it, so we need to limit the use of this feature. |
This may be a paradox, usually when a module can use |
@chenyang8094 Agree with you. |
yes, hot upgrade is complicated, and could in some cases be useful. maybe we should drop UNLOAD support... |
Modules vary greatly, so it's hard to refer to them as one thing. For a module with no data types, an in-place upgrade using Because of that, I'm not in favor of |
so when UNLOAD was created, it meant to reject cases where redis has pointers to the module's allocations. |
Now, if we need to upgrade a module, we need to
module unload
first, and thenmodule load
.But
module unload
will have some edge cases, which will cause crashes or illegal memory address references.In-place upgrades may solve this set of problems.
Ref: #4826, #10259
We will disable in-place upgrades under the following conditions, just as
module unload
does.Another question, if any command has been modified, do we need to disable the in-place upgrade.
The text was updated successfully, but these errors were encountered: