zainkabani
ca8901910c
Removes message cloning operation required for query router ( #285 )
...
* Removes message cloning operation required for query router
* fmt
* flakey?
* ?
2023-01-19 07:19:49 -08:00
zainkabani
85ac3ef9a5
Buffer client CopyData messages ( #284 )
...
Buffers CopyData messages and removes buffer clone for the sync message
2023-01-17 17:39:55 -08:00
zainkabani
c62b86f4e6
Adds details to errors and fixes error propagation bug ( #239 )
2022-11-17 09:24:39 -08:00
zainkabani
fcd2cae4e1
Move get_config in startup to admin branch to scope down usage ( #238 )
2022-11-17 09:22:12 -08:00
zainkabani
fe0b012832
Adds configuration for logging connections and removes get_config from entrypoint ( #236 )
...
* Adds configuration for logging connections and removes get_config from entrypoint
* typo
* rename connection config var and add to toml files
* update config log
* fmt
2022-11-16 22:15:47 -08:00
zainkabani
b7e70b885c
Default to using username when database isn't present on startup ( #234 )
2022-11-16 18:49:04 -08:00
Cluas
dfa26ec6f8
chore: make clippy lint happy ( #225 )
...
* chore: make clippy happy
* chore: cargo fmt
* chore: cargo fmt
2022-11-09 10:04:31 -08:00
Lev Kokotov
0524787d31
Automatic sharding: part one of many ( #194 )
...
Starting automatic sharding
2022-10-25 11:47:41 -07:00
zainkabani
19f635881a
Don't send discard all when state is changed in transaction ( #186 )
...
* Don't send discard all when state is changed in transaction
* Remove unnecessary clone
* spelling
* Move transaction check to SET command
* Add test for set command in transaction
* type
* Update comments
* Update comments
* use moves instead of clones for initial message
* don't make message mutable
* Update unwrap
* but i'm not a wrapper
* Add set local test
* change continue
2022-10-13 19:33:12 -07:00
Lev Kokotov
7987c5ffad
Replace a few types with more developer-friendly names ( #182 )
...
* Replace a few types with more developer-friendly names
* UserPool -> PoolIdentifier
2022-10-01 10:25:59 -07:00
Mostafa Abdelraouf
d126c7424d
Log failed client logins ( #173 )
...
* Log failed client logins
* more logging
* remove clones
* remove
2022-09-23 09:08:38 -07:00
zainkabani
f72dac420b
Add defaults for configs ( #174 )
...
* add statement timeout to readme
* Add defaults to various configs
* primary read enabled default to false
2022-09-22 23:00:46 -07:00
Mostafa Abdelraouf
f7a951745c
Report Query times ( #166 )
...
* Report avg and total query timing
* Report query times
* fmt
2022-09-15 02:21:45 -04:00
Mostafa Abdelraouf
4ae1bc8d32
Add SHOW CLIENTS / SHOW SERVERS + Stats refactor and tests ( #159 )
...
* wip
* Main Thread Panic when swarmed with clients
* fix
* fix
* 1024
* fix
* remove test
* Add SHOW CLIENTS
* revert
* fmt
* Refactor + tests
* fmt
* add test
* Add SHOW SERVERS + Make PR unreviewable
* prometheus
* add state to clients and servers
* fmt
* Add application_name to server stats
* Add tests for waiting clients
* Docs
* remove comment
* comments
* typo
* cleanup
* CI
2022-09-14 11:20:41 -04:00
Mostafa Abdelraouf
9514b3b2d1
Clean connection state up after protocol named prepared statement ( #163 )
...
* Clean connection state up after protocol named prepared statement
* Avoid cloning + add test
* fmt
2022-09-07 20:37:17 -07:00
Mostafa Abdelraouf
744ceada86
Better logging for failure to get connection from pool ( #161 )
2022-09-07 08:24:07 -07:00
Mostafa Abdelraouf
a5c8dd69b2
Avoid reporting ProtocolSyncError when admin session disconnects ( #160 )
...
* Avoid reporting ProtocolSyncError when admin session disconnects
* rebuild
* rebuild
2022-09-06 22:22:31 -07:00
Mostafa Abdelraouf
976b406468
Main Thread Panic when swarmed with clients ( #158 )
...
* Main Thread Panic when swarmed with clients
* fix
* fix
* 1024
* fix
* remove test
* Update src/client.rs
* Update src/main.rs
* Update src/client.rs
* Update src/main.rs
Co-authored-by: Lev Kokotov <levkk@users.noreply.github.com >
2022-09-05 01:21:06 -07:00
zain-kabani
417358c35d
Patch graceful shutdown bug ( #157 )
...
* Fixes non-admin client counting error
* Add log when sigterm received and log number of active clients when shutdown timeout is reached
2022-09-05 01:02:49 -07:00
Mostafa Abdelraouf
23a642f4a4
Send DISCARD ALL even if client is not in transaction ( #152 )
...
* Send DISCARD ALL even if client is not in transaction
* fmt
* Added tests + avoided sending extra discard all
* Adds set name logic to beginning of handle client
* fmt
* refactor dead code handling
* Refactor reading command tag
* remove unnecessary trim
* Removing debugging statement
* typo
* typo{
* documentation
* edit text
* un-unwrap
* run ci
* run ci
Co-authored-by: Zain Kabani <zain.kabani@instacart.com >
2022-09-01 20:06:55 -07:00
Mostafa Abdelraouf
7f20dc3054
Better handling extended protocol messages in the event of busy pool ( #155 )
...
* Better handling for checkout errors during extended protocol messages
* Fix specs
* comment
2022-09-01 15:02:39 -07:00
Lev Kokotov
9d84d6f131
Graceful shutdown and refactor ( #144 )
...
* Graceful shutdown and refactor
* ok
* _Graceful_ shutdown
* Remove hardcoded setting
* clean up
* end
* timeout
* hmm
* hmm!
* bash
* bash
* hmm
* maybe maybe
* Adds tests and move non-admin connection rejection to startup (#145 )
* Move error response
* Adds tests and removes unused variable
* Adds debug log
Co-authored-by: zainkabani <77307340+zainkabani@users.noreply.github.com >
2022-08-25 06:40:56 -07:00
Mostafa Abdelraouf
c054ff068d
Avoid sending Z packet in the middle of extended protocol packet sequence if we fail to get connection from pool ( #137 )
...
* Failing test
* maybe
* try fail
* try
* add message
* pool size
* correct user
* more
* debug
* try fix
* see stdout
* stick?
* fix configs
* modify
* types
* m
* maybe
* make tests idempotent
* hopefully fails
* Add client fix
* revert pgcat.toml change
* Fix tests
2022-08-23 11:02:23 -07:00
Lev Kokotov
5a0cea6a24
Really fix idle servers ( #141 )
2022-08-22 11:56:40 -07:00
Lev Kokotov
d0e8171b1b
Fix too many idle servers ( #140 )
...
* Fix too many idle servers
* oops
2022-08-22 11:52:34 -07:00
Mostafa Abdelraouf
5f5b5e2543
Random instance selection ( #136 )
...
* wip
* revert some'
* revert more
* poor-man's integration test
* remove test
* fmt
* --workspace
* fix build
* fix integration test
* another stab
* log
* run after integration
* cargo test after integration
* revert
* revert more
* Refactor + clean up
* more clean up
2022-08-21 22:15:20 -07:00
zainkabani
5948fef6cf
Minor Refactoring of re-used code and server stat reporting ( #129 )
...
* Minor changes to stats reporting and recduce re-used code
* fmt
2022-08-18 05:12:38 -07:00
Lev Kokotov
3285006440
Statement timeout + replica imbalance fix ( #122 )
...
* Statement timeout
* send error message too
* Correct error messages
* Fix replica inbalance
* disable stmt timeout by default
* Redundant mark_bad
* revert healthcheck delay
* tests
* set it to 0
* reload config again
2022-08-13 13:45:58 -07:00
zainkabani
f963b12821
Health check delay ( #118 )
...
* initial commit of server check delay implementation
* fmt
* spelling
* Update name to last_healthcheck and some comments
* Moved server tested stat to after require_healthcheck check
* Make health check delay configurable
* Rename to last_activity
* Fix typo
* Add debug log for healthcheck
* Add address to debug log
2022-08-11 14:42:40 -07:00
Mostafa Abdelraouf
7592339092
Prevent clients from sticking to old pools after config update ( #113 )
...
* Re-acquire pool at the beginning of Protocol loop
* Fix query router + add tests for recycling behavior
2022-08-09 12:18:27 -07:00
zainkabani
3719c22322
Implementing graceful shutdown ( #105 )
...
* Initial commit for graceful shutdown
* fmt
* Add .vscode to gitignore
* Updates shutdown logic to use channels
* fmt
* fmt
* Adds shutdown timeout
* Fmt and updates tomls
* Updates readme
* fmt and updates log levels
* Update python tests to test shutdown
* merge changes
* Rename listener rx and update bash to be in line with master
* Update python test bash script ordering
* Adds error response message before shutdown
* Add details on shutdown event loop
* Fixes response length for error
* Adds handler for sigterm
* Uses ready for query function and fixes number of bytes
* fmt
2022-08-08 16:01:24 -07:00
Mostafa Abdelraouf
1b648ca00e
Send proper server parameters to clients using admin db ( #103 )
...
* Send proper server parameters to clients using admin db
* clean up
* fix python test
* build
* Add python
* missing &
* debug ls
* fix tests
* fix tests
* fix
* Fix warning
* Address comments
2022-07-31 19:52:23 -07:00
Mostafa Abdelraouf
2ae4b438e3
Add support for multi-database / multi-user pools ( #96 )
...
* Add support for multi-database / multi-user pools
* Nothing
* cargo fmt
* CI
* remove test users
* rename pool
* Update tests to use admin user/pass
* more fixes
* Revert bad change
* Use PGDATABASE env var
* send server info in case of admin
2022-07-27 19:47:55 -07:00
Lev
186f8be5b3
lint
2022-06-27 17:01:40 -07:00
Lev
8f3202ed92
hmm
2022-06-27 16:45:41 -07:00
Lev
eb58920870
at least it compiles
2022-06-27 15:52:01 -07:00
Lev Kokotov
b974aacd71
check
2022-06-27 09:46:33 -07:00
Lev Kokotov
f06f64119c
Fix panic & query router bug ( #85 )
...
* Fix query router bug
* Fix panic
2022-06-24 15:14:31 -07:00
Lev Kokotov
b93303eb83
Live reloading entire config and bug fixes ( #84 )
...
* Support reloading the entire config (including sharding logic) without restart.
* Fix bug incorrectly handing error reporting when the shard is set incorrectly via SET SHARD TO command.
selected wrong shard and the connection keep reporting fatal #80 .
* Fix total_received and avg_recv admin database statistics.
* Enabling the query parser by default.
* More tests.
2022-06-24 14:52:38 -07:00
Lev Kokotov
d3310a62c2
Client md5 auth and clean up scram ( #77 )
...
* client md5 auth and clean up scram
* add pw
* add user
* add user
* log
2022-06-20 06:15:54 -07:00
Lev Kokotov
bac4e1f52c
Only set application_name if it's different ( #74 )
...
* Only set application_name if it's different
* keep server named pgcat until something else changes
2022-06-05 09:48:06 -07:00
Lev Kokotov
37e3a86881
Pass application_name to server ( #73 )
...
* Pass application_name to server
* fmt
2022-06-03 00:15:50 -07:00
Lev Kokotov
61db13f614
Fix memory leak in client/server mapping ( #71 )
2022-05-18 16:24:03 -07:00
Lev Kokotov
ccbca66e7a
Poorly behaved client fix ( #65 )
...
* Poorly behaved client fix
* yes officer
* fix tests
* no useless rescue
* Looks ok
2022-05-09 09:09:22 -07:00
Lev Kokotov
df85139281
Update README. Comments. Version bump. ( #60 )
...
* update readme
* comments
* just a version bump
2022-03-10 01:33:29 -08:00
Lev Kokotov
341ebf4123
docs and remove Option ( #58 )
...
* docs and remove Option
* lint
2022-03-07 23:05:40 -08:00
Lev Kokotov
35828a0a8c
Per-shard statistics ( #57 )
...
* per shard stats
* aight
* cleaner
* fix show lists
* comments
* more friendly
* case-insensitive
* test all shards
* ok
* HUH?
2022-03-04 17:04:27 -08:00
Lev Kokotov
b21e0f4a7e
admin SHOW DATABASES ( #51 )
...
* admin SHOW DATABASES
* test
* correct replica count
2022-02-28 17:22:28 -08:00
Lev Kokotov
f74101cdfe
admin: SHOW STATS ( #46 )
...
* admin: show stats
* warning
* tests
* lint
* type mod
2022-02-25 18:20:15 -08:00
Lev Kokotov
6db51b4a11
Use Toxiproxy for failover testing ( #44 )
...
* Toxiproxy
* up-to-date config
* debug
* hm
* more
* mroe
* more
* hmm
* aha
* less logs
* cleaner
* hmm
* we test these now
* update readme
2022-02-24 20:55:19 -08:00