cloud-init icon indicating copy to clipboard operation
cloud-init copied to clipboard

Metadata fetched twice if cache invalid and BOOT event enabled

Open TheRealFalcon opened this issue 3 months ago • 2 comments

Any datasource that doesn't override check_instance_id will have cache invalidated every boot. This causes cloud-init to fetch IMDS data every boot. Any datasource whose default_update_events include EventType.BOOT will also fetch IMDS data every boot.

If both conditions are true for a datasource, the datasource will fetch IMDS data twice every boot. We should instead ensure that it is only fetched once.

We should also consider if we can have a better default implementation of check_instance_id. There's a bit of a chicken and egg problem in that we don't know for sure if cache should be invalidated until we get a new instance id, but we often can't know the instance id without querying the IMDS. check_instance_id allows us to define an IMDS-less way of checking this, but for datasources that can't rely on a local machine id, invalidating the entire cache every boot is a fairly heavy hammer.

TheRealFalcon avatar Mar 28 '24 18:03 TheRealFalcon