1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441
|
2010-05-10 - PgBouncer 1.3.3 - "NSFW"
= Improvements =
* Make listen(2) argument configurable: listen_backlog. This is
useful on OS'es, where system max allowed is configurable.
* Improve disconnect messages to show what username or dbname caused
login to fail.
= Fixes =
* Move fast-fail relaunch logic around. Old one was annoying in case of
permanently broken databases or users, by trying to retry even if
there is no clients who want to login.
* Make logging functions keep old errno, otherwise pgbouncer may act funny
on higher loglevels and logging problems.
* Increase the size of various startup-related buffers to handle
EDB more noisy startup.
* Detect V2 protocol startup request and give clear reason for disconnect.
2010-03-15 - PgBouncer 1.3.2 - "Boomerang Bullet"
= Fixes =
* New config var 'query_wait_timeout'. If client does not get
server connection in this many seconds, it will be killed.
* If no server connection in pool and last connect failed, then
don't put client connections on hold but send error immediately.
This together with previous fix avoids unnecessary stalls if
a database has gone down.
* Track libevent state in sbuf.c to avoid double event_del(). Although
it usually is safe, it does not seem to work 100%. Now we should always
know whether it has been called or not.
* Disable maintenance during SUSPEND. Otherwise with short timeouts
the old bouncer could close few connections after sending them over.
* Apply client_login_timeout to clients waiting for welcome packet
(first server connection). Otherwise they can stay waiting
infinitely, unless there is query_timeout set.
* win32: Add switch -U/-P to -regservice to let user pick account
to run service under. Old automatic choice between Local Service and
Local System was not reliable enough.
* console: Remove \0 from end of text columns. It was hard to notice,
as C clients were fine with it.
* Documentation improvements. (Greg Sabino Mullane)
* Clarify few login-related log messages.
* Change logging level for pooler-sent errors (usually on disconnect) from INFO
to WARNING, as they signify problems.
* Change log message for query_timeout to "query timeout".
2009-07-06 - PgBouncer 1.3.1 - "Now fully conforming to NSA monitoring requirements"
= Fixes =
* Fix problem with sbuf_loopcnt which could make connections hang.
If query or result length is nearby of multiple of (pktlen*sbuf_loopcnt)
[10k by default], it could stay waiting for more data which will not
appear.
* Make database reconfigure immediate. Currently old connections
could be reused after SIGHUP.
* Fix SHOW DATABASES which was broken due to column addition.
* Console access was disabled when "auth_mode=any" as pgbouncer dropped username.
Fix: if "auth_mode=any", allow any user to console as admin.
* Fix bad CUSTOM_ALIGN macro. Luckily it's unused if OS already
defines ALIGN macro thus seems the bug has not happened in wild.
* win32: call WSAStartup() always, not only in daemon mode
as config parsing wants to resolve hosts.
* win32: put quotes around config filename in service
cmdline to allow spaces in paths. Executable path
does not seem to need it due to some win32 magic.
* Add STATS to SHOW HELP text.
* doc/usage.txt: the time units in console results are in
microseconds, not milliseconds.
2009-02-18 - PgBouncer 1.3 - "New Ki-Smash Finishing Move"
= Features =
* IANA has assigned port 6432 to be official port for PgBouncer.
Thus the default port number has changed to 6432. Existing
individual users do not need to change, but if you distribute
packages of PgBouncer, please change the package default
to official port.
* Dynamic database creation (David Galoyan)
Now you can define database with name "*". If defined, it's connect
string will be used for all undefined databases. Useful mostly
for test / dev environments.
* Windows support (Hiroshi Saito)
PgBouncer runs on Windows 2000+ now. Command line usage stays same,
except it cannot run as daemon and cannot do online reboot.
To run as service, define parameter service_name in config. Then:
> pgbouncer.exe config.ini -regservice
> net start SERVICE_NAME
To stop and unregister:
> net stop SERVICE_NAME
> pgbouncer.exe config.ini -unregservice
To use Windows Event Log, event DLL needs to be registered first:
> regsrv32 pgbevent.dll
Afterwards you can set "syslog = 1" in config.
= Minor features =
* Database names in config file can now be quoted with standard SQL
ident quoting, to allow non-standard characters in db names.
* New tunables: 'reserve_pool_size' and 'reserve_pool_timeout'.
In case there are clients in pool that have waited more that
'reserve_pool_timeout' seconds, 'reserve_pool_size' specifies
the number of connections that can be added to pool. It can also
set per-pool with 'reserve_pool' connection variable.
* New tunable 'sbuf_loopcnt' to limit time spent on one socket.
In some situations - eg SMP server, local Postgres and fast network -
pgbouncer can run recv()->send() loop many times without blocking
on either side. But that means other connections will stall for
a long time. To make processing more fair, limit the times
of doing recv()->send() one socket. If count reaches limit,
just proceed processing other sockets. The processing for
that socket will resume on next event loop.
Thanks to Alexander Schöcke for report and testing.
* crypt() authentication is now optional, as it was removed from Postgres.
If OS does not provide it, pgbouncer works fine without it.
* Add milliseconds to log timestamps.
* Replace old MD5 implementation with more compact one.
* Update ISC licence with the FSF clarification.
= Fixes =
* In case event_del() reports failure, just proceed with cleanup.
Previously pgbouncer retried it, in case the failure was due ENOMEM.
But this has caused log floods with inifinite repeats, so it seems
libevent does not like it.
Why event_del() report failure first time is still mystery.
* --enable-debug now just toggles whether debug info is stripped from binary.
It no longer plays with -fomit-frame-pointer as it's dangerous.
* Fix include order, as otherwise system includes could come before
internal ones. Was problem for new md5.h include file.
* Include COPYRIGHT file in .tgz...
2008-08-08 - PgBouncer 1.2.3 - "Carefully Selected Bytes"
* Disable SO_ACCEPTFILTER code for BSDs which did not work.
* Include example etc/userlist.txt in tgz.
* Use '$(MAKE)' instead 'make' for recursion (Jørgen Austvik)
* Define _GNU_SOURCE as glibc is useless otherwise.
* Let the libevent 1.1 pass link test so we can later report "1.3b+ needed"
* Detect stale pidfile and remove it.
Thanks to Devrim GÜNDÜZ and Bjoern Metzdorf for problem reports and testing.
2008-08-06 - PgBouncer 1.2.2 - "Barf-bag Included"
* Remove 'drop_on_error', it was a bad idea. It was added as workaround
for broken plan cache behaviour in Postgres, but can cause damage
in common case when some queries always return error.
2008-08-04 - PgBouncer 1.2.1 - "Waterproof"
= Features =
* New parameter 'drop_on_error' - if server throws error the connection
will not be reused but dropped after client finished with it. This is
needed to refresh plan cache. Automatic refresh does not work even in 8.3.
Defaults to 1.
= Fixes =
* SHOW SOCKETS/CLIENTS/SERVERS: Don't crash if socket has no buffer.
* Fix infinite loop on SUSPEND if suspend_timeout triggers.
= Minor cleanups =
* Use <sys/uio.h> for 'struct iovec'.
* Cancel shutdown (from SIGINT) on RESUME/SIGUSR2,
otherwise it will trigger on next PAUSE.
* Proper log message if console operation is canceled.
2008-07-29 - PgBouncer 1.2 - "Ordinary Magic Flute"
PgBouncer 1.2 now requires libevent version 1.3b or newer.
Older libevent versions crash with new restart code.
= Features =
* Command line option (-u) and config parameter (user=) to support user
switching at startup. Also now pgbouncer refuses to run as root.
(Jacob Coby)
* More descriptive usage text (-h). (Jacob Coby)
* New database option: connect_query to allow run a query on new
connections before they are taken into use. (Teodor Sigaev)
* New config var 'ignore_startup_parameters' to allow and ignore
extra parameters in startup packet. By default only 'database'
and 'user' are allowed, all others raise error. This is needed
to tolerate overenthusiastic JDBC wanting to unconditionally
set 'extra_float_digits=2' in startup packet.
* Logging to syslog: new parameters syslog=0/1 and
syslog_facility=daemon/user/local0.
* Less scary online restart (-R)
- Move FD loading before fork, so it logs to console and can be canceled by ^C
- Keep SHUTDOWN after fork, so ^C would be safe
- A connect() is attempted to unix socket to see if anyone is listening.
Now -R can be used even when no previous process was running. If there
is previous process, but -R is not used, startup fails.
* New console commands:
- SHOW TOTALS that shows stats summary (as goes to log) plus mem usage.
- SHOW ACTIVE_SOCKETS - like show sockets; but filter only active ones.
= Less visible features =
* suspend_timeout - drop stalled conns and long logins. This brings
additional safety to reboot.
* When remote database throws error on logging in, notify clients.
* Removing a database from config and reloading works - all connections
are killed and the database is removed.
* Fake some parameters on console SHOW/SET commands to be more Postgres-like.
That was needed to allow psycopg to connect to console.
(client_encoding/default_transaction_isolation/datestyle/timezone)
* Make server_lifetime=0 disconnect server connection immediately
after first use. Previously "0" made PgBouncer ignore server age.
As this behavior was undocumented, there should not be any users
depending on it.
* Internal improvements:
- Packet buffers are allocated lazily and reused. This should bring
huge decrease in memory usage. This also makes realistic to use
big pktbuf with lot of connections.
- Lot's of error handling improvements, PgBouncer should now
survive OOM situations gracefully.
- Use slab allocator for memory management.
- Lots of code cleanups.
= Fixes =
* Only single accept() was issued per event loop which could
cause connection backlog when having high amount of connection
attempts. Now the listening socket is always drained fully,
which should fix this.
* Handle EINTR from connect().
* Make configure.ac compatible with autoconf 2.59.
* Solaris compatibility fixes (Magne Mæhre)
2007-12-10 - PgBouncer 1.1.2 - "The Hammer"
= Features =
* Disconnects because of server_lifetime are now separated by
(server_lifetime / pool_size) seconds. This avoids pgbouncer
causing reconnect floods.
= Fixes =
* Online upgrade 1.0 -> 1.1 problems:
- 1.0 does not track server parameters, so they stay NULL
but 1.1 did not expect it and crashed.
- If server params are unknown, but client ones are set,
then issue a SET for them, instead complaining.
* Remove temp debug statements that were accidentally left
in code on INFO level, so they polluted logs.
* Unbroke debian/changelog
= Cleanup =
* reorder struct SBuf fields to get better alignment for buffer.
2007-10-26 - PgBouncer 1.1.1 - "Breakdancing Bee"
= Fixes =
* Server parameter cache could stay uninitialized, which caused
unnecessary SET of them. This caused problem on 8.1 which
does not allow touching standard_conforming_strings.
(Thanks to Dimitri Fontaine for report & testing.)
* Some doc fixes.
* Include doc/fixman.py in .tgz.
2007-10-09 - PgBouncer 1.1 - "Mad-Hat Toolbox"
= Features =
* Keep track of following server parameters:
client_encoding datestyle, timezone, standard_conforming_strings
* Database connect string enhancements:
- Accept hostname in host=
- Accept custom unix socket location in host=
- Accept quoted values: password=' asd''foo'
* New config var: server_reset_query, to be sent immidiately after release
* New config var: server_round_robin, to switch between LIFO and RR.
* Cancel pkt sent for idle connection does not drop it anymore.
* Cancel with ^C from psql works for SUSPEND / PAUSE.
* Print FD limits on startup.
* When suspending, try to hit packet boundary ASAP.
* Add 'timezone' to database parameters.
* Use longlived logfile fd. Reopened on SIGHUP / RELOAD;
* Local connection endpoint info in SHOW SERVERS/CLIENTS/SOCKETS.
= Code cleanup =
* More debug log messages include socket info.
* Magic number removal and error message cleanup. (David Fetter)
* Wrapper struct for current pkt info. Removes lot of compexity.
= Fixes =
* Detect invalid pkt headers better.
* auth_file modification check was broken, which made pgbouncer
reload it too often.
2007-06-18 - PgBouncer 1.0.8 - "Undead Shovel Jutsu"
= Fixes =
* Fix crash in cancel packet handling. (^C from psql)
= Features =
* PAUSE <db>; RESUME <db>; works now.
* Cleanup of console command parsing.
* Disable expensive in-list assert check.
2007-04-19 - PgBouncer 1.0.7 - "With Vitamin A-Z"
* Several error/notice packets with send() blocking between
triggered assert. Fix it by removing flushing logic altogether.
As pgbouncer does not actively buffer anything, its not needed.
It was a remnant from the time when buffering was pushed to
kernel with MSG_MORE.
* Additionally avoid calling recv() logic when sending unblocks.
* List search code for admin_users and stats_users
mishandled partial finds. Fix it.
* Standardise UNIX socket peer UID finding to getpeereid().
2007-04-12 - PgBouncer 1.0.6 - "Daily Dose"
* The "Disable maintenance during the takeover" fix could
disable maintenance altogether. Fix it.
* Compilation fix for FreeBSD, <sys/ucred.h> requires <sys/param.h> there.
Thanks go to Robert Gogolok for report.
2007-04-11 - PgBouncer 1.0.5 - "Enough for today"
* Fix online-restart bugs:
- Set ->ready for idle servers.
- Remove obsolete code from use_client_socket()
- Disable maintenance during the takeover.
2007-04-11 - PgBouncer 1.0.4 - "Last 'last' bug"
* Notice from idle server tagged server dirty.
release_server() did not expect it. Fix it
by dropping them.
2007-04-11 - PgBouncer 1.0.3 - "Fearless Fork"
= Fixes =
* Some error handling was missing in login path, so dying
connection there could trigger asserts.
* Cleanup of asserts in sbuf.c to catch problems earlier.
* Create core when Assert() triggers.
= New stuff =
* New config vars: log_connections, log_disconnections,
log_pooler_errors to turn on/off noise.
* Config var: client_login_timeout to kill dead connections
in login phase that could stall SUSPEND and thus online restart.
2007-03-28 - PgBouncer 1.0.2 - "Supersonic Spoon"
* libevent may report a deleted event inside same loop.
Avoid socket reuse for one loop.
* release_server() from disconnect_client() didnt look
it the packet was actually sent.
2007-03-15 - PgBouncer 1.0.1 - "Alien technology"
= Fixes =
* Mixed usage of cached and non-cached time, plus unsiged usec_t typedef
created spurious query_timeout errors.
* Fix rare case when socket woken up from send-wait could stay stalling.
* More fair queueing of server connections. Before, a new query could
get a server connections before older one.
* Delay server release until everything is guaranteed to be sent.
= Features =
* SHOW SOCKETS command to have detailed info about state state.
* Put PgSocket ptr to log, to help tracking one connection.
* In console, allow SELECT in place of SHOW.
* Various code cleanups.
2007-03-13 - PgBouncer 1.0 - "Tuunitud bemm"
* First public release.
|