forkjo/models/db
Michael Kriese 849de07064 feat(xorm): add max idle time setting for db connections (#2418)
Add a new optional `CONN_MAX_IDLETIME`[^1]

This allows to set the `SetConnMaxIdleTime` on `database/sql`.
It's useful to allow to close more idle connections to reduce database connections, especially on postgresql.
For me i would like to use it to set a higher max idle connections but they will all be closed after being idle.
So also the last idle connection will be closed when there is no load on forgejo.
I also use it with max connection lifetime, because currently `database/sql` doesn't detect a postgresql master change[^2] and i'll get `[E] can't update runner status: pq: cannot execute UPDATE in a read-only transaction`[^3] on forgejo until the connection is closed.

[^1]: https://pkg.go.dev/database/sql#DB.SetConnMaxIdleTime
[^2]: https://stackoverflow.com/questions/51858659/how-to-safely-discard-golang-database-sql-pooled-connections-for-example-when-t
[^3]: https://matrix.to/#/!zpNKWqkiEOyljSMQDK:matrix.org/$_AJft_amsGn5hXGOYw75JoBJQnW3aKJEpb-Iw53L_TU?via=schinas.net&via=matrix.org&via=nitro.chat

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/2418
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
2024-02-21 12:17:16 +00:00
..
install Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
paginator Move more functions to db.Find (#28419) 2024-01-15 02:19:25 +00:00
collation.go Recommend/convert to use case-sensitive collation for MySQL/MSSQL (#28662) 2024-01-10 11:03:23 +00:00
common.go Fix NuGet search endpoints (#25613) 2023-08-14 02:50:55 +00:00
consistency.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
context.go Refactor deletion (#28610) 2023-12-25 21:25:29 +01:00
context_committer_test.go Fix halfCommitter and WithTx (#22366) 2023-01-09 12:19:19 -05:00
context_test.go Always reuse transaction (#22362) 2023-01-08 09:34:58 +08:00
convert.go Recommend/convert to use case-sensitive collation for MySQL/MSSQL (#28662) 2024-01-10 11:03:23 +00:00
engine.go feat(xorm): add max idle time setting for db connections (#2418) 2024-02-21 12:17:16 +00:00
engine_test.go [TESTS] add log.Level to test.NewLogChecker 2024-02-05 16:54:44 +01:00
error.go Refactor deletion (#28610) 2023-12-25 21:25:29 +01:00
index.go Fix index generation parallelly failure (#25235) 2023-06-15 02:14:43 +02:00
index_test.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
iterate.go refactor: make db iterate context aware (#27710) 2023-10-21 10:05:29 +08:00
iterate_test.go Remove GetByBean method because sometimes it's danger when query condition parameter is zero and also introduce new generic methods (#28220) 2023-12-07 15:27:36 +08:00
list.go Fix joins in db.Find(AndCount) (#28978) 2024-01-30 02:37:24 +00:00
list_test.go Use db.Find instead of writing methods for every object (#28084) 2023-11-24 03:49:41 +00:00
log.go Replace interface{} with any (#25686) 2023-07-04 18:36:08 +00:00
main_test.go make writing main test easier (#27270) 2023-09-28 01:38:53 +00:00
name.go Implement FSFE REUSE for golang files (#21840) 2022-11-27 18:20:29 +00:00
search.go Split lfs size from repository size (#22900) 2023-06-28 22:41:02 +00:00
sequence.go Refactor setting.Database.UseXXX to methods (#23354) 2023-03-07 18:51:06 +08:00
sql_postgres_with_schema.go Fix .golangci.yml (#22868) 2023-02-11 21:44:53 +00:00