Thread: Issue with clusters with '-' in the name

Issue with clusters with '-' in the name

From
David Peall
Date:
Hi

pc_ctlcluseter doesn’t work with cluster names containing ‘-‘ the latest version of postgres from
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

Steps to reproduce the error:
pg_createcluster 9.5 test-dash
pg_ctlcluster 9.5 test-dash start - doesn’t work

This works fine:
pg_createcluster 9.5 withoutdash
pg_ctlcluster 9.5 withoutdash start

OS’s tested Ubuntu 15.10 and 16.04 beta both exhibit this issue.

Regards
—
David Peall


Re: Issue with clusters with '-' in the name

From
Christoph Berg
Date:
Re: David Peall 2016-04-19 <E7F3EFD1-82A2-47BB-833D-EFA6BBD66969@dnservices.co.za>
> Hi
>
> pc_ctlcluseter doesn’t work with cluster names containing ‘-‘ the latest version of postgres from
> deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main
>
> Steps to reproduce the error:
> pg_createcluster 9.5 test-dash
> pg_ctlcluster 9.5 test-dash start - doesn’t work

Hi,

that's a known issue with the systemd integration:

$ head -4 /lib/systemd/system/postgresql\@.service
# systemd service template for PostgreSQL clusters. The actual instances will
# be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
# variable %i expands to "version-cluster", %I expands to "version/cluster".
# (%I breaks for cluster names containing dashes.)

Since postgresql-common 171 (18 Dec 2015) you should get a warning when
creating clusters with dashes in the name.

Could you verify which postgresql-common version you have there?

Christoph


Re: Issue with clusters with '-' in the name

From
Christoph Berg
Date:
Re: David Peall 2016-04-19 <57359EF6-B59F-4300-85A8-EEB4CF73489A@dnservices.co.za>
> > $ head -4 /lib/systemd/system/postgresql\@.service
> > # systemd service template for PostgreSQL clusters. The actual instances will
> > # be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
> > # variable %i expands to "version-cluster", %I expands to "version/cluster".
> > # (%I breaks for cluster names containing dashes.)
> >
> > Since postgresql-common 171 (18 Dec 2015) you should get a warning when
> > creating clusters with dashes in the name.
>
> I do get the following warning:
> Warning: cluster names containing dashes (-) will cause problems when running from systemd. Continuing anyway

Thanks.

As said in the comment in postgresql@.service, there's unfortunately
not too much we can do about it. The problem is in this line:

ConditionPathExists=/etc/postgresql/%I/postgresql.conf

If you need clusters with dashes in the name, remove this line from
the .service file. (The downside is that you can then start services
called postgresql@what-ever and end up with "failed" bogus services.)

Christoph


Re: Issue with clusters with '-' in the name

From
David Peall
Date:
> On 19 Apr 2016, at 4:06 PM, Christoph Berg <myon@debian.org> wrote:
>
> Re: David Peall 2016-04-19 <57359EF6-B59F-4300-85A8-EEB4CF73489A@dnservices.co.za>
>>> $ head -4 /lib/systemd/system/postgresql\@.service
>>> # systemd service template for PostgreSQL clusters. The actual instances will
>>> # be called "postgresql@version-cluster", e.g. "postgresql@9.3-main". The
>>> # variable %i expands to "version-cluster", %I expands to "version/cluster".
>>> # (%I breaks for cluster names containing dashes.)
>>>
>>> Since postgresql-common 171 (18 Dec 2015) you should get a warning when
>>> creating clusters with dashes in the name.
>>
>> I do get the following warning:
>> Warning: cluster names containing dashes (-) will cause problems when running from systemd. Continuing anyway
>
> Thanks.
>
> As said in the comment in postgresql@.service, there's unfortunately
> not too much we can do about it. The problem is in this line:
>
> ConditionPathExists=/etc/postgresql/%I/postgresql.conf
>
> If you need clusters with dashes in the name, remove this line from
> the .service file. (The downside is that you can then start services
> called postgresql@what-ever and end up with "failed" bogus services.)
>
> Christoph


Where is the expansion done into %i and %I ?  I notice that the following works:
systemctl start postgresql@9.5/main

Regards
—
David Peall

Re: Issue with clusters with '-' in the name

From
Christoph Berg
Date:
Re: David Peall 2016-04-19 <EA86466E-8639-4981-BA83-9516E6D0AE3D@dnservices.co.za>
> Where is the expansion done into %i and %I ?  I notice that the following works:
> systemctl start postgresql@9.5/main

In that context, both are actually the same:
# systemctl status postgresql@9.5/main| cat
● postgresql@9.5-main.service - PostgreSQL Cluster 9.5-main

In the config, %i expands to thing-with-all-slashes-converted-to-dashes
and %I expands to thing-with-all-dashes-converted-to-slashes (where
"thing" is the part after @). It's a bit weird..

Christoph