The packages_raw gets reloaded. A lot. Every time a new set of packages is available from the FreeBSD packages table, data gets deleted and reloaded. So I manually vacuum the table. Well, it’s automated, as part of the code, but it doesn’t wait for the daily scripts.
I was seeing these errors on server r720-02:
2023-01-07 08:00:32.846 UTC [73161] WARNING: skipping "packages_raw" --- only table or database owner can analyze it 2023-01-07 08:00:32.846 UTC [73161] CONTEXT: SQL statement "analyze packages_raw"
I compared the permissions of the various database instances.
freshports.devgit=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+--------------------------------+-------------------+----------
public | packages_raw | table | packaging=arwdDxt/packaging +| |
| | | packager_dev=arwdDxt/packaging+| |
| | | rsyncer=r/packaging | |
(1 row)
freshports.testgit=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+--------------------------------+-------------------+----------
public | packages_raw | table | packaging=arwdDxt/packaging +| |
| | | packager_dev=arwdDxt/packaging+| |
| | | rsyncer=r/packaging | |
(1 row)
freshports.stagegit=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+--------------------------------+-------------------+----------
public | packages_raw | table | packaging=arwdDxt/packaging +| |
| | | packager_dev=arwdDxt/packaging+| |
| | | rsyncer=r/packaging | |
(1 row)
All the same on dev, test, and stage.
I should remove the explicit permissions for packager_dev on each of those databases. That user is a member of packaging.
Revoking extraneous permissions
As mentioned above, it’s time to remove those permissions:
freshports.testgit=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+--------------------------------+-------------------+----------
public | packages_raw | table | packaging=arwdDxt/packaging +| |
| | | packager_dev=arwdDxt/packaging+| |
| | | rsyncer=r/packaging | |
(1 row)
freshports.testgit=# revoke all ON packages_raw FROM packager_dev;
REVOKE
freshports.testgit=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+-----------------------------+-------------------+----------
public | packages_raw | table | packaging=arwdDxt/packaging+| |
| | | rsyncer=r/packaging | |
(1 row)
freshports.testgit=# commit;
COMMIT
That was repeated on stage and dev.
Compare with the nodes not in my basement
prod is not the same as above:
[aws-1 dan ~] % psql freshports.org
Password for user postgres:
psql (12.13, server 12.11)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
freshports.org=> \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+---------------------------+-------------------+----------
public | packages_raw | table | postgres=arwdDxt/postgres+| |
| | | rsyncer=r/postgres +| |
| | | packaging=arwd/postgres | |
(1 row)
freshports.org=>
x8dtu matched prod.
root@x8dtu-pg01:/ # psql -U postgres freshports.org
psql (13.9)
Type "help" for help.
freshports.org=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+---------------------------+-------------------+----------
public | packages_raw | table | postgres=arwdDxt/postgres+| |
| | | rsyncer=r/postgres +| |
| | | packaging=arwd/postgres | |
(1 row)
So did r720-02 (the host generating the messages in question).
[r720-02-pg01 dan ~] % psql -U postgres freshports.org
psql (13.9)
Type "help" for help.
freshports.org=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+---------------------------+-------------------+----------
public | packages_raw | table | postgres=arwdDxt/postgres+| |
| | | rsyncer=r/postgres +| |
| | | packaging=arwd/postgres | |
(1 row)
freshports.org=#
I noticed one difference: ownership.
This is dev, test, and stage:
freshports.stagegit=# \dt packages_raw
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+-----------
public | packages_raw | table | packaging
(1 row)
This is aws-1 (i.e. prod), x8dtu, and r720-02
freshports.org=> \dt packages_raw
List of relations
Schema | Name | Type | Owner
--------+--------------+-------+----------
public | packages_raw | table | postgres
(1 row)
I did this on aws-1, x8dtu, and r720-02:
ALTER TABLE public.packages_raw OWNER TO packaging; GRANT ALL ON TABLE public.packages_raw TO packaging;
The permissions on those hosts are now:
freshports.org=# \dp packages_raw
Access privileges
Schema | Name | Type | Access privileges | Column privileges | Policies
--------+--------------+-------+-----------------------------+-------------------+----------
public | packages_raw | table | packaging=arwdDxt/packaging+| |
| | | rsyncer=r/packaging | |
(1 row)
Now it matches dev, test, and stage.











