Lev Kokotov
b167de5aa3
fmt ( #480 )
2023-06-17 08:57:33 -07:00
Juraj Bubniak
473bb3d17d
Log not implemented messages as debug in prometheus metrics. ( #477 )
2023-06-16 18:48:38 -07:00
Lev Kokotov
c7d6273037
Support for prepared statements ( #474 )
...
* Start prepared statements
* parse
* Ok
* optional
* dont rewrite anonymous prepared stmts
* Dont rewrite anonymous prep statements
* hm?
* prep statements
* I see!
* comment
* Print config value
* Rewrite bind and add sqlx test
* fmt
* ok
* Fix
* Fix stats
* its late
* clean up PREPARE
2023-06-16 12:57:44 -07:00
Jeff Chen
94c781881f
Report min_pool_size correctly ( #471 )
2023-06-12 09:23:56 -07:00
dependabot[bot]
a8c81e5df6
chore(deps): bump pin-project from 1.0.12 to 1.1.0 ( #440 )
...
Bumps [pin-project](https://github.com/taiki-e/pin-project ) from 1.0.12 to 1.1.0.
- [Release notes](https://github.com/taiki-e/pin-project/releases )
- [Changelog](https://github.com/taiki-e/pin-project/blob/main/CHANGELOG.md )
- [Commits](https://github.com/taiki-e/pin-project/compare/v1.0.12...v1.1.0 )
---
updated-dependencies:
- dependency-name: pin-project
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:51:24 -07:00
dependabot[bot]
1d3746ec9e
chore(deps): bump sqlparser from 0.33.0 to 0.34.0 ( #448 )
...
Bumps [sqlparser](https://github.com/sqlparser-rs/sqlparser-rs ) from 0.33.0 to 0.34.0.
- [Changelog](https://github.com/sqlparser-rs/sqlparser-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/sqlparser-rs/sqlparser-rs/compare/v0.33.0...v0.34.0 )
---
updated-dependencies:
- dependency-name: sqlparser
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:51:05 -07:00
dependabot[bot]
b5489dc1e6
chore(deps): bump regex from 1.8.1 to 1.8.4 ( #466 )
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.8.1 to 1.8.4.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/compare/1.8.1...1.8.4 )
---
updated-dependencies:
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:50:46 -07:00
dependabot[bot]
557b425fb1
chore(deps): bump log from 0.4.17 to 0.4.19 ( #470 )
...
Bumps [log](https://github.com/rust-lang/log ) from 0.4.17 to 0.4.19.
- [Release notes](https://github.com/rust-lang/log/releases )
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/log/compare/0.4.17...0.4.19 )
---
updated-dependencies:
- dependency-name: log
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-12 00:50:26 -07:00
Zain Kabani
aca9738821
Make queue strategy configurable and default to Fifo ( #463 )
...
* Change idle timeout default to 10 minutes
* Revert lifo for now while we investigate connection thrashing issues
* Make queue strategy configurable
* test revert idle time out
* Add pgcat start to python test
2023-06-09 11:35:20 -07:00
Zain Kabani
0bc453a771
Change default server lifetime and bump bb8 version to use LIFO correctly ( #462 )
...
Change default server lifetime and idle timeouts and bump bb8 version to use LIFO correctly
2023-05-31 08:25:42 -07:00
Zain Kabani
b67c33b6d0
Use latest bb8 and use Lifo as the queue strategy in the pool ( #455 )
...
* Use git bb8
* Use latest bb8 and change pool is use stack
2023-05-28 19:46:13 -07:00
Mostafa Abdelraouf
a8a30ad43b
Refactor Pool Stats to be based off of Server/Client stats ( #445 )
...
What is wrong
Stats reported by SHOW POOLS seem to be leaking. We see lingering cl_idle , cl_waiting, and similarly for sv_idle , sv_active. We confirmed that these are reporting issues not actual lingering clients.
This behavior is readily reproducible by running
while true; do
psql "postgres://sharding_user:sharding_user@localhost:6432/sharded_db" -c "SELECT 1" > /dev/null 2>&1 &
done
Why it happens
I wasn't able to get to figure our the reason for the bug but my best guess is that we have race conditions when updating pool-level stats. So even though individual update operations are atomic, we perform a check then update sequence which is not protected by a guard.
https://github.com/postgresml/pgcat/blob/main/src/stats/pool.rs#L174-L179
I am also suspecting that using Relaxed ordering might allow this behavior (I changed all operations to use Ordering::SeqCst but still got lingering clients)
How to fix
Since SHOW POOLS/SHOW SERVER/SHOW CLIENTS all show the current state of the proxy (as opposed to SHOW STATS which show aggregate values), this PR refactors SHOW POOLS to have it construct the results directly from SHOW SERVER and SHOW CLIENT datasets. This reduces the complexity of stat updates and eliminates the need for having locks when updating pool stats as we only care about updating individual client/server states.
This will change the semantics of maxwait, so instead of it holding the maxwait time ever encountered by a client (connected or disconnected), it will only consider connected clients which should be okay given PgCat tends to hold on to client connections more than Pgbouncer.
2023-05-23 08:44:49 -05:00
dependabot[bot]
d63be9b93a
chore(deps): bump toml from 0.7.3 to 0.7.4 ( #447 )
...
Bumps [toml](https://github.com/toml-rs/toml ) from 0.7.3 to 0.7.4.
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.7.3...toml-v0.7.4 )
---
updated-dependencies:
- dependency-name: toml
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-19 08:58:13 -07:00
Lev Kokotov
100778670c
Ensure data makes it to the client ( #446 )
...
* Ensure data makes it to the client
* flush all buffers
2023-05-18 16:41:22 -07:00
Lev Kokotov
37e3349c24
Optionally clean up server connections ( #444 )
...
* Optionally clean up server connections
* move setting to pool
* fix test
* Print setting to screen
* fmt
* Fix pool_settings override in tests
2023-05-18 10:46:55 -07:00
Zain Kabani
7f57a89d75
Fix time based average stats ( #442 )
...
* keep track of current stats and zero them after updating averages
* Try tests
* typo
* remove commented test stuff
* Avoid dividing by zero
* Fix test
* refactor, get rid of iterator. do it manually
* trigger build
* Fix
2023-05-17 21:38:10 -07:00
Lev Kokotov
0898461c01
Allow to deploy pools without checking ( #438 )
2023-05-12 12:48:37 -07:00
Lev Kokotov
52b1b43850
Prewarmer ( #435 )
...
* Prewarmer
* hmm
* Tests
* default
* fix test
* Correct configuration
* Added minimal config example
* remove connect_timeout
2023-05-12 09:50:52 -07:00
Zain Kabani
0907f1b77f
Improve logging for connection cleanup ( #428 )
...
* initial commit
* fix
* fmt
2023-05-11 17:40:10 -07:00
Zain Kabani
73260690b0
Fixes average stats bug ( #436 )
...
* Add test
* Fix test
* Add fix
2023-05-11 17:37:58 -07:00
Mostafa Abdelraouf
5056cbe8ed
Fix docker-compose dev stack for Apple silicon ( #432 )
...
The docker-compose dev setup is broken under Apple silicon, starting the stack fails with the following error. Switching to a different docker image fixes the issue.
2023-05-10 10:24:35 -05:00
Lev Kokotov
571b02e178
Calculate averages correctly and preserve totals like before ( #429 )
...
* Reset totals after avg calculation
* like it used to be
2023-05-08 10:06:16 -07:00
Andrew Tanner
159eb89bf0
First try with role reset ( #427 )
...
* First try with role rest
* update
* extra line
* Update src/server.rs
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
* Update tests/ruby/misc_spec.rb
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
---------
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
2023-05-05 15:31:27 -07:00
Lev Kokotov
389993bf3e
Accurate log messages ( #425 )
2023-05-05 08:27:19 -07:00
Lev Kokotov
ba5243b6dd
Optionally validate config on boot ( #423 )
2023-05-03 17:07:23 -07:00
Lev Kokotov
128ef72911
lowercase config query ( #422 )
...
* lowercase config query
* remove debug
2023-05-03 16:47:20 -07:00
Lev Kokotov
811885f464
Actually plugins ( #421 )
...
* more plugins
* clean up
* fix tests
* fix flakey test
2023-05-03 16:13:45 -07:00
dependabot[bot]
d5e329fec5
chore(deps): bump regex from 1.8.0 to 1.8.1 ( #413 )
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.8.0 to 1.8.1.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/commits/1.8.1 )
---
updated-dependencies:
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-03 10:00:05 -07:00
Lev Kokotov
09e54e1175
Plugins! ( #420 )
...
* Some queries
* Plugins!!
* cleanup
* actual names
* the actual plugins
* comment
* fix tests
* Tests
* unused errors
* Increase reaper rate to actually enforce settings
* ok
2023-05-03 09:13:05 -07:00
dependabot[bot]
23819c8549
chore(deps): bump rustls from 0.21.0 to 0.21.1 ( #419 )
...
Bumps [rustls](https://github.com/rustls/rustls ) from 0.21.0 to 0.21.1.
- [Release notes](https://github.com/rustls/rustls/releases )
- [Changelog](https://github.com/rustls/rustls/blob/main/RELEASE_NOTES.md )
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.0...v/0.21.1 )
---
updated-dependencies:
- dependency-name: rustls
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-05-02 07:32:44 -07:00
Jose Fernández
7dfbd993f2
Add dns_cache for server addresses as in pgbouncer ( #249 )
...
* Add dns_cache so server addresses are cached and invalidated when DNS changes.
Adds a module to deal with dns_cache feature. It's
main struct is CachedResolver, which is a simple thread safe
hostname <-> Ips cache with the ability to refresh resolutions
every `dns_max_ttl` seconds. This way, a client can check whether its
ip address has changed.
* Allow reloading dns cached
* Add documentation for dns_cached
2023-05-02 10:26:40 +02:00
Lev Kokotov
3601130ba1
Readme update ( #418 )
...
* Readme update
* m
* wording
2023-04-30 09:44:25 -07:00
Lev Kokotov
0d504032b2
Server TLS ( #417 )
...
* Server TLS
* Finish up TLS
* thats it
* diff
* remove dead code
* maybe?
* dirty shutdown
* skip flakey test
* remove unused error
* fetch config once
2023-04-30 09:41:46 -07:00
Lev Kokotov
4a87b4807d
Add more pool settings ( #416 )
...
* Add some pool settings
* fmt
2023-04-26 16:33:26 -07:00
Shawn
cb5ff40a59
fix typo ( #415 )
...
chore: typo
2023-04-26 08:28:54 -07:00
dependabot[bot]
62b2d994c1
chore(deps): bump regex from 1.7.3 to 1.8.0 ( #411 )
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.7.3 to 1.8.0.
- [Release notes](https://github.com/rust-lang/regex/releases )
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/regex/commits )
---
updated-dependencies:
- dependency-name: regex
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-21 06:33:52 -07:00
Lev Kokotov
66805d7e77
README updates ( #409 )
...
* Better table
* add image
* promote auth passthrough to stable
* fmt
2023-04-20 07:53:55 -07:00
Lev Kokotov
4ccc1e7fa3
Fix CONFIG ( #408 )
...
Fix readme
2023-04-19 07:45:26 -07:00
Lev Kokotov
3dae3d0777
Separate server and client passwords optionally ( #407 )
...
* Separate server and user passwords
* config
2023-04-18 09:57:17 -07:00
dependabot[bot]
a18eb42df5
chore(deps): bump serde from 1.0.159 to 1.0.160 ( #404 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.159 to 1.0.160.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.159...v1.0.160 )
---
updated-dependencies:
- dependency-name: serde
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-14 10:25:00 -07:00
dependabot[bot]
6aacf1fa19
chore(deps): bump serde_derive from 1.0.159 to 1.0.160 ( #403 )
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.159 to 1.0.160.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.159...v1.0.160 )
---
updated-dependencies:
- dependency-name: serde_derive
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-14 10:24:52 -07:00
dependabot[bot]
8e99e65215
chore(deps): bump sqlparser from 0.32.0 to 0.33.0 ( #399 )
...
Bumps [sqlparser](https://github.com/sqlparser-rs/sqlparser-rs ) from 0.32.0 to 0.33.0.
- [Release notes](https://github.com/sqlparser-rs/sqlparser-rs/releases )
- [Changelog](https://github.com/sqlparser-rs/sqlparser-rs/blob/main/CHANGELOG.md )
- [Commits](https://github.com/sqlparser-rs/sqlparser-rs/compare/v0.32.0...v0.33.0 )
---
updated-dependencies:
- dependency-name: sqlparser
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-14 10:24:44 -07:00
dependabot[bot]
5dfbc102a9
chore(deps): bump hyper from 0.14.25 to 0.14.26 ( #406 )
...
Bumps [hyper](https://github.com/hyperium/hyper ) from 0.14.25 to 0.14.26.
- [Release notes](https://github.com/hyperium/hyper/releases )
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.26/CHANGELOG.md )
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.25...v0.14.26 )
---
updated-dependencies:
- dependency-name: hyper
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-14 10:23:52 -07:00
Cluas
bae12fca99
feat: set keepalive for pgcat server itself ( #402 )
...
* feat: set keepalive for pgcat server self
* docs: note also set for client
2023-04-12 09:29:43 -07:00
Lev Kokotov
421c5d4b64
Load config on client connect ( #401 )
2023-04-11 10:32:48 -07:00
Kian-Meng Ang
d568739db9
Fix typos ( #398 )
...
Found via `typos --format brief`
2023-04-10 18:37:16 -07:00
Lev Kokotov
692353c839
A couple things ( #397 )
...
* Format cleanup
* fmt
* finally
2023-04-10 14:51:01 -07:00
Lev Kokotov
a62f6b0eea
Fix port; add user pool mode ( #395 )
...
* Fix port; add user pool mode
* will probably break our session/transaction mode tests
2023-04-05 15:06:19 -07:00
dependabot[bot]
89e15f09b5
chore(deps): bump tokio-rustls from 0.23.4 to 0.24.0 ( #394 )
...
Bumps [tokio-rustls](https://github.com/tokio-rs/tls ) from 0.23.4 to 0.24.0.
- [Release notes](https://github.com/tokio-rs/tls/releases )
- [Commits](https://github.com/tokio-rs/tls/commits )
---
updated-dependencies:
- dependency-name: tokio-rustls
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-02 23:00:09 -07:00
Mostafa Abdelraouf
7ddd23b514
Protocol-level test helpers ( #393 )
...
I needed to have granular control over protocol message testing. For example, being able to send protocol messages one-by-one and then be able to inspect the results.
In order to do that, I created this low-level ruby client that can be used to send protocol messages in any order without blocking and also allows inspection of response messages.
2023-04-01 15:27:57 -05:00