startup or recovery process. Since such a process isn't a real backend,
pgstat.c gets confused. This accounts for recent reports of strange
"invalid server process ID -1" log messages during crash recovery.
There isn't any point in attempting to make the report, since we'll discard
stats in such scenarios anyhow.
*/
FreeSpaceMapForgetRel(&rnode);
- /* Tell the stats collector to forget it immediately, too. */
- pgstat_drop_relation(rnode.relNode);
+ /*
+ * Tell the stats collector to forget it immediately, too. Skip this
+ * in recovery mode, since the stats collector likely isn't running
+ * (and if it is, pgstats.c will get confused because we aren't a real
+ * backend process).
+ */
+ if (!InRecovery)
+ pgstat_drop_relation(rnode.relNode);
/*
* And delete the physical files.