From: Michael Paquier [mailto:mich...@paquier.xyz]
> +   /* Does the backend own the temp schema? */
> +   if (proc->tempNamespaceId != namespaceID)
> +       return false;
> I have a very hard time believing that this is safe lock-less, and a spin
> lock would be enough it seems.

The lwlock in BackendIdGetProc() flushes the CPU cache so that 
proc->tempNamespaceId reflects the latest value.  Or, do you mean another 
spinlock elsewhere?


> +   /* Is the backend connected to this database? */
> +   if (proc->databaseId != MyDatabaseId)
> +       return false;
> Wouldn't it be more interesting to do this cleanup as well if the backend
> is *not* connected to the database autovacuum'ed?  This would make the
> cleanup more aggresive, which is better.

IIUC, the above code does what you suggest.  proc->databaseId is the database 
the client is connected to, and MyDatabaseId is the database being autovacuumed 
(by this autovacuum worker.)


Regards
Takayuki Tsunakawa




Reply via email to