Closed pinodeca closed 1 year ago
@aykut-bozkurt Can you please fill in each of the template sections in the description above?
@aykut-bozkurt thanks for the details, I have a few follow-up questions.
citus_add_node()
and start_metadata_sync_to_all_nodes()
?
Why are we implementing it? (sales eng)
Customers with very large clusters have problems adding new nodes to their clusters and upgrading above Citus 11.0, which introduced query from any node, due to memory problems during metadata sync.
What are the typical use cases?
Communication goals (e.g. detailed howto vs orientation)
Good locations for content in docs structure
citus.metadata_sync_mode
start_metadata_sync_to_all_nodes
there and mention about how it performs differently according to the GUC. Or just skip this and explain only the GUC.How does this work? (devs)
We added an alternative non-transactional mode to the current metadata sync which performs inside a single transaction. Single transaction mode causes issues since PG has a hard memory limit related to cache invalidations. But now, we can switch into non-transactional mode, which syncs the metadata via many transactions, if we have such a memory error.
Example sql
To add a new node:
To sync all the nodes:
Corner cases, gotchas
metadatasynced
as false at start of the non-transactional sync so that we would know that something went wrong during the sync.Are there relevant blog posts or outside documentation about the concept/feature?
Not yet. But I plan to publish a blog post.
Link to relevant commits and regression tests if applicable
You can see the related PR https://github.com/citusdata/citus/pull/6728 Regression tests: