Re: LOG: could not rename temporary statistics file "pg_stat_tmp/global.tmp" to "pg_stat_tmp/global.stat"

From: Holger Jakobs <holger(at)jakobs(dot)com>
To: pgsql-admin(at)lists(dot)postgresql(dot)org
Subject: Re: LOG: could not rename temporary statistics file "pg_stat_tmp/global.tmp" to "pg_stat_tmp/global.stat"
Date: 2023-03-10 18:06:45
Message-ID: 74b84567-dc96-ae88-d7c0-61a600d8d575@jakobs.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin


Am 10.03.23 um 18:39 schrieb Erik Wienhold:
> I manage two Postgres instances (12.14 and 14.7) on a Windows 10
> server at work. Both instances are regular EnterpriseDB installations.
>
> Lately, I see the following log messages on both instances:
>
> 2023-03-07 02:37:08.171 CET [4624] LOG: could not rename temporary statistics file "pg_stat_tmp/global.tmp" to "pg_stat_tmp/global.stat": Permission denied
> 2023-03-07 02:37:11.874 CET [3656] LOG: using stale statistics instead of current ones because stats collector is not responding
>
> Both messages appear at irregular intervals. The first message every few
> minutes. The second message every few hours.
>
> The "permission denied" message apparently is caused by another process having
> an open file handle at the same time, likely some antivirus software scanning
> the system.
>
> What's the impact of this on Postgres, besides using stale statistics, if this
> does not get resolved? I assume the file will be renamed eventually once no
> other process has an open file handle and the statistics will eventually be
> refreshed.
>
> The log messages appeared after a server admin switched from Symantec Endpoint
> Protection to Cortex XDR. I had the admin exclude Postgres from the scan and
> they disabled Cortex XDR entirely. But the messages still appear, although
> less frequently. I doubt that Cortex XDR is fully disabled because it's still
> writing its event log. But its UI says disabled.
>
> The switch to Cortex XDR was triggered because something deleted pg_ctl.exe
> from my Postgres 14 instance. I still don't know what caused that. But the
> admin had the brilliant idea of replacing one snake oil with another. Maybe
> it's unrelated to the snake oil but I haven't received any further info on
> possible causes from the admin.
>
What is a bit problematic running PostgreSQL on Windows is that the
installer by EDB doesn't create a new system user 'postgres' like
ususally is done by the package systems on Linux systems making this
system user the owner all directories and files of the database clusters
with exclusive permissions.

Instead, the postgres.exe processes are run as an 'NT service', which is
also used by a lot of non-postgres processes. These processes have the
same permissions on Postgres' files as the Postgres processes.

When I set up a lot of PostgreSQL servers on Windows machines a couple
of years ago, I had a script create a special user for the database
system and also made this special user the owner of all files and
directories of the clusters.

I am afraid that some non-postgres process might have meddled with the
Postgres cluster causing trouble.

Maybe you can check ownership and permissions of the respective files.
Unfortunately, the permissions system on Windows is far more complex
than the one on Linux with just user owner, group owner and the
permissions r, w and x.

Kind Regards,

Holger

--
Holger Jakobs, Bergisch Gladbach, Tel. +49-178-9759012

In response to

Responses

Browse pgsql-admin by date

  From Date Subject
Next Message Alexey Murz Korepov 2023-03-11 18:23:43 Ways to change a database collation with removing duplicates
Previous Message Erik Wienhold 2023-03-10 17:39:40 LOG: could not rename temporary statistics file "pg_stat_tmp/global.tmp" to "pg_stat_tmp/global.stat"