Thread: could not rename temporary statistics file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or directory

Hello,

since I have enabled "stats_temp_directory = '/run/shm'" in
/etc/postgresql/9.1/main/postgresql.conf I get the following error:

2014-04-21 02:37:29 CEST LOG:  could not rename temporary statistics
file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or
directory

/var/run/shm# ls -rtl
-rw------- 1 postgres postgres 312211 Apr 22 11:31 pgstat.stat

There is no "/run/shm/pgstat.tmp" file but if I create it and change the
owner to postgres the file will be removed few minutes later.

How can explain and how can I solve this "error"?

Regards,
Basti





On 04/22/2014 02:39 AM, basti wrote:
> Hello,
>
> since I have enabled "stats_temp_directory = '/run/shm'" in
> /etc/postgresql/9.1/main/postgresql.conf I get the following error:
>
> 2014-04-21 02:37:29 CEST LOG:  could not rename temporary statistics
> file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or
> directory
>
> /var/run/shm# ls -rtl
> -rw------- 1 postgres postgres 312211 Apr 22 11:31 pgstat.stat
>
> There is no "/run/shm/pgstat.tmp" file but if I create it and change the
> owner to postgres the file will be removed few minutes later.
>
> How can explain and how can I solve this "error"?

Postgres does not have permissions on the directory. Give Postgres
permissions on the directory.

>
> Regards,
> Basti
>
>
>
>
>


--
Adrian Klaver
adrian.klaver@aklaver.com


When Postgres has no permission why "pgstat.stat" is created by postgres?
I have also try to create a file via su postgres -c "cd /run/shm/ &&
touch ...."

/run# ls -la shm
total 52
drwxrwxrwt  2 root     root       100 Apr 22 16:09 .
drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
-rw-r--r--  1 postgres postgres     0 Apr 22 16:09
file_create_as_postgres_user
-rw-------  1 postgres postgres 52658 Apr 22 16:09 pgstat.stat
-rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs

/run# ls -rtl | grep shm
drwxrwxrwt 2 root        root          80 Apr 22 16:02 shm

I think these permissions are enough.

Basti


On 22.04.2014 15:36, Adrian Klaver wrote:
> On 04/22/2014 02:39 AM, basti wrote:
>> Hello,
>>
>> since I have enabled "stats_temp_directory = '/run/shm'" in
>> /etc/postgresql/9.1/main/postgresql.conf I get the following error:
>>
>> 2014-04-21 02:37:29 CEST LOG:  could not rename temporary statistics
>> file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or
>> directory
>>
>> /var/run/shm# ls -rtl
>> -rw------- 1 postgres postgres 312211 Apr 22 11:31 pgstat.stat
>>
>> There is no "/run/shm/pgstat.tmp" file but if I create it and change the
>> owner to postgres the file will be removed few minutes later.
>>
>> How can explain and how can I solve this "error"?
>
> Postgres does not have permissions on the directory. Give Postgres
> permissions on the directory.
>
>>
>> Regards,
>> Basti
>>
>>
>>
>>
>>
>
>


On 04/22/2014 07:11 AM, basti wrote:
> When Postgres has no permission why "pgstat.stat" is created by postgres?
> I have also try to create a file via su postgres -c "cd /run/shm/ &&
> touch ...."
>
> /run# ls -la shm
> total 52
> drwxrwxrwt  2 root     root       100 Apr 22 16:09 .
> drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
> -rw-r--r--  1 postgres postgres     0 Apr 22 16:09
> file_create_as_postgres_user
> -rw-------  1 postgres postgres 52658 Apr 22 16:09 pgstat.stat
> -rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs
>
> /run# ls -rtl | grep shm
> drwxrwxrwt 2 root        root          80 Apr 22 16:02 shm
>
> I think these permissions are enough.

What distribution are you running?

Is it possible you have something like SELinux enabled that is intervening?

What does the system log show when the Postgres server throws the error?


>
> Basti
>
>
> On 22.04.2014 15:36, Adrian Klaver wrote:
>> On 04/22/2014 02:39 AM, basti wrote:
>>> Hello,
>>>
>>> since I have enabled "stats_temp_directory = '/run/shm'" in
>>> /etc/postgresql/9.1/main/postgresql.conf I get the following error:
>>>
>>> 2014-04-21 02:37:29 CEST LOG:  could not rename temporary statistics
>>> file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or
>>> directory
>>>
>>> /var/run/shm# ls -rtl
>>> -rw------- 1 postgres postgres 312211 Apr 22 11:31 pgstat.stat
>>>
>>> There is no "/run/shm/pgstat.tmp" file but if I create it and change the
>>> owner to postgres the file will be removed few minutes later.
>>>
>>> How can explain and how can I solve this "error"?
>>
>> Postgres does not have permissions on the directory. Give Postgres
>> permissions on the directory.
>>
>>>
>>> Regards,
>>> Basti
>>>
>>>
>>>
>>>
>>>
>>
>>
>
>


