Running gpstop causes Permission Denied error for coordinator directory
search cancel

Running gpstop causes Permission Denied error for coordinator directory

book

Article ID: 395922

calendar_today

Updated On:

Products

VMware Tanzu Data Suite VMware Tanzu Greenplum VMware Tanzu Greenplum / Gemfire

Issue/Introduction

[gpadmin@gpdatahost ~]$ gpstop -m
Traceback (most recent call last):
  File "/usr/local/greenplum-db-7.4.0/bin/gpstop", line 985, in <module>
    simple_main(GpStop.createParser, GpStop.createProgram, GpStop.mainOptions())
  File "/usr/local/greenplum-db-7.4.0/lib/python/gppylib/mainUtils.py", line 273, in simple_main
    simple_main_internal(createOptionParserFn, createCommandFn, mainOptions)
  File "/usr/local/greenplum-db-7.4.0/lib/python/gppylib/mainUtils.py", line 298, in simple_main_internal
    otherpid = sml.acquire()
  File "/usr/local/greenplum-db-7.4.0/lib/python/gppylib/mainUtils.py", line 172, in acquire
    self.pidfilepid = self.pidlockfile.read_pid()
  File "/usr/local/greenplum-db-7.4.0/lib/python/gppylib/mainUtils.py", line 107, in read_pid
    with open(self.PIDfile) as p:
PermissionError: [Errno 13] Permission denied: '/data/coordinator/gpseg-1/gpstop.lock/PID

Environment

Greenplum 6.x

Greenplum 7.x

Cause

This error is due to the current user session not having write permissions for the file at the path '/data/coordinator/gpseg-1/gpstop.lock/PID'. This usually occurs if gpstop or gpstart was run as root or with sudo. Although greenplum protects pg_ctl from starting as root in most causes, running gpstop may create lock artifacts under the ownership of the current user, which if run with 'sudo' would be root.

Resolution

Verify that all permissions in '/data/coordinator/gpseg-1' are owned by gpadmin or the database administrator:

[root@gpdatahost ~]# ls -halt /data/coordinator/gpseg-1/
total 11M
drwx------ 24 gpadmin gpadmin 4.0K Apr 30 01:01 .
drwx------  2 gpadmin gpadmin   80 Apr 30 01:01 pg_stat
drwx------  2 gpadmin gpadmin    6 Apr 30 01:01 pg_stat_tmp
drwxrwxr-x  2 gpadmin gpadmin 4.0K Apr 30 01:01 log
drwxr-xr-x  2 root    root      17 Apr 30 01:01 gpstop.lock
drwx------  4 gpadmin gpadmin   68 Apr 30 00:47 pg_logical
drwx------  2 gpadmin gpadmin 4.0K Apr 30 00:42 global
-rw-------  1 gpadmin gpadmin  911 Apr 30 00:42 gpsegconfig_dump
-rw-------  1 gpadmin gpadmin   38 Apr 30 00:42 current_logfiles
-rw-------  1 gpadmin gpadmin  100 Apr 30 00:42 postmaster.opts
drwx------  2 gpadmin gpadmin   18 Apr 30 00:42 pg_notify
-rw-------  1 gpadmin gpadmin 4.5K Apr 30 00:26 pg_hba.conf
drwx------  2 gpadmin gpadmin   18 Apr 17 12:23 pg_subtrans
drwx------  3 gpadmin gpadmin  172 Apr 17 12:23 pg_wal
-rw-------  1 gpadmin gpadmin 2.3K Apr 17 12:23 postgresql.auto.conf
-rw-------  1 gpadmin gpadmin  30K Apr 17 12:23 postgresql.conf
-rw-------  1 gpadmin gpadmin 4.5K Apr 17 12:20 pg_hba.conf.bkp
drwx------  3 gpadmin gpadmin  110 Apr 17 12:20 gpmetrics
drwx------  2 gpadmin gpadmin   80 Apr 17 12:20 pg_hba_archive
drwx------  2 gpadmin gpadmin   18 Apr 17 12:20 pg_distributedlog
drwx------  2 gpadmin gpadmin   18 Apr 17 12:20 pg_xact
drwx------  6 gpadmin gpadmin   54 Apr 17 12:20 base
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_commit_ts
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_dynshmem
drwx------  4 gpadmin gpadmin   36 Apr 17 12:20 pg_multixact
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_replslot
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_serial
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_snapshots
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_tblspc
drwx------  2 gpadmin gpadmin    6 Apr 17 12:20 pg_twophase
drwx------  3 gpadmin gpadmin   21 Apr 17 12:20 ..
-rw-------  1 gpadmin gpadmin  259 Mar 27 12:52 backup_label.old
-rw-------  1 gpadmin gpadmin 4.5K Mar 26 15:33 hba_after_restore.conf
-rw-rw-r--  1 gpadmin gpadmin  11M Mar 21 11:28 gpbackup_history.db
-rw-rw-r--  1 gpadmin gpadmin 5.3K Mar  6 14:59 pg_hba.conf.old
-rw-rw-r--  1 gpadmin gpadmin  860 Mar  5 17:02 gpssh.conf
-rw-------  1 gpadmin gpadmin   11 Mar  5 17:02 internal.auto.conf
-rw-------  1 gpadmin gpadmin 1.6K Mar  5 17:02 pg_ident.conf
-rw-------  1 gpadmin gpadmin    3 Mar  5 17:02 PG_VERSION

 

In the above case, we see that gpstop.lock is not owned by 'gpadmin', so we use root to set ownership to gpadmin.

[root@gpdatahost ~]# chown -R gpadmin. /data/coordinator/gpseg-1/gpstop.lock/


After the permissions are fixed, re-run gpstop