Skip to content

Add support for unix domain sockets (and peer authentication) #1192

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

Open
wants to merge 24 commits into
base: main
Choose a base branch
from

Conversation

mpilquist
Copy link
Member

@mpilquist mpilquist commented Mar 25, 2025

Adds support for connecting to the Postgres server via unix domain sockets.

Example usage:

Session.Builder[IO]
  .withUnixSockets
  .withUser("jimmy")
  .withDatabase("world")
  .single

The above configuration results in connecting via /tmp/.s.PGSQL.5432. Variations of withUnixSockets are supplied for customizing the path.

Supports both trust and peer authentication types.

TODO: Figure out how to test this with the current docker-compose based configuration

@mpilquist
Copy link
Member Author

I tried adding a test in c521068 but it fails on Mac w/ Colima due to permissions issues. The new container fails to start with this error:

025-03-25 12:57:24.774 UTC [49] LOG:  could not set permissions of file "/var/run/postgresql/.s.PGSQL.5432": Invalid argument
2025-03-25 12:57:24.774 UTC [49] WARNING:  could not create Unix-domain socket in directory "/var/run/postgresql"
2025-03-25 12:57:24.774 UTC [49] FATAL:  could not create any Unix-domain sockets
2025-03-25 12:57:24.782 UTC [49] LOG:  database system is shut down

Tried various things (e.g. changing fstype used by Colima, symlink nonsense, etc) without luck.

@@ -16,8 +16,7 @@ ThisBuild / developers := List(
ThisBuild / tlCiReleaseBranches += "series/0.6.x"
ThisBuild / tlCiScalafmtCheck := false
ThisBuild / tlSitePublishBranch := Some("series/0.6.x")
ThisBuild / githubWorkflowOSes := Seq("ubuntu-latest")
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't need this (anymore?)

Tests.Argument(TestFrameworks.MUnit, "--exclude-tags=" + excludedTags.mkString(","))
else Tests.Argument()
},
Test / baseDirectory := (ThisBuild / Test / run / baseDirectory).value
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make forked tests working directory be root of build instead of root of submodule

@codecov-commenter
Copy link

Codecov Report

Attention: Patch coverage is 52.17391% with 11 lines in your changes missing coverage. Please review.

Project coverage is 83.24%. Comparing base (a2c4f74) to head (7ca500b).
Report is 197 commits behind head on main.

Files with missing lines Patch % Lines
modules/core/shared/src/main/scala/Session.scala 50.00% 11 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1192      +/-   ##
==========================================
- Coverage   83.94%   83.24%   -0.70%     
==========================================
  Files         138      140       +2     
  Lines        2136     2238     +102     
  Branches      243      230      -13     
==========================================
+ Hits         1793     1863      +70     
- Misses        343      375      +32     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants