-
Notifications
You must be signed in to change notification settings - Fork 289
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
dmctl 8.5.1 can not config export from 7.5.1 cluster #12067
Comments
I think this should either work, or there should be a version check when connecting to DM master. And maybe a version matrix in the docs? |
/cc @OliverS929 |
I will take a look. |
/assign OliverS929 |
This backward incompatibility was introduced in this pull request, which decoupled encryption from dmctl and introduced new RPC calls: Encrypt, ListTaskConfigs, and ListSourceConfigs. As a result, you are encountering the error:
However, to my knowledge, dmctl does not explicitly support backward compatibility. dmctl is tightly coupled with Additionally, the functionality provided by dmctl depends on support from DM instances. As such, I don’t foresee many use cases that would justify upgrading dmctl independently of the DM version. I would appreciate it if you could clarify the specific scenarios you have in mind. However, I agree with @dveeden that we should consider implementing a version check to prevent this type of error, as it could be confusing for users. /cc @alastori Please take a look and assess whether a version check is necessary for dmctl. |
I think for people managing multiple DM clusters it would be reasonable to expect these to be the current LTS version and one LTS version below that. So if you have say 10 DM clusters you upgrade one at a time. And if that doesn't work a 1-to-1 mapping between dmctl and dm master would be ok. |
Given that it is easy to run multiple dmctl versions via TiUP on the same machine, I'll assume it is not very disruptive to specify the target version explicitly (i.e., Must-have: Version check & clear error message I agree that we must implement a version check in dmctl and provide a clear, actionable error message when there is a version mismatch. The error should:
This will help prevent confusion and silent issues. Specific concern in cases of errors before connection I'm not sure if dmctl can perform the version check early enough before encountering protocol-related errors. In the case discussed here, it seems we can do it (before ListSourceConfigs). If not, at the very least, we should:
LTS compatibility discussion I acknowledge @dveeden's point that dmctl, as a client, should ideally support v(LTS) and v(LTS-1) for smoother multi-cluster management. However, due to dmctl's tight coupling with DM internals and dependencies, maintaining backward compatibility would require significant effort, which may not always be justified if we can avoid confusion with clear error messages and when the corrective action (specifying the correct version) is straightforward. Let me know your thoughts. |
@alastori I 100% agree with that |
The reason we were expecting backwards compatibility is that in all our previous upgrades, dmctl was able to talk to LTS and LTS-1 versions. We were caught off guard with 8.5.1 not having such capability. Curiously, dmctl 7.5.4 can talk to LTS, LTS-1 and LTS+1. This means that we don't have any logic in our "config export" tool to cross check dmctcl->dm-master versions. Going forward we will have to introduce version checking. In summary, I agree with @alastori:
|
Thank you for all the feedback—the scenarios described above are very insightful. Ideally, it would be beneficial to support version checks and backward compatibility. For version checks, we could introduce a dedicated RPC call before any existing RPC communication between For backward compatibility, we would need a structured versioning mechanism for RPC interfaces, in addition to the version validation mentioned above. This mechanism would have to be carefully designed, including a deprecation strategy to phase out outdated interface versions while minimizing legacy code accumulation. Implementing this would require dedicated planning and substantial effort. I’ll conduct a deeper investigation and evaluation of this issue to determine the best path forward. I’ll provide further updates as I gather more information. /cc @alastori |
What did you do?
We upgraded tiup dmctl from v.7.5.4 to v.8.5.1.
config export
from DM cluster running on 7.5.1 without problemsconfig export
from DM cluster running on 7.5.1What did you expect to see?
A successful backup of configs created:
export configs to directory `configs` succeed
What did you see instead?
An error and no task and source backup files were created.
Error: rpc error: code = Unimplemented desc = unknown method ListSourceConfigs for service pb.Master
Versions of the cluster
DM version (run
dmctl -V
ordm-worker -V
ordm-master -V
):How did you deploy DM: tiup or manually?
TiUP
current status of DM cluster (execute
query-status <task-name>
in dmctl)(paste current status of DM cluster here)
The text was updated successfully, but these errors were encountered: