Jesse Tuglu
05/11/2026, 5:14 PMJesse Tuglu
05/11/2026, 5:21 PMGian Merlino
05/19/2026, 8:39 AMGian Merlino
05/19/2026, 8:40 AMJesse Tuglu
05/19/2026, 8:40 AMGian Merlino
05/19/2026, 8:41 AMJesse Tuglu
05/19/2026, 8:42 AMAbout the issues, with (1) what is the issue exactly? I don't quite followrealtime <--> historical handoff. Since query routing is not atomically tied to the set of servers being cloned, I'm pretty sure we cannot guarantee zero gaps in timeline for cutover queries (e.g. if you want to have new version of routers/brokers querying new historicals).
Jesse Tuglu
05/19/2026, 8:45 AMJesse Tuglu
05/19/2026, 8:45 AMGian Merlino
05/19/2026, 9:06 AMGian Merlino
05/19/2026, 9:08 AMGian Merlino
05/19/2026, 9:09 AMJesse Tuglu
05/19/2026, 9:10 AMGian Merlino
05/19/2026, 9:10 AMJesse Tuglu
05/19/2026, 9:13 AMJesse Tuglu
05/19/2026, 9:15 AMJesse Tuglu
05/19/2026, 9:19 AMGian Merlino
05/19/2026, 9:37 AMGian Merlino
05/19/2026, 9:39 AMJesse Tuglu
05/19/2026, 8:44 PManyway I think I get what you're getting atWhat do you mean? The handoff part?
Gian Merlino
05/19/2026, 8:57 PMJesse Tuglu
05/19/2026, 9:35 PMGian Merlino
05/19/2026, 11:35 PMJesse Tuglu
05/19/2026, 11:40 PMJesse Tuglu
05/19/2026, 11:40 PMJesse Tuglu
05/19/2026, 11:40 PMJesse Tuglu
05/19/2026, 11:42 PMdeploymentGroup would be analogous to a worker.version for MMs/overlordsJesse Tuglu
05/20/2026, 5:57 AMJesse Tuglu
05/20/2026, 8:46 PMJesse Tuglu
05/21/2026, 1:25 AMGian Merlino
05/21/2026, 7:01 AMdeploymentGroup could be a useful idea. It seems different enough from cloning that the features can both exist
> are you folks ensuring that between the time when a new historical comes up/announces itself and the coordinator dynamic config being updated, a segment doesn't get loaded onto the new historical
In general we're doing deployments at the level of the entire tier. Cloning is mainly being used as a way to ensure the replacement tier comes up balanced the same way as the old tier. As to segment availability, I believe we're only terminating the old tier once we're sure that the new tier is in steady state and has everything available. At this point the clone would have been deconfigured for some timeJesse Tuglu
05/21/2026, 7:04 AMAs to segment availability, I believe we're only terminating the old tier once we're sure that the new tier is in steady state and has everything available.Ah – I guess I was referring to boot-time, not terminate-time. For example, booting a new historical (before it is placed as a clone in coordinator dynamic config), coordinator will see new historical and will try to load segments/queries execute on it no?
Jesse Tuglu
05/21/2026, 7:05 AMJesse Tuglu
05/21/2026, 7:06 AMdeploymentGroup could be a useful idea. It seems different enough from cloning that the features can both exist
deploymentGroup can also be replicated with a combination of:
• Historical tier aliasing
• These configs (for controlling broker -> historical): https://druid.apache.org/docs/latest/operations/mixed-workloads/#restrict-broker-visibility-to-specific-tiers
• And custom routing logic for brokers based on service nameGian Merlino
05/21/2026, 7:11 AMcloneServers list before launching the new Historicals, using deterministic hostnamesJesse Tuglu
05/21/2026, 7:12 AMJesse Tuglu
05/21/2026, 7:17 AM1. spin up NEW ASGs
2. NEW brokers only watch/listen to NEW tiers (via druid.broker.segment.watchedTiers)
3. routers only query NEW brokers (via custom router logic)
4. update tier alias coordinator dynamic config with the new historical ASG versioned tiers
5. wait for segments to load
6. run query tee, etc. through the NEW routers/brokers, hitting NEW historicals, using the realtimeSegmentsMode=exclude to avoid hitting realtime tasks
7. enable NEW broker/router
8. disable OLD router/broker
9. update tier alias coordinator dynamic config to remove the OLD historical ASG versioned tiers
10. scale down OLD coordinator (force leadership change to NEW coordinator)
11. wait for things to stabilize
12. scale down OLD overlord (force leadership change to NEW coordinator)
13. drain tasks from OLD MMs
14. delete OLD historicals (alternatively this can be done much earlier, but putting last for completeness).
It's just using configs from a few places (IMO, it'd be nicer to abstract this into a single config, which was what that PR was trying to do).Jesse Tuglu
05/21/2026, 7:19 AMJesse Tuglu
05/21/2026, 7:42 AMdruid.version config for all Druid node types would be generally helpful on its own, not necessarily adding any extra logic initially.Abhishek Balaji Radhakrishnan
05/21/2026, 5:27 PM@Abhishek Balaji Radhakrishnan do you folks use the clone feature?We don't use this feature yet, but we plan to
LMK what you think; I suspect exposing aThe Druid servers expose aconfig for all Druid node types would be generally helpful on its own, not necessarily adding any extra logic initially.druid.version
version and buildRevision extracted from build artifacts automatically w/o a config: https://druid.apache.org/docs/latest/querying/sql-metadata-tables/#servers-table (and metric dimension) - would that suffice? a new server in the "green" group would effectively have a different version and/or build revision that's different from the servers in the "blue" group for major/minor Druid upgrades. We can pause deployments to validate deployments in the new fleet of servers before resuming an upgrade to reminder of the servers etc.
I was thinking it'd be helpful to also have a hash of the server properties (configSha) or so as well, but haven't thought about how we'd do thisJesse Tuglu
05/21/2026, 5:28 PMAbhishek Balaji Radhakrishnan
05/21/2026, 5:28 PMJesse Tuglu
05/21/2026, 5:29 PMAbhishek Balaji Radhakrishnan
05/21/2026, 5:30 PMJesse Tuglu
05/21/2026, 5:32 PMJesse Tuglu
05/21/2026, 5:32 PMJesse Tuglu
05/21/2026, 5:44 PMThe Druid servers expose aYeah – I think we can make a revision intoandversionextracted from build artifacts automatically w/o a config: https://druid.apache.org/docs/latest/querying/sql-metadata-tables/#servers-table (and metric dimension) - would that suffice? a new server in the "green" group would effectively have a different version and/or build revision that's different from the servers in the "blue" group for major/minor Druid upgrades.buildRevision
version (buildRevision seems a bit scary to use since you could be using same code commit but different configs, etc.)Jesse Tuglu
05/26/2026, 11:59 PMJesse Tuglu
05/27/2026, 12:07 AMJesse Tuglu
05/27/2026, 12:08 AMJesse Tuglu
05/27/2026, 12:10 AM