This reflects PgBouncer behavior on query_wait_timeout and should help
replace cascades of PgBouncers. Currently if wave of incoming
connections is coordinated casecade of PgBouncers will try smooth peak
with at least 2 seconds wait, while Odyssey just resest every
connection with is over role connection limit.
+ Added ability for host-based authentification a-la pg_hba:
e.g.
auth_query "SELECT usename, passwd FROM pg_shadow,pg_hba_net WHERE usename='%u' AND ((pg_shadow.usename=pg_hba_net.username and network >> '%h') OR (SELECT COUNT(*) FROM pg_hba_net WHERE username='%u'))
This is a temporary solution to ensure server connection is not reattached to
the client in case after backend is ready for query in transaction pooling
mode.
This patch intend is to improve overall io performance, reduce
cpu and system usage.
Machinarium:
IO read/write logic is highly simplified and now based on conditions
instead of previously made internal readahead buffer and msg
queues. This allows to give user more control over io operations and
avoid doing undesired readahead copying.
Above that, TLS implementation reworked to use async logic instead of
separate BIO layer.
Direct pooling functions removed.
New objects machine_cond_t and machine_iov_t objects.
Odyssey:
Introduced readahead, io and relay objects.
Relay allows to connect two io handles for direct data retransmission
without double copying.
Removed configuration options no longer needed:
packet_read_size, packet_write_queue
Goal is to improve overall performance during massive peaks
of connecting clients.
This patch makes router a shared structure, instead of
being run in separate system worker thread/coroutine.
Now router and each route object is protected by
separate mutex. Worker threads directly access router object
without calls to separate thread.