mirror of
https://github.com/scylladb/scylladb.git
synced 2026-06-01 04:26:48 +00:00
If we're upgrading from an older version with the previous CDC streams format, we'll upgrade it in the background. Background update is needed since we need the cluster to be available when performing the upgrade, but at this point we're just starting a node, and may not succeed in forming a cluster before we shut down. However, running in the background is dangerous since the objects we use may stop existing. The code is careful to use reference counting, but this does not guarantee that other dependencies are still alive, especially since not all dependencies are expressed via constructor parameters. Fix by waiting for the rewrite work in generation_service::stop(). As long as generation_service is up, the required dependencies should be working too. Note that there is another change here besides limiting the background work: checks that were previously done in the foreground (limited to local tables) are now also done in the background. I don't think this has any impact. Note: I expect this to have no real impact. Any CDC users will have long since ugpraded. This is just preparing for other patches that bring in other dependencies, which cannot be passed via reference counted pointers, so they expose the existing problem.