Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HOST setting in app.ini incorrectly used. #24552

Closed
lelanthran opened this issue May 5, 2023 · 5 comments · Fixed by #27723
Closed

HOST setting in app.ini incorrectly used. #24552

lelanthran opened this issue May 5, 2023 · 5 comments · Fixed by #27723
Labels
good first issue Likely to be an easy fix hacktoberfest type/bug type/docs This PR mainly updates/creates documentation

Comments

@lelanthran
Copy link

Description

My app.ini file has the following line:

HOST = /var/run/postgresql/.s.PGSQL.27541

Gitea logs the following messages to syslog:

May 5 20:36:53 small-repo gitea[37607]: 2023/05/05 20:36:53 routers/common/db.go:34:InitDBEngine() [E] ORM engine initialization attempt #1/10 failed. Error: dial unix /var/run/postgresql/.s.PGSQL.27541/.s.PGSQL.5432: connect: not a directory

The documentation (over here) says:

HOST: 127.0.0.1:3306: Database host address and port or absolute path for unix socket [mysql, postgres] (ex: /var/run/mysqld/mysqld.sock).

When I change the app.ini to have only the directory name, it doesn't find the file .s.PGSQL.27541 (because postgresql creates the socket file based on the port that it is listening on, which in my installation is not the standard port).

HOST = /var/run/postgresql

Now the logs say:

May 5 20:44:51 small-repo gitea[38047]: 2023/05/05 20:44:51 routers/common/db.go:34:InitDBEngine() [E] ORM engine initialization attempt #1/10 failed. Error: dial unix /var/run/postgresql/.s.PGSQL.5432: connect: no such file or directory

As a temporary fix I have soft-linked the expected filename (.s.PGSQL.5432) to the actual file (.s.PGSQL.27541), and it works as expected when the file .s.PGSQL.5432 is soft-linked to the file created by postgresql.

The expected behaviour is what the documentation says, that the HOST value is used as-is, and gitea does not append the hardcoded .s.PGSQL.5432 to it.

The hardcoded value appears to be returned by parsePostgreSQLHostPort() in the port variable. The pq library function open() receives a string, and builds the final string by appending .s.PGSQL.<port>, which results in the incorrect filename being used.

Gitea Version

1.19.3

Can you reproduce the bug on the Gitea demo site?

No

Log Gist

n/a

Screenshots

n/a

Git Version

n/a

Operating System

Bullseye

How are you running Gitea?

Bullseye repo.

Database

PostgreSQL

@DanieleAurilio
Copy link

Hi @lelanthran ,
have you tried to use HOST = /var/run/postgresql:27541 ?
Here https://github.com/go-gitea/gitea/blob/main/modules/setting/database.go#L150 seems to use a custom port if declared after the ":".

@lunny
Copy link
Member

lunny commented Jul 27, 2023

Is this resolved?

@lelanthran
Copy link
Author

Sorry about taking so long to reply; I haven't tried the suggestion from @DanieleAurilio, I will try it and report back tomorrow.

My feeling is that, even if that works, that is different to what the documentation says should happen. If it works, maybe a new issue to change the documentation to match the behaviour?

@lelanthran
Copy link
Author

lelanthran commented Aug 17, 2023

Hello all, @DanieleAurilio, @lunny

The suggestion from @DanieleAurilio to use HOST = /var/run/postgresql:27541 worked. Can this (That local socket specification won't work by specifying the unix socket pathname) possibly be specified in the documentation?

Warm Regards
Lee

(Also, thanks @DanieleAurilio and @lunny for taking the time to respond)

@techknowlogick techknowlogick added type/docs This PR mainly updates/creates documentation good first issue Likely to be an easy fix hacktoberfest labels Aug 17, 2023
@Luisgustavom1
Copy link

Hello
I was very interested in solving this issue. But before implementing it I wanted to confirm what the correct behavior should be:

  1. Should the behavior be the same as in the doc? I think this is the right behavior. Because this way we avoid confusion like this, as well as allowing the user greater freedom and versatility in constructing HOST paths.

What do you maintainers think about this?

gaurangkudale added a commit to gaurangkudale/gitea that referenced this issue Oct 4, 2023
wxiaoguang pushed a commit that referenced this issue Nov 1, 2023
This patchset changes the connection string builder to use net.URL and
the host/port parser to use the stdlib function for splitting host from
port. It also adds a footnote about a potentially required portnumber
for postgres UNIX sockets.

Fixes: #24552
GiteaBot pushed a commit to GiteaBot/gitea that referenced this issue Nov 1, 2023
This patchset changes the connection string builder to use net.URL and
the host/port parser to use the stdlib function for splitting host from
port. It also adds a footnote about a potentially required portnumber
for postgres UNIX sockets.

Fixes: go-gitea#24552
silverwind pushed a commit that referenced this issue Nov 1, 2023
Backport #27723 by @mpldr

This patchset changes the connection string builder to use net.URL and
the host/port parser to use the stdlib function for splitting host from
port. It also adds a footnote about a potentially required portnumber
for postgres UNIX sockets.

Fixes: #24552

Co-authored-by: Moritz Poldrack <[email protected]>
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 17, 2023
fuxiaohei pushed a commit to fuxiaohei/gitea that referenced this issue Jan 17, 2024
This patchset changes the connection string builder to use net.URL and
the host/port parser to use the stdlib function for splitting host from
port. It also adds a footnote about a potentially required portnumber
for postgres UNIX sockets.

Fixes: go-gitea#24552
silverwind pushed a commit to silverwind/gitea that referenced this issue Feb 20, 2024
This patchset changes the connection string builder to use net.URL and
the host/port parser to use the stdlib function for splitting host from
port. It also adds a footnote about a potentially required portnumber
for postgres UNIX sockets.

Fixes: go-gitea#24552
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
good first issue Likely to be an easy fix hacktoberfest type/bug type/docs This PR mainly updates/creates documentation
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants