txn1 - CREATE INDEX CONCURRENTLY (takes ShareUpdateExclusiveLock) txn2 - VACUUM ANALYZE (waits on ShareUpdateExclusiveLock) tnx1 - waits for txn2 to complete in the second phase of CIC
deadlock!
Lazy VACUUM is safe because we don't include "inVacuum" transactions in the snapshot and hence don't wait for it in CIC. I haven't checked, but VACUUM FULL would also deadlock.
I think you may be describing a missed opportunity in that logic, more than a reason to add still another fragile assumption for HOT.
Not sure what you are referring to. But I shall keep this in mind.