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