xref: /memcached-1.4.29/ChangeLog (revision 6e53db56)
12008-09-06
2       * Display error status on listen failures (Dormando)
3
4       * Remove managed instance code. Incomplete/etc. (Dormando)
5
6          * Handle broken IPV6 stacks better (Brian Aker)
7
8          * Generate warnings on setsockopt() failures (Brian Aker)
9
10          * Fix some indentation issues (Brian Aker)
11
12          * UDP/TCP can be disabled by setting their port to zero (Brian Aker)
13
14          * Zero out libevent thread structures before use (Ricky Zhou)
15
16          * New stat: Last accessed time for last evicted item per slab class.
17            (Dormando)
18
19          * Use a dedicated socket accept thread (Facebook)
20
21          * Add -R option. Limit the number of requests processed by a connection
22            at once. Prevents starving other threads if bulk loading. (Facebook)
23
242008-07-29 [Version 1.2.6 released]
25
262008-07-24 [Version 1.2.6-rc1 released]
27
28       * Add support for newer automake (Facebook)
29
30       * DTrace support for Solaris/etc (Trond Norbye)
31
32       * LRU tests (Steve Yen)
33
34       * Handle negative length items properly (Dormando)
35
36       * Don't leave stale data after failed set attempts (Dormando)
37
38       * Fix refcount leaks, which would result in OOM's on all sets
39	       (Dormando)
40
41       * Fix buffer overruns (Dustin Sallings, Tomash Brechko)
42
43       * Fix memory corruption with CAS (Dustin Sallings)
44
452008-06-11
46
47       * Fix -k to work with -d. (reported by Gary Zhu)
48
492008-03-02 [Version 1.2.5-rc1 released]
50
51       * Add per-item-class tracking of evictions and OOM errors (dormando)
52
53       * Optimize item_alloc() a little (dormando)
54
55       * Give 'SERVER_ERROR out of memory' errors more context (dormando)
56
57       * Enable usage of large memory pages under solaris
58         ([email protected])
59
60       * Enable UDP by default, clean up server socket code
61         ([email protected])
62
63       * 'noreply' support (Tomash Brechko)
64
65       * IPv6 support, and IPv6 multi-interface support ([email protected])
66
67       * Add compiler options for Sun Studio compilers with --enable-threads
68	     ([email protected])
69
70       * Add --enable-64bit for mulitarget platforms ([email protected])
71
72       * Use gettimeofday(2) instead of time(2).
73
74       * Make -k option work (Tomash Brechko)
75
76	   * Fix chunk slab alignment ([email protected])
77
782007-12-06 [Version 1.2.4 released]
79
802007-12-05
81
82       * Fix compilation on panther (JS and Dormando)
83
84	   * More CAS tests (Chris Goffinet)
85
86	   * Final fixes for all 1.2.4 features are in, -rc2 sent out.
87
882007-11-19 [Version 1.2.4-rc1 released]
89
902007-11-19  Dormando <[email protected]>
91
92       * Patch series from Tomash Brechko <[email protected]>:
93         Minor fixes and optimisations.
94
95       * Patches from Chris, Dustin, and Dormando to fix CAS.
96
97       * Prepping for 1.2.4 release.
98
992007-11-13  Dormando <[email protected]>
100
101	* Adjusted patch from js <[email protected]>: Compile on OS X Panther
102	  and earlier.
103
1042007-11-12  Steven Grimm  <[email protected]>
105
106	* Patch from Tomash Brechko <[email protected]>: Always send
107	  "SERVER_ERROR out of memory" when memory exhausted.
108
1092007-10-15  Paul Lindner  <[email protected]>
110
111	* Patch from David Bremner <[email protected]> that implements
112	  a new option "-a" which takes an octal permission mask
113	  (like chmod) sets the permissions on the unix domain socket
114	  (specified by "-s").
115
1162007-10-03 Paul Lindner <[email protected]>
117	* Incorporate "cas" operation developed by Dustin
118	  Sallings <[email protected]> This change allows you
119	  to do atomic changes to an existing key.
120
121	* Fix for stats.evictions not incrementing
122	  when exptime == 0 items are kicked off the cache.
123	  from Jean-Francois BUSTARRET <[email protected]>.
124
125	* Fix for do_item_cachedump() which was returning
126	  an incorrect timestamp.
127
128	* Switch to unsigned 64-bit increment/decrement counters
129	  from Evan Miller and Dustin Sallings.
130
131	* Add append command support written by Filipe Laborde.
132	  Thread safe version plus prepend command from Maxim Dounin
133	  <[email protected]>
134
135	* The memcached-tool script can now display stats.  Patch
136	  provided by Dan Christian <[email protected]>
137
138	* Fix for Unix Domain sockets on FreeBSD
139	  FreeBSD's sendmsg() requires msg_name in msghdr structure
140	  to be NULL if not used, setting msg_namelen to 0 isn't enough.
141	  Patch from Maxim Dounin <[email protected]>
142
1432007-08-21 Paul Lindner <[email protected]>
144	* Incorporate incrememnt patch from Evan Miller
145	  <[email protected]> to define increment overflow
146	  behavior.
147
1482007-08-07 Leon Brocard <[email protected]>
149	* Bring the memcached.1 manpage up to date
150
1512007-08-06 Paul Lindner <[email protected]>
152	* Fix crash when using -P and -d flags on x86_64
153	  with latest libevent release.
154
1552007-07-08  Steven Grimm  <[email protected]>
156
157	* Item stats commands weren't thread-safe; wrap them with locks
158	  when compiled in multithreaded mode.
159	* The "stats items" command now works again; it broke with the
160	  introduction of the powers-of-N chunk size change.
161
1622007-07-06 [Version 1.2.3 released]
163
1642007-06-19  Paul Lindner  <[email protected]>
165
166	* Solaris portability fixes from Trond Norbye
167
1682007-05-29  Paul Lindner  <[email protected]>
169
170	* Properly document evictions statistic value
171
1722007-05-10  Paul Lindner  <[email protected]>
173
174	* Flesh out tests for unix domain sockets and binary data.
175	* Update rpm spec file to run tests
176
1772007-05-07  Paul Lindner  <[email protected]>
178
179	* Fix compilation bug on freebsd 6.x (and maybe others)
180	* Update RPM spec file per redhat bugzilla #238994
181	* Move unistd.h to memcached.h to get rid of warnings
182	* Add string.h to thread.c to get correctly prototyped strerror()
183
1842007-05-04  Paul Lindner  <[email protected]>
185
186	* Add fedora/redhat style init script and RPM spec file
187
1882007-05-12 [Version 1.2.2 released]
189
1902007-04-16  Steven Grimm  <[email protected]>
191
192	* Command tokenizer performance and cleanliness improvement.
193	  Patch contributed by Paolo Borelli <[email protected]>.
194
1952007-04-16  Paul Lindner  <[email protected]>
196
197	* Add notes to README about MacOS, libevent and kqueue.
198
199	* Windows Patch integration -- part 1, warnings elimination.
200
2012007-04-12  Paul Lindner  <[email protected]>
202
203	* Allow changes to the verbosity level of the server with a new
204	  "verbosity" command and some compiler cleanups.
205          Patch contributed by Paolo Borelli <[email protected]>.
206
2072007-04-08  Paul Lindner  <[email protected]>
208
209	* Add cleanup patch from "Tim Yardley" <[email protected]> to
210	  clean up source spacing issues, fix -Wall warnings, add some
211	  null checks, adds asserts at the top of each function for any
212	  use of conn *c without checking to see if c is NULL first.
213
214        * Also adjust clean-whitespace.pl to clean *.ac files.  Add
215          script to test-suite to test for tabs.
216
2172007-04-04  Paul Lindner  <[email protected]>
218
219	* Add clarification of flush_all in the protocol docs
220	  from Elizabeth Mattijsen <[email protected]>
221
2222007-03-31  Paul Lindner  <[email protected]>
223
224	* Add patch from Eli Bingham <[email protected]> to
225	  re-enable the -n switch to memcached.
226
2272007-03-20  Paul Lindner  <[email protected]>
228	* Add patch to collect eviction statistics from
229          Jean-Francois BUSTARRET <[email protected]>.
230
231        * Updated docs, added new test cases for t/stats.t
232
2332007-03-18  Paul Lindner  <[email protected]>
234
235	* Add more test cases using larger buffer sizes up to and greater
236	  than 1MB.
237
238	* Remove unused parameter to item_size_ok()
239
240	* Use a single printf() in usage()
241
242	* Add a failing test for conforming with maximum connections.
243
2442007-03-17
245	* crash fix from Thomas van Gulick <[email protected]> in
246	  conn_shrink(), passing &ptr, instead of ptr to realloc().
247
2482007-03-05  Paul Lindner  <[email protected]>
249	* Fix a number of places where (s)printf calls were using unsigned
250	  or signed formats that did not match their arguments.
251
252	* Add support for stdbool.h and stdint.h to use the bool and
253	  uint8_t types.
254
255	* Major refactoring - move API calls for assoc/items/slabs to
256	  their own individual header files.  Add apropriate const and
257	  static declarations as appropriate.
258
259	* Avoid type-punning.  Do a more efficient realloc inside the
260	  conn_shrink routine.
261
262        * Fix overflow bug where uninitialized access to slabclass caused
263	  size-0 mallocs during slab preallocation.
264
265	* Use EXIT_SUCCESS/EXIT_FAILURE constants.
266
267	* Convert some sprintf calls to snprintf to protect against
268	  buffer overflows.
269
270	* Explicitly compare against NULL or zero in many places.
271
2722007-03-05
273	* Steven Grimm <[email protected]>: Per-object-type stats collection
274	  support. Specify the object type delimiter with the -D command line
275	  option. Turn stats gathering on and off with "stats detail on" and
276	  "stats detail off". Dump the per-object-type details with
277	  "stats detail dump".
278
2792007-03-01
280	* Steven Grimm <[email protected]>: Fix an off-by-one error in the
281	  multithreaded version's message passing code.
282
2832006-12-23
284	* fix expirations of items set with absolute expiration times in
285	  the past, before the server's start time.  bug was introduced in
286	  1.2.0 with rel_time_t.  Thanks to Adam Dixon
287	  <[email protected]> for the bug report and test case!
288
2892006-11-26
290	* Steven Grimm <[email protected]>: Performance improvements:
291
292	  Dynamic sizing of hashtable to reduce collisions on very large
293	  caches and conserve memory on small caches.
294
295	  Only reposition items in the LRU queue once a minute, to reduce
296	  overhead of accessing extremely frequently-used items.
297
298	  Stop listening for new connections until an existing one closes
299	  if we run out of available file descriptors.
300
301	  Command parser refactoring: Add a single-pass tokenizer to cut
302	  down on string scanning.  Split the command processing into
303	  separate functions for easier profiling and better readability.
304	  Pass key lengths along with the keys in all API functions that
305	  need keys, to avoid needing to call strlen() repeatedly.
306
3072006-11-25
308	* Steve Peters <[email protected]>: OpenBSD has a malloc.h,
309	but warns to use stdlib.h instead
310
3112006-11-22
312	* Steven Grimm <[email protected]>: Add support for multithreaded
313	  execution. Run configure with "--enable-threads" to enable. See
314	  doc/threads.txt for details.
315
3162006-11-13
317	* Iain Wade <[email protected]>: Fix for UDP responses on non-"get"
318	 commands.
319
3202006-10-15
321	* Steven Grimm <[email protected]>: Dynamic sizing of hashtable to
322	  reduce collisions on very large caches and conserve memory on
323	  small caches.
324
3252006-10-13
326	* Steven Grimm <[email protected]>: New faster hash function.
327
3282006-09-20
329
330	* don't listen on UDP by default; more clear message when UDP port in use
331
3322006-09-09
333	* release 1.2.0 (along with 1.1.13, which is the more tested branch)
334
335	nobody has run 1.2.0 in production, to my knowledge.  facebook has run
336	their pre-merge-with-trunk version, but bugs were discovered (and fixed)
337	after the merge.  there might be more.  you've been warned.  :)
338
3392006-09-04
340	* improved autoconf libevent detection, from the Tor project.
341
3422006-09-03
343	* test suite and lot of expiration, delete, flush_all, etc corner
344	  case bugs fixed (Brad Fitzpatrick)
345
3462006-09-02
347	* Nathan Neulinger <[email protected]>: fix breakage in expiration code
348	  causing expiration times to not be processed correctly.
349
3502006-08-21
351	* Nathan Neulinger <[email protected]>: fix incompatabilities with
352	  unix domain socket support and the UDP code and clean up stale
353	  sockets
354
3552006-08-20
356	* Nathan Neulinger <[email protected]>: unix domain socket support
357
3582006-05-03
359	* Steven Grimm <[email protected]>:  big bunch of changes:
360	  big CPU reduction work, UDP-based interface, increased memory
361	  efficiency.  (intertwined patch, committed all together)
362	  <http://lists.danga.com/pipermail/memcached/2006-May/002164.html>
363	  or see svn commit logs
364
3652006-04-30
366	* River Tarnell:  autoconf work for Solaris 10.  Brad:
367	merge and verify it works on Nexenta.
368
3692006-03-04
370	* avva: bucket/generation patch (old, but Brad's just finally
371	committing it)
372
3732006-01-01
374	* Brad Fitzpatrick <[email protected]>:  allocate 1 slab per class
375	on start-up, to avoid confusing users with out-of-memory errors
376	later.  this is 18 MB of allocation on start, unless max memory
377	allowed with -m is lower, in which case only the smaller slab
378	classes are allocated.
379
3802005-08-09
381	* Elizabeth Mattijsen <[email protected]>: needed a way to flush all
382	memcached backend servers, but not at exactly the same time (to
383	reduce load peaks), I've added some simple functionality to the
384	memcached protocol in the "flush_all" command that allows you to
385	specify a time at which the flush will actually occur (instead of
386	always at the moment the "flush_all" command is received).
387
3882005-05-25
389	* patch from Peter van Dijk <[email protected]> to make
390	  stderr unbuffered, for running under daemontools
391
3922005-04-04
393	* patch from Don MacAskill <[email protected]> 'flush_all' doesn't
394	seem to work properly.  Basically, if you try to add a key which
395	is present, but expired, the store fails but the old key is no
396	longer expired.
397
398	* release 1.1.12
399
4002005-01-14
401	* Date: Thu, 18 Nov 2004 15:25:59 -0600
402	  From: David Phillips <[email protected]>
403	Here is a patch to configure.ac and Makefile.am to put the man page in
404	the correct location.  Trying to install the man page from a
405	subdirectory results in the subdirectory being used in the install
406	path (it tries to install to doc/memcached.1).  This is the correct
407	thing to  do:
408
409	- create a Makefile.am in the doc directory that installs the man page
410	  with man_MANS
411	- modify Makefile.am in the base directory to reference the doc
412  	  directory using SUBDIRS
413	- modify the AC_CONFIG_FILES macro in configure.ac to output the
414	  Makefile in doc
415
416
4172005-01-14
418	* pidfile saving support from Lisa Seelye <[email protected]>, sent
419	  Jan 13, 2005
420
4212005-01-14
422	* don't delete libevent events that haven't been added (the deltimer)
423	  patch from Ted Schundler <[email protected]>
424
4252004-12-10
426	* document -M and -r in manpage (Doug Porter <[email protected]>)
427
4282004-07-22
429	* fix buffer overflow in items.c with 250 byte keys along with
430	  other info on the same line going into a 256 byte char[].
431	  thanks to Andrei Nigmatulin <[email protected]>
432
4332004-06-15
434	* immediate deletes weren't being unlinked a few seconds,
435	  preventing "add" commands to the same key in that time period.
436	  thanks to Michael Alan Dorman <[email protected]> for the
437	  bug report and demo script.
438
4392004-04-30
440	* released 1.1.11
441
4422004-04-24
443	* Avva: Add a new command line option: -r , to maximize core file
444	limit.
445
4462004-03-31
447	* Avva: Use getrlimit and setrlimit to set limits for number of
448	simultaneously open file descriptors. Get the current limits and
449	try to raise them if they're not enough for the specified (or the
450	default) setting of max connections.
451
4522004-02-24
453	* Adds a '-M' flag to turn off tossing items from the cache.
454	  (Jason Titus <[email protected]>)
455
4562004-02-19 (Evan)
457	* Install manpage on "make install", etc.
458
4592003-12-30 (Brad)
460	* remove static build stuff.  interferes with PAM setuid stuff
461	  and was only included as a possible fix with the old memory
462	  allocator.  really shouldn't make a difference.
463	* add Jay Bonci's Debian scripts and manpage
464	* release version 1.1.10
465
4662003-12-01 (Avva)
467	* New command: flush_all, causes all existing items to
468	  be invalidated immediately (without deleting them from
469	  memory, merely causing memcached to no longer return them).
4702003-10-23
471	* Shift init code around to fix daemon mode on FreeBSD,
472	* and drop root only after creating the server socket (to
473	* allow the use of privileged ports)
474	* version 1.1.10pre
475
4762003-10-09
477	* BSD compile fixes from Ryan T. Dean
478	* version 1.1.9
479
4802003-09-29
481	* ignore SIGPIPE at start instead of crashing in rare cases it
482	  comes up.  no other code had to be modified, since everything
483	  else is already dead-connection-aware.  (avva)
484
4852003-09-09 (Avva, Lisa Marie Seelye <[email protected]>)
486	* setuid support
487
4882003-09-05 (Avva)
489	* accept all new connections in the same event (so we work with ET epoll)
490	* mark all items as clsid=0 after slab page reassignment to please future
491	  asserts (on the road to making slab page reassignment work fully)
492
4932003-08-12 (Brad Fitzpatrick)
494	* use TCP_CORK on Linux or TCP_PUSH on BSD
495	* only use TCP_NODELAY when we don't have alternatives
496
4972003-08-10
498	* disable Nagel's Algorithm (TCP_NODELAY) for better performance (avva)
499
5002003-08-10
501	* support multiple levels of verbosity (-vv)
502
5032003-08-10  (Evan Martin)
504	* Makefile.am: debug, optimization, and static flags are controlled
505	  by the configure script.
506	* configure.ac:
507	  - allow specifying libevent directory with --with-libevent=DIR
508	  - check for malloc.h (unavailable on BSDs)
509	  - check for socklen_t (unavailable on OSX)
510	* assoc.c, items.c, slabs.c:  Remove some unused headers.
511	* memcached.c:  allow for nonexistence of malloc.h; #define a POSIX
512	  macro to import mlockall flags.
513
5142003-07-29
515	* version 1.1.7
516	* big bug fix: item exptime 0 meant expire immediately, not never
517	* version 1.1.8
518
5192003-07-22
520	* make 'delete' take second arg, of time to refuse new add/replace
521	* set/add/replace/delete can all take abs or delta time (delta can't
522	  be larger than a month)
523
5242003-07-21
525	* added doc/protocol.txt
526
5272003-07-01
528	* report CPU usage in stats
529
5302003-06-30
531	* version 1.1.6
532	* fix a number of obscure bugs
533	* more stats reporting
534
5352003-06-10
536	* removing use of Judy; use a hash.  (judy caused memory fragmentation)
537	* shrink some structures
538	* security improvements
539	* version 1.1.0
540
5412003-06-18
542	* changing maxsize back to an unsigned int
543
5442003-06-16
545	* adding PHP support
546	* added CONTRIBUTORS file
547	* version 1.0.4
548
5492003-06-15
550	* forgot to distribute website/api (still learning auto*)
551	* version 1.0.3
552
5532003-06-15
554	* update to version 1.0.2
555	* autoconf/automake fixes for older versions
556	* make stats report version number
557	* change license from GPL to BSD
558
559Fri, 13 Jun 2003 10:05:51 -0700  Evan Martin  <[email protected]>
560
561	* configure.ac, autogen.sh, Makefile.am:  Use autotools.
562	* items.c, memcached.c:  #include <time.h> for time(),
563	  printf time_t as %lu (is this correct?),
564	  minor warnings fixes.
565
566