12009-04-02 2 3 * Fix: Rewrote stat buffer handling (Trond) 4 52009-03-31 6 7 * Feature: -b option for configuring backlog 8 9 * Feature: stats settings 10 11 * Fix: binary stat alignment bug (bug26) 12 13 * Fix: buffer overflow in stats (bug27) 14 15 * Fix: recycle memory more aggressively (bug14) 16 17 * Fix: incr validation (bug31) 18 19 * Fix: 64-bit incr/decr delta problem (bug21) 20 21 * Fix: Ascii UDP set (bug36) 22 23 * Fix: stats slabs' used chunks (bug29) 24 25 * Fix: stats reset resetting more (bug22) 26 27 * Misc: More tests, documentation, cleanliness (godliness) 28 29 * Stable merge (stats, debuggability, listen bugs) 30 312009-03-11 32 33 * Protocol: Binary complete (Dustin, Trond, Toru, etc...) 34 35 * Performance: improvements from facebook (Dormando) 36 37 * Performance: per-thread stats (Trond) 38 39 * Performance: Hash expansion in its own thread (Trond) 40 41 * Stats: Lots of new stats (Dustin) 42 43 * Bug fixes (various) 44 45 See the 1.3.2 release notes or revision control for more detail. 46 472008-09-06 48 * Display error status on listen failures (Dormando) 49 50 * Remove managed instance code. Incomplete/etc. (Dormando) 51 52 * Handle broken IPV6 stacks better (Brian Aker) 53 54 * Generate warnings on setsockopt() failures (Brian Aker) 55 56 * Fix some indentation issues (Brian Aker) 57 58 * UDP/TCP can be disabled by setting their port to zero (Brian Aker) 59 60 * Zero out libevent thread structures before use (Ricky Zhou) 61 62 * New stat: Last accessed time for last evicted item per slab class. 63 (Dormando) 64 65 * Use a dedicated socket accept thread (Facebook) 66 67 * Add -R option. Limit the number of requests processed by a connection 68 at once. Prevents starving other threads if bulk loading. (Facebook) 69 702008-07-29 [Version 1.2.6 released] 71 722008-07-24 [Version 1.2.6-rc1 released] 73 74 * Add support for newer automake (Facebook) 75 76 * DTrace support for Solaris/etc (Trond Norbye) 77 78 * LRU tests (Steve Yen) 79 80 * Handle negative length items properly (Dormando) 81 82 * Don't leave stale data after failed set attempts (Dormando) 83 84 * Fix refcount leaks, which would result in OOM's on all sets 85 (Dormando) 86 87 * Fix buffer overruns (Dustin Sallings, Tomash Brechko) 88 89 * Fix memory corruption with CAS (Dustin Sallings) 90 912008-06-11 92 93 * Fix -k to work with -d. (reported by Gary Zhu) 94 952008-03-02 [Version 1.2.5-rc1 released] 96 97 * Add per-item-class tracking of evictions and OOM errors (dormando) 98 99 * Optimize item_alloc() a little (dormando) 100 101 * Give 'SERVER_ERROR out of memory' errors more context (dormando) 102 103 * Enable usage of large memory pages under solaris 104 ([email protected]) 105 106 * Enable UDP by default, clean up server socket code 107 ([email protected]) 108 109 * 'noreply' support (Tomash Brechko) 110 111 * IPv6 support, and IPv6 multi-interface support ([email protected]) 112 113 * Add compiler options for Sun Studio compilers with --enable-threads 114 ([email protected]) 115 116 * Add --enable-64bit for mulitarget platforms ([email protected]) 117 118 * Use gettimeofday(2) instead of time(2). 119 120 * Make -k option work (Tomash Brechko) 121 122 * Fix chunk slab alignment ([email protected]) 123 1242007-12-06 [Version 1.2.4 released] 125 1262007-12-05 127 128 * Fix compilation on panther (JS and Dormando) 129 130 * More CAS tests (Chris Goffinet) 131 132 * Final fixes for all 1.2.4 features are in, -rc2 sent out. 133 1342007-11-19 [Version 1.2.4-rc1 released] 135 1362007-11-19 Dormando <[email protected]> 137 138 * Patch series from Tomash Brechko <[email protected]>: 139 Minor fixes and optimisations. 140 141 * Patches from Chris, Dustin, and Dormando to fix CAS. 142 143 * Prepping for 1.2.4 release. 144 1452007-11-13 Dormando <[email protected]> 146 147 * Adjusted patch from js <[email protected]>: Compile on OS X Panther 148 and earlier. 149 1502007-11-12 Steven Grimm <[email protected]> 151 152 * Patch from Tomash Brechko <[email protected]>: Always send 153 "SERVER_ERROR out of memory" when memory exhausted. 154 1552007-10-15 Paul Lindner <[email protected]> 156 157 * Patch from David Bremner <[email protected]> that implements 158 a new option "-a" which takes an octal permission mask 159 (like chmod) sets the permissions on the unix domain socket 160 (specified by "-s"). 161 1622007-10-03 Paul Lindner <[email protected]> 163 * Incorporate "cas" operation developed by Dustin 164 Sallings <[email protected]> This change allows you 165 to do atomic changes to an existing key. 166 167 * Fix for stats.evictions not incrementing 168 when exptime == 0 items are kicked off the cache. 169 from Jean-Francois BUSTARRET <[email protected]>. 170 171 * Fix for do_item_cachedump() which was returning 172 an incorrect timestamp. 173 174 * Switch to unsigned 64-bit increment/decrement counters 175 from Evan Miller and Dustin Sallings. 176 177 * Add append command support written by Filipe Laborde. 178 Thread safe version plus prepend command from Maxim Dounin 179 <[email protected]> 180 181 * The memcached-tool script can now display stats. Patch 182 provided by Dan Christian <[email protected]> 183 184 * Fix for Unix Domain sockets on FreeBSD 185 FreeBSD's sendmsg() requires msg_name in msghdr structure 186 to be NULL if not used, setting msg_namelen to 0 isn't enough. 187 Patch from Maxim Dounin <[email protected]> 188 1892007-08-21 Paul Lindner <[email protected]> 190 * Incorporate incrememnt patch from Evan Miller 191 <[email protected]> to define increment overflow 192 behavior. 193 1942007-08-07 Leon Brocard <[email protected]> 195 * Bring the memcached.1 manpage up to date 196 1972007-08-06 Paul Lindner <[email protected]> 198 * Fix crash when using -P and -d flags on x86_64 199 with latest libevent release. 200 2012007-07-08 Steven Grimm <[email protected]> 202 203 * Item stats commands weren't thread-safe; wrap them with locks 204 when compiled in multithreaded mode. 205 * The "stats items" command now works again; it broke with the 206 introduction of the powers-of-N chunk size change. 207 2082007-07-06 [Version 1.2.3 released] 209 2102007-06-19 Paul Lindner <[email protected]> 211 212 * Solaris portability fixes from Trond Norbye 213 2142007-05-29 Paul Lindner <[email protected]> 215 216 * Properly document evictions statistic value 217 2182007-05-10 Paul Lindner <[email protected]> 219 220 * Flesh out tests for unix domain sockets and binary data. 221 * Update rpm spec file to run tests 222 2232007-05-07 Paul Lindner <[email protected]> 224 225 * Fix compilation bug on freebsd 6.x (and maybe others) 226 * Update RPM spec file per redhat bugzilla #238994 227 * Move unistd.h to memcached.h to get rid of warnings 228 * Add string.h to thread.c to get correctly prototyped strerror() 229 2302007-05-04 Paul Lindner <[email protected]> 231 232 * Add fedora/redhat style init script and RPM spec file 233 2342007-05-12 [Version 1.2.2 released] 235 2362007-04-16 Steven Grimm <[email protected]> 237 238 * Command tokenizer performance and cleanliness improvement. 239 Patch contributed by Paolo Borelli <[email protected]>. 240 2412007-04-16 Paul Lindner <[email protected]> 242 243 * Add notes to README about MacOS, libevent and kqueue. 244 245 * Windows Patch integration -- part 1, warnings elimination. 246 2472007-04-12 Paul Lindner <[email protected]> 248 249 * Allow changes to the verbosity level of the server with a new 250 "verbosity" command and some compiler cleanups. 251 Patch contributed by Paolo Borelli <[email protected]>. 252 2532007-04-08 Paul Lindner <[email protected]> 254 255 * Add cleanup patch from "Tim Yardley" <[email protected]> to 256 clean up source spacing issues, fix -Wall warnings, add some 257 null checks, adds asserts at the top of each function for any 258 use of conn *c without checking to see if c is NULL first. 259 260 * Also adjust clean-whitespace.pl to clean *.ac files. Add 261 script to test-suite to test for tabs. 262 2632007-04-04 Paul Lindner <[email protected]> 264 265 * Add clarification of flush_all in the protocol docs 266 from Elizabeth Mattijsen <[email protected]> 267 2682007-03-31 Paul Lindner <[email protected]> 269 270 * Add patch from Eli Bingham <[email protected]> to 271 re-enable the -n switch to memcached. 272 2732007-03-20 Paul Lindner <[email protected]> 274 * Add patch to collect eviction statistics from 275 Jean-Francois BUSTARRET <[email protected]>. 276 277 * Updated docs, added new test cases for t/stats.t 278 2792007-03-18 Paul Lindner <[email protected]> 280 281 * Add more test cases using larger buffer sizes up to and greater 282 than 1MB. 283 284 * Remove unused parameter to item_size_ok() 285 286 * Use a single printf() in usage() 287 288 * Add a failing test for conforming with maximum connections. 289 2902007-03-17 291 * crash fix from Thomas van Gulick <[email protected]> in 292 conn_shrink(), passing &ptr, instead of ptr to realloc(). 293 2942007-03-05 Paul Lindner <[email protected]> 295 * Fix a number of places where (s)printf calls were using unsigned 296 or signed formats that did not match their arguments. 297 298 * Add support for stdbool.h and stdint.h to use the bool and 299 uint8_t types. 300 301 * Major refactoring - move API calls for assoc/items/slabs to 302 their own individual header files. Add apropriate const and 303 static declarations as appropriate. 304 305 * Avoid type-punning. Do a more efficient realloc inside the 306 conn_shrink routine. 307 308 * Fix overflow bug where uninitialized access to slabclass caused 309 size-0 mallocs during slab preallocation. 310 311 * Use EXIT_SUCCESS/EXIT_FAILURE constants. 312 313 * Convert some sprintf calls to snprintf to protect against 314 buffer overflows. 315 316 * Explicitly compare against NULL or zero in many places. 317 3182007-03-05 319 * Steven Grimm <[email protected]>: Per-object-type stats collection 320 support. Specify the object type delimiter with the -D command line 321 option. Turn stats gathering on and off with "stats detail on" and 322 "stats detail off". Dump the per-object-type details with 323 "stats detail dump". 324 3252007-03-01 326 * Steven Grimm <[email protected]>: Fix an off-by-one error in the 327 multithreaded version's message passing code. 328 3292006-12-23 330 * fix expirations of items set with absolute expiration times in 331 the past, before the server's start time. bug was introduced in 332 1.2.0 with rel_time_t. Thanks to Adam Dixon 333 <[email protected]> for the bug report and test case! 334 3352006-11-26 336 * Steven Grimm <[email protected]>: Performance improvements: 337 338 Dynamic sizing of hashtable to reduce collisions on very large 339 caches and conserve memory on small caches. 340 341 Only reposition items in the LRU queue once a minute, to reduce 342 overhead of accessing extremely frequently-used items. 343 344 Stop listening for new connections until an existing one closes 345 if we run out of available file descriptors. 346 347 Command parser refactoring: Add a single-pass tokenizer to cut 348 down on string scanning. Split the command processing into 349 separate functions for easier profiling and better readability. 350 Pass key lengths along with the keys in all API functions that 351 need keys, to avoid needing to call strlen() repeatedly. 352 3532006-11-25 354 * Steve Peters <[email protected]>: OpenBSD has a malloc.h, 355 but warns to use stdlib.h instead 356 3572006-11-22 358 * Steven Grimm <[email protected]>: Add support for multithreaded 359 execution. Run configure with "--enable-threads" to enable. See 360 doc/threads.txt for details. 361 3622006-11-13 363 * Iain Wade <[email protected]>: Fix for UDP responses on non-"get" 364 commands. 365 3662006-10-15 367 * Steven Grimm <[email protected]>: Dynamic sizing of hashtable to 368 reduce collisions on very large caches and conserve memory on 369 small caches. 370 3712006-10-13 372 * Steven Grimm <[email protected]>: New faster hash function. 373 3742006-09-20 375 376 * don't listen on UDP by default; more clear message when UDP port in use 377 3782006-09-09 379 * release 1.2.0 (along with 1.1.13, which is the more tested branch) 380 381 nobody has run 1.2.0 in production, to my knowledge. facebook has run 382 their pre-merge-with-trunk version, but bugs were discovered (and fixed) 383 after the merge. there might be more. you've been warned. :) 384 3852006-09-04 386 * improved autoconf libevent detection, from the Tor project. 387 3882006-09-03 389 * test suite and lot of expiration, delete, flush_all, etc corner 390 case bugs fixed (Brad Fitzpatrick) 391 3922006-09-02 393 * Nathan Neulinger <[email protected]>: fix breakage in expiration code 394 causing expiration times to not be processed correctly. 395 3962006-08-21 397 * Nathan Neulinger <[email protected]>: fix incompatabilities with 398 unix domain socket support and the UDP code and clean up stale 399 sockets 400 4012006-08-20 402 * Nathan Neulinger <[email protected]>: unix domain socket support 403 4042006-05-03 405 * Steven Grimm <[email protected]>: big bunch of changes: 406 big CPU reduction work, UDP-based interface, increased memory 407 efficiency. (intertwined patch, committed all together) 408 <http://lists.danga.com/pipermail/memcached/2006-May/002164.html> 409 or see svn commit logs 410 4112006-04-30 412 * River Tarnell: autoconf work for Solaris 10. Brad: 413 merge and verify it works on Nexenta. 414 4152006-03-04 416 * avva: bucket/generation patch (old, but Brad's just finally 417 committing it) 418 4192006-01-01 420 * Brad Fitzpatrick <[email protected]>: allocate 1 slab per class 421 on start-up, to avoid confusing users with out-of-memory errors 422 later. this is 18 MB of allocation on start, unless max memory 423 allowed with -m is lower, in which case only the smaller slab 424 classes are allocated. 425 4262005-08-09 427 * Elizabeth Mattijsen <[email protected]>: needed a way to flush all 428 memcached backend servers, but not at exactly the same time (to 429 reduce load peaks), I've added some simple functionality to the 430 memcached protocol in the "flush_all" command that allows you to 431 specify a time at which the flush will actually occur (instead of 432 always at the moment the "flush_all" command is received). 433 4342005-05-25 435 * patch from Peter van Dijk <[email protected]> to make 436 stderr unbuffered, for running under daemontools 437 4382005-04-04 439 * patch from Don MacAskill <[email protected]> 'flush_all' doesn't 440 seem to work properly. Basically, if you try to add a key which 441 is present, but expired, the store fails but the old key is no 442 longer expired. 443 444 * release 1.1.12 445 4462005-01-14 447 * Date: Thu, 18 Nov 2004 15:25:59 -0600 448 From: David Phillips <[email protected]> 449 Here is a patch to configure.ac and Makefile.am to put the man page in 450 the correct location. Trying to install the man page from a 451 subdirectory results in the subdirectory being used in the install 452 path (it tries to install to doc/memcached.1). This is the correct 453 thing to do: 454 455 - create a Makefile.am in the doc directory that installs the man page 456 with man_MANS 457 - modify Makefile.am in the base directory to reference the doc 458 directory using SUBDIRS 459 - modify the AC_CONFIG_FILES macro in configure.ac to output the 460 Makefile in doc 461 462 4632005-01-14 464 * pidfile saving support from Lisa Seelye <[email protected]>, sent 465 Jan 13, 2005 466 4672005-01-14 468 * don't delete libevent events that haven't been added (the deltimer) 469 patch from Ted Schundler <[email protected]> 470 4712004-12-10 472 * document -M and -r in manpage (Doug Porter <[email protected]>) 473 4742004-07-22 475 * fix buffer overflow in items.c with 250 byte keys along with 476 other info on the same line going into a 256 byte char[]. 477 thanks to Andrei Nigmatulin <[email protected]> 478 4792004-06-15 480 * immediate deletes weren't being unlinked a few seconds, 481 preventing "add" commands to the same key in that time period. 482 thanks to Michael Alan Dorman <[email protected]> for the 483 bug report and demo script. 484 4852004-04-30 486 * released 1.1.11 487 4882004-04-24 489 * Avva: Add a new command line option: -r , to maximize core file 490 limit. 491 4922004-03-31 493 * Avva: Use getrlimit and setrlimit to set limits for number of 494 simultaneously open file descriptors. Get the current limits and 495 try to raise them if they're not enough for the specified (or the 496 default) setting of max connections. 497 4982004-02-24 499 * Adds a '-M' flag to turn off tossing items from the cache. 500 (Jason Titus <[email protected]>) 501 5022004-02-19 (Evan) 503 * Install manpage on "make install", etc. 504 5052003-12-30 (Brad) 506 * remove static build stuff. interferes with PAM setuid stuff 507 and was only included as a possible fix with the old memory 508 allocator. really shouldn't make a difference. 509 * add Jay Bonci's Debian scripts and manpage 510 * release version 1.1.10 511 5122003-12-01 (Avva) 513 * New command: flush_all, causes all existing items to 514 be invalidated immediately (without deleting them from 515 memory, merely causing memcached to no longer return them). 5162003-10-23 517 * Shift init code around to fix daemon mode on FreeBSD, 518 * and drop root only after creating the server socket (to 519 * allow the use of privileged ports) 520 * version 1.1.10pre 521 5222003-10-09 523 * BSD compile fixes from Ryan T. Dean 524 * version 1.1.9 525 5262003-09-29 527 * ignore SIGPIPE at start instead of crashing in rare cases it 528 comes up. no other code had to be modified, since everything 529 else is already dead-connection-aware. (avva) 530 5312003-09-09 (Avva, Lisa Marie Seelye <[email protected]>) 532 * setuid support 533 5342003-09-05 (Avva) 535 * accept all new connections in the same event (so we work with ET epoll) 536 * mark all items as clsid=0 after slab page reassignment to please future 537 asserts (on the road to making slab page reassignment work fully) 538 5392003-08-12 (Brad Fitzpatrick) 540 * use TCP_CORK on Linux or TCP_PUSH on BSD 541 * only use TCP_NODELAY when we don't have alternatives 542 5432003-08-10 544 * disable Nagel's Algorithm (TCP_NODELAY) for better performance (avva) 545 5462003-08-10 547 * support multiple levels of verbosity (-vv) 548 5492003-08-10 (Evan Martin) 550 * Makefile.am: debug, optimization, and static flags are controlled 551 by the configure script. 552 * configure.ac: 553 - allow specifying libevent directory with --with-libevent=DIR 554 - check for malloc.h (unavailable on BSDs) 555 - check for socklen_t (unavailable on OSX) 556 * assoc.c, items.c, slabs.c: Remove some unused headers. 557 * memcached.c: allow for nonexistence of malloc.h; #define a POSIX 558 macro to import mlockall flags. 559 5602003-07-29 561 * version 1.1.7 562 * big bug fix: item exptime 0 meant expire immediately, not never 563 * version 1.1.8 564 5652003-07-22 566 * make 'delete' take second arg, of time to refuse new add/replace 567 * set/add/replace/delete can all take abs or delta time (delta can't 568 be larger than a month) 569 5702003-07-21 571 * added doc/protocol.txt 572 5732003-07-01 574 * report CPU usage in stats 575 5762003-06-30 577 * version 1.1.6 578 * fix a number of obscure bugs 579 * more stats reporting 580 5812003-06-10 582 * removing use of Judy; use a hash. (judy caused memory fragmentation) 583 * shrink some structures 584 * security improvements 585 * version 1.1.0 586 5872003-06-18 588 * changing maxsize back to an unsigned int 589 5902003-06-16 591 * adding PHP support 592 * added CONTRIBUTORS file 593 * version 1.0.4 594 5952003-06-15 596 * forgot to distribute website/api (still learning auto*) 597 * version 1.0.3 598 5992003-06-15 600 * update to version 1.0.2 601 * autoconf/automake fixes for older versions 602 * make stats report version number 603 * change license from GPL to BSD 604 605Fri, 13 Jun 2003 10:05:51 -0700 Evan Martin <[email protected]> 606 607 * configure.ac, autogen.sh, Makefile.am: Use autotools. 608 * items.c, memcached.c: #include <time.h> for time(), 609 printf time_t as %lu (is this correct?), 610 minor warnings fixes. 611 612