On Tue, Jul 7, 2020 at 12:55 PM Andres Freund <and...@anarazel.de> wrote: > What are you proposing? For now we could easily enough work around this > by just making it a on_proc_exit() callback, but that doesn't really > change the fundamental issue imo.
I think it would be more correct for it to be an on_proc_exit() callback, because before_shmem_exit() callbacks can and do perform actions which rely on an awful lot of the system being still in a working state. RemoveTempRelationsCallback() is a good example: it thinks it can start and end transactions and make a bunch of catalog changes. I don't know that any of that could use JIT, but moving the JIT cleanup to the on_shmem_exit() stage seems better. At that point, there shouldn't be anybody doing anything that relies on being able to perform logical changes to the database; we're just shutting down low-level subsystems at that point, and thus presumably not doing anything that could possibly need JIT. But I also agree that what pg_start_backup() was doing before v13 was wrong; that's why I committed 303640199d0436c5e7acdf50b837a027b5726594. The only reason I didn't back-patch it is because the consequences are so minor I didn't think it was worth worrying about. We could, though. I'd be somewhat inclined to both do that and also change LLVM to use on_proc_exit() in master, but I don't feel super-strongly about it. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company