--
Adrian Klaver
adrian.klaver@aklaver.com


I use Debian 7, Postgres 9.1, Kernel 3.2.0-3-amd64
Syslog says nothing about postgres during this time.
SELinux is not installed/active.

I also found this (2 hours later) in the postgres log:

2014-04-22 11:01:42 CEST LOG:  could not open temporary statistics file
"/run/shm/pgstat.tmp": Permission denied

I don't understand what's going on there:

postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
ls -la /run/shm/
Tue Apr 22 17:08:41 CEST 2014
total 308
drwxrwxrwt  2 root     root         80 Apr 22 17:08 .
drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
-rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
-rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ touch
/run/shm/pgstat.tmp
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
ls -la /run/shm/
Tue Apr 22 17:08:55 CEST 2014
total 308
drwxrwxrwt  2 root     root        100 Apr 22 17:08 .
drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
-rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
-rw-r--r--  1 postgres postgres      0 Apr 22 17:08 pgstat.tmp
-rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
ls -la /run/shm/
Tue Apr 22 17:09:07 CEST 2014
total 52
drwxrwxrwt  2 root     root        80 Apr 22 17:09 .
drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
-rw-------  1 postgres postgres 52658 Apr 22 17:09 pgstat.stat
-rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$

Basti


On 22.04.2014 16:32, Adrian Klaver wrote:
> On 04/22/2014 07:11 AM, basti wrote:
>> When Postgres has no permission why "pgstat.stat" is created by postgres?
>> I have also try to create a file via su postgres -c "cd /run/shm/ &&
>> touch ...."
>>
>> /run# ls -la shm
>> total 52
>> drwxrwxrwt  2 root     root       100 Apr 22 16:09 .
>> drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
>> -rw-r--r--  1 postgres postgres     0 Apr 22 16:09
>> file_create_as_postgres_user
>> -rw-------  1 postgres postgres 52658 Apr 22 16:09 pgstat.stat
>> -rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs
>>
>> /run# ls -rtl | grep shm
>> drwxrwxrwt 2 root        root          80 Apr 22 16:02 shm
>>
>> I think these permissions are enough.
>
> What distribution are you running?
>
> Is it possible you have something like SELinux enabled that is intervening?
>
> What does the system log show when the Postgres server throws the error?
>
>
>>
>> Basti
>>
>>
>> On 22.04.2014 15:36, Adrian Klaver wrote:
>>> On 04/22/2014 02:39 AM, basti wrote:
>>>> Hello,
>>>>
>>>> since I have enabled "stats_temp_directory = '/run/shm'" in
>>>> /etc/postgresql/9.1/main/postgresql.conf I get the following error:
>>>>
>>>> 2014-04-21 02:37:29 CEST LOG:  could not rename temporary statistics
>>>> file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or
>>>> directory
>>>>
>>>> /var/run/shm# ls -rtl
>>>> -rw------- 1 postgres postgres 312211 Apr 22 11:31 pgstat.stat
>>>>
>>>> There is no "/run/shm/pgstat.tmp" file but if I create it and change
>>>> the
>>>> owner to postgres the file will be removed few minutes later.
>>>>
>>>> How can explain and how can I solve this "error"?
>>>
>>> Postgres does not have permissions on the directory. Give Postgres
>>> permissions on the directory.
>>>
>>>>
>>>> Regards,
>>>> Basti
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>


On 04/22/2014 08:13 AM, basti wrote:
> I use Debian 7, Postgres 9.1, Kernel 3.2.0-3-amd64
> Syslog says nothing about postgres during this time.
> SELinux is not installed/active.
>
> I also found this (2 hours later) in the postgres log:
>
> 2014-04-22 11:01:42 CEST LOG:  could not open temporary statistics file
> "/run/shm/pgstat.tmp": Permission denied
>
> I don't understand what's going on there:
>
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
> ls -la /run/shm/
> Tue Apr 22 17:08:41 CEST 2014
> total 308
> drwxrwxrwt  2 root     root         80 Apr 22 17:08 .
> drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
> -rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
> -rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ touch
> /run/shm/pgstat.tmp
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
> ls -la /run/shm/
> Tue Apr 22 17:08:55 CEST 2014
> total 308
> drwxrwxrwt  2 root     root        100 Apr 22 17:08 .
> drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
> -rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
> -rw-r--r--  1 postgres postgres      0 Apr 22 17:08 pgstat.tmp
> -rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
> ls -la /run/shm/
> Tue Apr 22 17:09:07 CEST 2014
> total 52
> drwxrwxrwt  2 root     root        80 Apr 22 17:09 .
> drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
> -rw-------  1 postgres postgres 52658 Apr 22 17:09 pgstat.stat
> -rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$


Hmm, not sure what is going on.

