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
dependabot[bot]
faa9c1f64a
chore(deps): bump futures from 0.3.27 to 0.3.28 ( #392 )
...
Bumps [futures](https://github.com/rust-lang/futures-rs ) from 0.3.27 to 0.3.28.
- [Release notes](https://github.com/rust-lang/futures-rs/releases )
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.27...0.3.28 )
---
updated-dependencies:
- dependency-name: futures
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-03-31 09:35:01 -07:00
dependabot[bot]
9094988491
chore(deps): bump postgres-protocol from 0.6.4 to 0.6.5 ( #391 )
...
Bumps [postgres-protocol](https://github.com/sfackler/rust-postgres ) from 0.6.4 to 0.6.5.
- [Release notes](https://github.com/sfackler/rust-postgres/releases )
- [Commits](https://github.com/sfackler/rust-postgres/compare/postgres-protocol-v0.6.4...postgres-protocol-v0.6.5 )
---
updated-dependencies:
- dependency-name: postgres-protocol
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-03-31 09:34:51 -07:00
Jose Fernández
6f768a84ce
Auth passthrough (auth_query) ( #266 )
...
* Add a new exec_simple_query method
This adds a new `exec_simple_query` method so we can make 'out of band'
queries to servers that don't interfere with pools at all.
In order to reuse startup code for making these simple queries,
we need to set the stats (`Reporter`) optional, so using these
simple queries wont interfere with stats.
* Add auth passthough (auth_query)
Adds a feature that allows setting auth passthrough for md5 auth.
It adds 3 new (general and pool) config parameters:
- `auth_query`: An string containing a query that will be executed on boot
to obtain the hash of a given user. This query have to use a placeholder `$1`,
so pgcat can replace it with the user its trying to fetch the hash from.
- `auth_query_user`: The user to use for connecting to the server and executing the
auth_query.
- `auth_query_password`: The password to use for connecting to the server and executing the
auth_query.
The configuration can be done either on the general config (so pools share them) or in a per-pool basis.
The behavior is, at boot time, when validating server connections, a hash is fetched per server
and stored in the pool. When new server connections are created, and no cleartext password is specified,
the obtained hash is used for creating them, if the hash could not be obtained for whatever reason, it retries
it.
When client authentication is tried, it uses cleartext passwords if specified, it not, it checks whether
we have query_auth set up, if so, it tries to use the obtained hash for making client auth. If there is no
hash (we could not obtain one when validating the connection), a new fetch is tried.
Once we have a hash, we authenticate using it against whathever the client has sent us, if there is a failure
we refetch the hash and retry auth (so password changes can be done).
The idea with this 'retrial' mechanism is to make it fault tolerant, so if for whatever reason hash could not be
obtained during connection validation, or the password has change, we can still connect later.
* Add documentation for Auth passthrough
2023-03-30 13:29:23 -07:00
dependabot[bot]
0757d7f3a0
chore(deps): bump serde from 1.0.158 to 1.0.159 ( #386 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.158 to 1.0.159.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.158...v1.0.159 )
---
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-03-28 09:54:39 -07:00
dependabot[bot]
568f04feee
chore(deps): bump serde_derive from 1.0.154 to 1.0.159 ( #387 )
...
Bumps [serde_derive](https://github.com/serde-rs/serde ) from 1.0.154 to 1.0.159.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.154...v1.0.159 )
---
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-03-28 09:54:31 -07:00
Jose Fernández
58ce76d9b9
Refactor stats to use atomics ( #375 )
...
* Refactor stats to use atomics
When we are dealing with a high number of connections, generated
stats cannot be consumed fast enough by the stats collector loop.
This makes the stats subsystem inconsistent and a log of
warning messages are thrown due to unregistered server/clients.
This change refactors the stats subsystem so it uses atomics:
- Now counters are handled using U64 atomics
- Event system is dropped and averages are calculated using a loop
every 15 seconds.
- Now, instead of snapshots being generated ever second we keep track of servers/clients
that have registered. Each pool/server/client has its own instance of the counter and
makes changes directly, instead of adding an event that gets processed later.
* Manually mplement Hash/Eq in `config::Address` ignoring stats
* Add tests for client connection counters
* Allow connecting to dockerized dev pgcat from the host
* stats: Decrease cl_idle when idle socket disconnects
2023-03-28 17:19:37 +02:00
dependabot[bot]
9a2076a9eb
chore(deps): bump futures from 0.3.26 to 0.3.27 ( #356 )
...
Bumps [futures](https://github.com/rust-lang/futures-rs ) from 0.3.26 to 0.3.27.
- [Release notes](https://github.com/rust-lang/futures-rs/releases )
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md )
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.26...0.3.27 )
---
updated-dependencies:
- dependency-name: futures
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-03-27 09:13:45 -07:00
dependabot[bot]
e7e7118725
chore(deps): bump hyper from 0.14.24 to 0.14.25 ( #358 )
...
Bumps [hyper](https://github.com/hyperium/hyper ) from 0.14.24 to 0.14.25.
- [Release notes](https://github.com/hyperium/hyper/releases )
- [Changelog](https://github.com/hyperium/hyper/blob/v0.14.25/CHANGELOG.md )
- [Commits](https://github.com/hyperium/hyper/compare/v0.14.24...v0.14.25 )
---
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-03-27 09:13:36 -07:00
dependabot[bot]
99f790cacf
chore(deps): bump toml from 0.7.2 to 0.7.3 ( #360 )
...
Bumps [toml](https://github.com/toml-rs/toml ) from 0.7.2 to 0.7.3.
- [Release notes](https://github.com/toml-rs/toml/releases )
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.7.2...toml-v0.7.3 )
---
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-03-27 09:13:25 -07:00
dependabot[bot]
434b0bb69e
chore(deps): bump serde from 1.0.154 to 1.0.158 ( #376 )
...
Bumps [serde](https://github.com/serde-rs/serde ) from 1.0.154 to 1.0.158.
- [Release notes](https://github.com/serde-rs/serde/releases )
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.154...v1.0.158 )
---
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-03-27 09:13:13 -07:00
dependabot[bot]
714e043ef0
chore(deps): bump async-trait from 0.1.66 to 0.1.68 ( #382 )
...
Bumps [async-trait](https://github.com/dtolnay/async-trait ) from 0.1.66 to 0.1.68.
- [Release notes](https://github.com/dtolnay/async-trait/releases )
- [Commits](https://github.com/dtolnay/async-trait/compare/0.1.66...0.1.68 )
---
updated-dependencies:
- dependency-name: async-trait
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-03-27 09:12:54 -07:00
dependabot[bot]
863104aadd
chore(deps): bump regex from 1.7.1 to 1.7.3 ( #385 )
...
Bumps [regex](https://github.com/rust-lang/regex ) from 1.7.1 to 1.7.3.
- [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.7.1...1.7.3 )
---
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-03-27 09:12:43 -07:00
Lev Kokotov
7dd96141e3
Update README.md
2023-03-26 00:33:05 -07:00
Lev Kokotov
0d5feac4b2
Contributors ( #384 )
v1.0.0
2023-03-24 17:12:12 -07:00
Lev Kokotov
90aba9c011
V1 ( #383 )
2023-03-24 17:10:12 -07:00
Montana Low
0f34b49503
point CI at updated repo
2023-03-24 12:59:03 -07:00
Zain Kabani
ca4431b67e
Add idle client in transaction configuration ( #380 )
...
* Add idle client in transaction configuration
* fmt
* Update docs
* trigger build
* Add tests
* Make the config dynamic from reloads
* fmt
* comments
* trigger build
* fix config.md
* remove error
2023-03-24 08:20:30 -07:00
Mostafa Abdelraouf
d66b377a8e
Check Slice bounds in read_message to avoid panics ( #371 )
...
When recv is called in the mirroring client, we noticed an occasional panic when reading the message.
thread 'tokio-runtime-worker' panicked at 'slice index starts at 5 but ends at 0', src/messages.rs:522:18
We are still debugging the reason why this happens but adding a check for slice bounds seems like a good idea. Instead of panicking, this will return an Err to the caller which will close the connection.
2023-03-17 12:31:43 -05:00
Fraser Isbester
ac21ce50f1
github/workflows: adds automated image building ( #370 )
...
* github/workflow: add ghcr build-push workflow
* github/workflow: add build caching and push
* github/workflows: add registry prefix
* github/workflows: add build-concurrency groups w/ termination
2023-03-16 13:07:02 -07:00
Mostafa Abdelraouf
e5df179ac9
Reduce memory and CPU footprint of mirroring ( #369 )
...
The experimental mirroring feature used a lot of memory and CPU when put under production traffic. This change attempts to reduce memory and CPU usage.
Memory footprint is reduced by making the channel smaller. CPU usage is reduced by avoiding allocations if the channel is full or is closed.
We might lose more messages this way if the mirror falls behind but that is more acceptable than crashing the entire process when it goes out-of-memory (OOM)
2023-03-15 17:58:45 -05:00
Mostafa Abdelraouf
9a668e584f
Update CONFIG.md ( #353 )
...
Mark experimental features as such
2023-03-11 07:55:07 -06:00
Mostafa Abdelraouf
a5c360e848
Update README.md ( #352 )
2023-03-10 22:02:33 -06:00
Mostafa Abdelraouf
b09f0a3e6b
Improve Config Documentation ( #351 )
...
This PR adds a utility script that generates config documentation from pgcat.toml. Ideally, we'd want to generate the configs directly from config.rs where the actual defaults are set but this is a good start as we already had several undocumented config flags.
2023-03-10 22:00:28 -06:00
Lev Kokotov
0704ea089c
Build on 1.67 ( #350 )
2023-03-10 09:42:52 -08:00
Lev Kokotov
b4baa86e8a
Extended query protocol sharding ( #339 )
...
* Prepared stmt sharding
s
tests
* len check
* remove python test
* latest rust
* move that to debug for sure
* Add the actual tests
* latest image
* Update tests/ruby/sharding_spec.rb
2023-03-10 07:55:22 -08:00