Some thoughts.

Is there more than one instance of Postgres on this machine and could
there be a conflict?

What happens if you point at another directory?


>
> Basti
>
>


--
Adrian Klaver
adrian.klaver@aklaver.com


On 22 April 2014 17:13, basti <mailinglist@unix-solution.de> wrote:
> 2014-04-22 11:01:42 CEST LOG:  could not open temporary statistics file
> "/run/shm/pgstat.tmp": Permission denied
>
> I don't understand what's going on there:
>
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
> ls -la /run/shm/
> Tue Apr 22 17:08:41 CEST 2014
> total 308
> drwxrwxrwt  2 root     root         80 Apr 22 17:08 .
> drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
> -rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
> -rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
> postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ touch
> /run/shm/pgstat.tmp

Is the postgres instance that is complaining really running as user postgres?
If you happen to have multiple postgres instances, chances are that
one is running as some user other than postgres. That would explain
why it can't modify those files.

--
If you can't see the forest for the trees,
Cut the trees and you'll see there is no forest.


I use Debian 7, Postgres 9.1, Kernel 3.2.0-3-amd64
Syslog says nothing about postgres during this time.
SELinux is not installed/active.

I also found this (2 hours later) in the postgres log:

2014-04-22 11:01:42 CEST LOG:  could not open temporary statistics file
"/run/shm/pgstat.tmp": Permission denied

I don't understand what's going on there:

postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
ls -la /run/shm/
Tue Apr 22 17:08:41 CEST 2014
total 308
drwxrwxrwt  2 root     root         80 Apr 22 17:08 .
drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
-rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
-rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ touch
/run/shm/pgstat.tmp
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
ls -la /run/shm/
Tue Apr 22 17:08:55 CEST 2014
total 308
drwxrwxrwt  2 root     root        100 Apr 22 17:08 .
drwxr-xr-x 20 root     root        660 Apr  8 11:15 ..
-rw-------  1 postgres postgres 314577 Apr 22 17:08 pgstat.stat
-rw-r--r--  1 postgres postgres      0 Apr 22 17:08 pgstat.tmp
-rw-r--r--  1 root     root          0 Oct 19  2012 .tmpfs
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$ date &&
ls -la /run/shm/
Tue Apr 22 17:09:07 CEST 2014
total 52
drwxrwxrwt  2 root     root        80 Apr 22 17:09 .
drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
-rw-------  1 postgres postgres 52658 Apr 22 17:09 pgstat.stat
-rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs
postgres@srv1:/home/postgresql_data/postgresql/9.1/main/pg_log$

Basti

On 22.04.2014 16:32, Adrian Klaver wrote:
> On 04/22/2014 07:11 AM, basti wrote:
>> When Postgres has no permission why "pgstat.stat" is created by postgres?
>> I have also try to create a file via su postgres -c "cd /run/shm/ &&
>> touch ...."
>>
>> /run# ls -la shm
>> total 52
>> drwxrwxrwt  2 root     root       100 Apr 22 16:09 .
>> drwxr-xr-x 20 root     root       660 Apr  8 11:15 ..
>> -rw-r--r--  1 postgres postgres     0 Apr 22 16:09
>> file_create_as_postgres_user
>> -rw-------  1 postgres postgres 52658 Apr 22 16:09 pgstat.stat
>> -rw-r--r--  1 root     root         0 Oct 19  2012 .tmpfs
>>
>> /run# ls -rtl | grep shm
>> drwxrwxrwt 2 root        root          80 Apr 22 16:02 shm
>>
>> I think these permissions are enough.
>
> What distribution are you running?
>
> Is it possible you have something like SELinux enabled that is intervening?
>
> What does the system log show when the Postgres server throws the error?
>
>
>>
>> Basti
>>
>>
>> On 22.04.2014 15:36, Adrian Klaver wrote:
>>> On 04/22/2014 02:39 AM, basti wrote:
>>>> Hello,
>>>>
>>>> since I have enabled "stats_temp_directory = '/run/shm'" in
>>>> /etc/postgresql/9.1/main/postgresql.conf I get the following error:
>>>>
>>>> 2014-04-21 02:37:29 CEST LOG:  could not rename temporary statistics
>>>> file "/run/shm/pgstat.tmp" to "/run/shm/pgstat.stat": No such file or
>>>> directory
>>>>
>>>> /var/run/shm# ls -rtl
>>>> -rw------- 1 postgres postgres 312211 Apr 22 11:31 pgstat.stat
>>>>
>>>> There is no "/run/shm/pgstat.tmp" file but if I create it and change
>>>> the
>>>> owner to postgres the file will be removed few minutes later.
>>>>
>>>> How can explain and how can I solve this "error"?
>>>
>>> Postgres does not have permissions on the directory. Give Postgres
>>> permissions on the directory.
>>>
>>>>
>>>> Regards,
>>>> Basti
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>