)]}'
{
  "log": [
    {
      "commit": "7e056e7572c642bd7f5d5677261763f05a17e1dd",
      "tree": "9ffeadaa40ebf29a2e9bf0d7578c98f8d2a38ca2",
      "parents": [
        "a35944bfe2fabda4816e4396f92280ee9fcf789d"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sun Jul 17 07:28:28 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sun Jul 17 07:28:28 2011 +0000"
      },
      "message": "THRIFT-1222 Unhandled exception for TEvhttpServer request\nPatch: Alexandre Parenteau\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1147542 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "fd39193aa00d2098184b452bd955bd60ae39f86d",
      "tree": "5ff3a71323a64b931c995a783ff8c9c32ec9a7ff",
      "parents": [
        "9659d4d3b7ec458c6e273eb783ff7cc82adb3102"
      ],
      "author": {
        "name": "Jake Farrell",
        "email": "jfarrell@apache.org",
        "time": "Fri Jul 08 17:32:44 2011 +0000"
      },
      "committer": {
        "name": "Jake Farrell",
        "email": "jfarrell@apache.org",
        "time": "Fri Jul 08 17:32:44 2011 +0000"
      },
      "message": "THRIFT-1231: Remove bogus include\nClient: c++\nPatch: Diwaker Gupta\n\nRemoving unused import TTransportUtils.h from TAsyncChannel.h.\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1144395 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "30aae0ca877c9f5863ff881b29edc6a38df9d85a",
      "tree": "1bbc59bc6947cebbd4baf942959c4be851a41976",
      "parents": [
        "0bb3db2eedc2ae91088b6caffc2b75fb3a2a5e27"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Jul 08 12:23:31 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Jul 08 12:23:31 2011 +0000"
      },
      "message": "THRIFT-1217 Use evutil_socketpair instead of pipe\nPatch: alexandre parenteau\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1144286 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d580dc6b8a4a456669a3695ffe2755644ddee1cf",
      "tree": "4266e33ce2f87344d17483610d84dfeda91b3bde",
      "parents": [
        "2323aa9c1cd7926d68b487013f847b4b2bf85bb0"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Jun 30 20:47:09 2011 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Jun 30 20:47:09 2011 +0000"
      },
      "message": "trash an inaccurate comment (via Chad Walters)\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1141710 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "82dc2e2e96807965ea6061c0da973b5313195608",
      "tree": "2f7c66e7cb571786a4ed4d63cfc0d7bd9db66c72",
      "parents": [
        "4d116e18e7682305ce7802117370cf532e510e63"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Jun 28 17:43:30 2011 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Jun 28 17:43:30 2011 +0000"
      },
      "message": "THRIFT-1221. cpp: Remove SimpleCallback.h\n\nThis file was unused.\n\nPatch: Diwaker Gupta\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1140746 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "1ebeffb0d8be47c9e37579d89a39968008df9b2e",
      "tree": "32790faa162ce2371eda8d7ffffbc7cccd4ceef6",
      "parents": [
        "18f1050e71894472ff4ce70fa3b393fa2c77e3cd"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Jun 06 18:00:03 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Jun 06 18:00:03 2011 +0000"
      },
      "message": "THRIFT-1197 TFileTransportTest.cpp fails on slower machines\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1132712 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "18f1050e71894472ff4ce70fa3b393fa2c77e3cd",
      "tree": "a4ba436fcf288473c2032cb37c16e64cce9d7581",
      "parents": [
        "5309bd022959bed1592d3d70da97eaebc98aa282"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Jun 04 08:57:43 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Jun 04 08:57:43 2011 +0000"
      },
      "message": "THRIFT-1196 Unix Domain Socket Support is broken\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1131352 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c1fe30b94f529bbd56d69e1e17c4e9aef4037df2",
      "tree": "fb1d826f1f51edfd63e5562cbfa25f5e965db6f0",
      "parents": [
        "5218cc17427b81bcadbc9bc32e56ef6a4755e92e"
      ],
      "author": {
        "name": "Jake Farrell",
        "email": "jfarrell@apache.org",
        "time": "Wed Jun 01 20:34:26 2011 +0000"
      },
      "committer": {
        "name": "Jake Farrell",
        "email": "jfarrell@apache.org",
        "time": "Wed Jun 01 20:34:26 2011 +0000"
      },
      "message": "THRIFT-1192: Typo: TProtocol.h tests for HAVE_SYS_PARAM_H_\nClient: cpp\nPatch: Eric Rannaud\n\nFixes the typo in the check for HAVE_SYS_PARAM_H\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1130293 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "bb09f4442a783d9e9d8d46501b9e2f40ecf6e4ae",
      "tree": "60ee26e78120332c179a94e190f568dd365ce9f6",
      "parents": [
        "462af9de2a8d2f46288b84e3d6ce34a1986d8fd7"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue May 31 20:35:37 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue May 31 20:35:37 2011 +0000"
      },
      "message": "THRIFT-1166 C++ tests in test/cpp broken\nPatch: David Nadlinger, Roger Meier\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1129908 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b94b5514b54581cc207cfcbeea352c050de68e67",
      "tree": "974a424970b13988b4d123e140e6211ad291ade3",
      "parents": [
        "210d766d896849696e47c174df45686265e679d9"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon May 30 20:14:00 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon May 30 20:14:00 2011 +0000"
      },
      "message": "THRIFT-1185 Bogus forward declaration of class TAsyncTransport inside file lib/cpp/src/async/TAsyncChannel.h\nPatch: Pavlin Radoslavov\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1129346 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "330b5ae1bf198bdf719f4f2cc7bddfb0368f4070",
      "tree": "a5793c8297aeaf7333b4b1976ce6379868b5cb94",
      "parents": [
        "5671a55f8e974828fde5ce212b6c518bb4c3ebea"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Apr 18 19:46:02 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Apr 18 19:46:02 2011 +0000"
      },
      "message": "THRIFT-1139 C++ compilation of classes generated for an enum\nPatch: Xavier Lepaul\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1094710 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "0ae0542152c1a37b8beb0ae9615ce824cd4241a4",
      "tree": "941eaa80deee334f5f07e0b78f93b99384712981",
      "parents": [
        "08d46814386c5b63ad194441fa6f31bb685eb37a"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue Apr 12 19:23:10 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue Apr 12 19:23:10 2011 +0000"
      },
      "message": "THRIFT-1136 C++ SSL implementation cleanup\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1091553 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "346039367546dc7fc67cc96cc4c0920407157dbd",
      "tree": "454cbc168b58381a32d8319ce8e9a5e97fd41d38",
      "parents": [
        "2fdf05c69ea7b1a9236960f1dce9fef4087f2431"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Mar 25 12:22:17 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Mar 25 12:22:17 2011 +0000"
      },
      "message": "THRIFT-1116 Compilation error in file TSSLSocket.cpp on FreeBSD-8.0\nPatch: Pavlin Radoslavov\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1085347 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d081dd668b4c8d11de68d4e2047b3e54cfc21ec3",
      "tree": "3e26de5f0efc9247d691f2bf87dc1ca0a0a3643a",
      "parents": [
        "f51a4ce89e947204bd401c1afd0885f2f38126cc"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Mar 23 18:05:27 2011 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Mar 23 18:05:27 2011 +0000"
      },
      "message": "THRIFT-1106. cpp: C++ code TAsyncProtocolProcessor.h \u0026 TAsyncBufferProcessor.h dont have virtual functions but no virtual destructor. Causes warnings on -Wall\n\nPatch: Fasih\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1084656 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "46d32b4f082c595a6f7de54d0e683f50b4991efe",
      "tree": "74de1e45d2afafea50b384b7b9b64fc37852b724",
      "parents": [
        "9db5e50b428a1dddf86b3b79aa8d747f9631a92c"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Feb 28 16:04:51 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Feb 28 16:04:51 2011 +0000"
      },
      "message": "THRIFT-1030 C++ THttpTransport doesn\u0027t support chucked transfer encoding\nPatch: Rowan Kerr\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1075399 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9db5e50b428a1dddf86b3b79aa8d747f9631a92c",
      "tree": "f81c0fe4a530576ee3cd5213c228181dd50f6847",
      "parents": [
        "d9924984dbdf92fe85d2e03c2523651e45c37140"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sun Feb 27 19:24:45 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sun Feb 27 19:24:45 2011 +0000"
      },
      "message": "THRIFT-1070 C++ compiler and runtime have 32/64bit problems\nPatch: Rich Salz\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1075121 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "598bf48f77ad512d2235aaef73c6257a26672b5e",
      "tree": "f0f49faf849189b1f07c2bdd16f6aed442caf337",
      "parents": [
        "76d55f635784aa9dfae8ce52ce3eb49ba7f90a40"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue Feb 22 21:56:33 2011 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue Feb 22 21:56:33 2011 +0000"
      },
      "message": "THRIFT-1071 invalid cast breaks build\nPatch: Rowan Kerr\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1073526 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "cd9aea1136d9a51b2ce53a3de5da09359c9756e2",
      "tree": "489e9b3c4fd6b5fff28b5007983f752f5ed15306",
      "parents": [
        "cd2ee9ae6ea85335b4c9c3db3a421f27f583f417"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Feb 22 18:12:06 2011 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Feb 22 18:12:06 2011 +0000"
      },
      "message": "THRIFT-151. cpp: TSSLServerSocket and TSSLSocket implementation\n\nThis patch adds an implementation of the above ssl sockets.\n\nPatch: Ping Li, Kevin Worth, Rowan Kerr\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1073441 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2bbc328212ee779b96aa3cdf96f2a054a1226214",
      "tree": "4d7bb1e1fbc16e85d4f18a3f8e646dda439d4b76",
      "parents": [
        "4ebaa761cbb06964831cc69f923ba849025e9ff1"
      ],
      "author": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Tue Feb 08 23:05:47 2011 +0000"
      },
      "committer": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Tue Feb 08 23:05:47 2011 +0000"
      },
      "message": "Patch from Chris Morgan, fixing gcc warnings.\n\nTHRIFT-1057: casts in TBinaryProtocol.tcc causing \"dereferencing type-punned pointer will break strict-aliasing rules\" warnings from gcc\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1068672 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c0b5d9065c105ae73f11615717d6f071eba3e511",
      "tree": "042b09cc442afc353b1a6a89f90297c10ab4a86c",
      "parents": [
        "c2cc61a0fad68b7c72379fa4ad0588fdf5a18644"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue Nov 30 20:23:44 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Tue Nov 30 20:23:44 2010 +0000"
      },
      "message": "THRIFT-998 Silence g++ -Wswitch-enum warning in header\n\nPatch: Rich Salz\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1040758 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "cbf87cb89cf0b1e7cd3656262c642209fef235ef",
      "tree": "cbc89a238c96482bc9e0b384cda6459b1f2203a8",
      "parents": [
        "c101092ea742e1252207b6e8f680bf392292c916"
      ],
      "author": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Sun Nov 28 14:34:26 2010 +0000"
      },
      "committer": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Sun Nov 28 14:34:26 2010 +0000"
      },
      "message": "THRIFT-916: Commit THRIFT-916_fix_no-overflow.patch -- remove overflow coming from a few constants.\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1039885 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "af65f1b4781a6f7761617e67f5604413f65ceb8d",
      "tree": "8962eaf103bcd90744cbc4c6d5a3817d91e7f371",
      "parents": [
        "fea49cb8409167636a94e25f5657aeee58587f6e"
      ],
      "author": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Wed Nov 24 21:58:05 2010 +0000"
      },
      "committer": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Wed Nov 24 21:58:05 2010 +0000"
      },
      "message": "THRIFT-916: Commit a partial fix for flex-generated code infested with warnings on Mac OS X\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1038844 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5f9614cf9a8003a772e48d9d2ae5b2877d08a721",
      "tree": "e47460069ba027363c7db20592070be609f8b28e",
      "parents": [
        "d3bfe700308fa00eeed4bfa9cd76283c194c2d4a"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sun Nov 21 16:59:05 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sun Nov 21 16:59:05 2010 +0000"
      },
      "message": "THRIFT-916 long long becomes int64_t\n\nPatch: Christian Lavoie\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1037500 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d3bfe700308fa00eeed4bfa9cd76283c194c2d4a",
      "tree": "69e3499e3a2f9f11210f0e20e34e493a530b721d",
      "parents": [
        "cecbe0fc5202e5047606b881c0e047d1f9d5ca74"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Nov 20 06:48:47 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Nov 20 06:48:47 2010 +0000"
      },
      "message": "THRIFT-916 Wall_Wextra_pedantic_Wno-long-long_Wno-variadic-macros_Wno-overflow_NOWARNINGS_DebianLenny.patch applied\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1037127 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3b771a10f1b815d5168d244374cddd1014ba3c02",
      "tree": "b317075bdba17f1291f5dfda00d02cb6fe410857",
      "parents": [
        "be87ab28b06323f46835983ce2501b952978bda2"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Wed Nov 17 22:11:26 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Wed Nov 17 22:11:26 2010 +0000"
      },
      "message": "THRIFT-916 compile with -Wall -Wextra without warning on Debian Lenny\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1036250 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "01c5cebfdd0f638f09378e0a735419efc69f3c08",
      "tree": "0df562525cf8ad1953c54d1740d6eca4a97ec0f3",
      "parents": [
        "4f42ef7aa593b20fa17ad542f53c296032955fb7"
      ],
      "author": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Thu Nov 04 20:35:15 2010 +0000"
      },
      "committer": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Thu Nov 04 20:35:15 2010 +0000"
      },
      "message": "THRIFT-916: Fix warnings in C++ when compiling with -Wall.\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1031222 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4f42ef7aa593b20fa17ad542f53c296032955fb7",
      "tree": "bcb1217771ff0bc22c18c0462be2a88ec728a944",
      "parents": [
        "5aaa02166e335d6399c7345bbd8f3d83d4e481fa"
      ],
      "author": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Thu Nov 04 18:51:42 2010 +0000"
      },
      "committer": {
        "name": "Christian Lavoie",
        "email": "clavoie@apache.org",
        "time": "Thu Nov 04 18:51:42 2010 +0000"
      },
      "message": "THRIFT-953: Fix compilation of TransportTest.cpp on Mac (actual tests still fail) and fix boost m4 macros for Mac.\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1031148 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4a2bc1b161805833483b14154d07a55be3e63e26",
      "tree": "96d52dbe86e17a4aa48b94fb266cb15608e1e752",
      "parents": [
        "ae7f7fa57f9fa984711362ea88f42d21a965a642"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Nov 03 17:57:38 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Nov 03 17:57:38 2010 +0000"
      },
      "message": "THRIFT-977. cpp: Hex Conversion Bug in C++ TJSONProtocol\n\nThis patch fixes a silly bug in hex-to-int conversion in TSJONProtocol.\n\nPatch: Aravind Narayanan\n\ngit-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1030576 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "178f8f2c52907d5a9ad8e7419fdb868ff32c2449",
      "tree": "6124b4d7028fde4663d5850d7d3790835484d628",
      "parents": [
        "37b5bf8e00a0c7c6462a2397a12869d86bef65c9"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Oct 25 12:36:04 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Oct 25 12:36:04 2010 +0000"
      },
      "message": "THRIFT-916 partial commit of v3-fix-all-warnings.patch and member initialization in Thrift.h\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1027092 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "63228e53c239eac664b3933b4ed3a86d32af809a",
      "tree": "da6ac69c3fe9ac26c58c6f90c188101304db994c",
      "parents": [
        "f770befe173280bf25942294814eb8f9f3e95906"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Oct 18 17:25:40 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Oct 18 17:25:40 2010 +0000"
      },
      "message": "cpp: Support oneway calls in TDebugProtocol.cpp\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023913 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f770befe173280bf25942294814eb8f9f3e95906",
      "tree": "f20b5ee0b8a160b1ade618f4c417b4a7310c3da4",
      "parents": [
        "d11ca5a95e035aca2e9107aba66f9fad1549ffb7"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Oct 18 17:25:13 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Oct 18 17:25:13 2010 +0000"
      },
      "message": "cpp: Add a little extra whitespace to TDebugProtocol.cpp\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023912 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d11ca5a95e035aca2e9107aba66f9fad1549ffb7",
      "tree": "a23ded38f4d5e4f1911436e26222e33a8ac47372",
      "parents": [
        "5e64d51efcbaac0839ac78565a5e010843587f95"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Oct 18 08:22:57 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Oct 18 08:22:57 2010 +0000"
      },
      "message": "THRIFT-916 gcc warnings(partial) use snprintf instead of sprintf\n\nPatch: Christian Lavoie\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023682 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "0069cc4a298a15c84df5e09e4abebe8ba8a0b8a5",
      "tree": "9721d855a028e67d4fdefa10b31bbb70b7241929",
      "parents": [
        "4c5689269f767670741bc49648d419d4c6a188f1"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Wed Oct 13 18:10:18 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Wed Oct 13 18:10:18 2010 +0000"
      },
      "message": "THRIFT-916 no errors on GNU/Linux when compiling with CXXFLAGS\u003d\"-Wall -Wextra -pedantic\"\n\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1022220 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "085a3e7b6045c435bc21442c867c9d3ed8d3bb60",
      "tree": "8f6223017d09011a6f6d8eba49cd2cd041b8ccab",
      "parents": [
        "50e4349463c983aac50d37a071191391f704258a"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 08 21:23:35 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 08 21:23:35 2010 +0000"
      },
      "message": "THRIFT-926 Miscellaneous C++ improvements\n\nchanging single destructor call time limit from 500us to 1000us\nbuild does not fail on busy machines\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1006030 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "25df8e7e4ae6bd889a76d1ffacc5ec64da241223",
      "tree": "df9901a4a1c0a9a90d7aaf63a28cef9c664159ea",
      "parents": [
        "46e4f252dcc09b40f71635aaeb80476635aa8076"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:54 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:54 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Better exception handling in TSimpleServer\n\nMove processing code out of main try block and created individual\ntry/catch\u0027s for closing down the client and it\u0027s transports (to avoid\nissues with throwing exceptions from a catch block).\n\nAlso converted to using GlobalOutput instead of cerr.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005171 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "46e4f252dcc09b40f71635aaeb80476635aa8076",
      "tree": "fbe79fdf3dc65c73c87dc79cd850de06a6ad7220",
      "parents": [
        "89a12942d2fd53a3caf269f601134bd392fbf333"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:53 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:53 2010 +0000"
      },
      "message": "THRIFT-926. cpp: remove auto-stringification in TLogging.h\n\nThe T_DEBUG* and T_ERROR* macros used preprocessor stringification to\nstringify the format string argument.  This was weird and unintuitive.\n\nWith the old behavior:\n\n- Quotes surrounding the format string were included in the message:\n  T_DEBUG(\"this is a test\") --\u003e expanded to  \"\\\"this is a test\\\"\"\n\n- Backslashes in the string are escaped so they print literally:\n  T_DEBUG(\"foo\\nbar\")       --\u003e expanded to  \"\\\"foo\\\\nbar\\\"\"\n\n- Standard fixed-width integer format macros don\u0027t work:\n  T_DEBUG(\"x: %\" PRIi64, x) --\u003e expanded to  \"\\\"x: %\\\" PRIi64\"\n\nThe last item is particularly problematic, since it prevents 64-bit\nvalues from being logged portably.\n\nWith the new code, the following will no longer compile:\n\n  T_DEBUG(this is my log message: %d, 5)\n\nI don\u0027t think that is a bad thing, though.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005170 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "89a12942d2fd53a3caf269f601134bd392fbf333",
      "tree": "a17b266e332517537ac9dc7c4aee10cbd2d23e32",
      "parents": [
        "7e729d207492f8b4be9509e927b687a282039bc9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:52 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:52 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Better buffer management for TNonblockingServer\n\nAdd two improvements to memory management in TNonblocking server:\n- Separate the receive code into two distinct states: one for receiving\n  the frame header and one for the frame content.  This allows us to\n  size the initial read buffer based on the initial frame size, rather\n  than allocating an arbitrary amount of memory before reading the\n  header.\n- Allow setting the initial write buffer size based on the application\u0027s\n  expected response size.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005169 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7e729d207492f8b4be9509e927b687a282039bc9",
      "tree": "1bb2f18bb9d12f3805c95d387a8fd852e62bbfda",
      "parents": [
        "f673509f1be499bc899e204ab0d7837ebf4f418a"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:51 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:51 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Let TMemoryBuffer::resetBuffer() set size of self-allocated buffer\n\nAlthough there is a constructor that allows a TMemoryBuffer to be\ncreated with an internally-allocated buffer of a desired size, there was\nno way for resetBuffer to obtain analogous behavior. This change causes\nthe appropriate constructor to be used.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005168 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f673509f1be499bc899e204ab0d7837ebf4f418a",
      "tree": "bd3b0300c69f6043d939c40682db6a2412b41553",
      "parents": [
        "2991a0f376ab7640b7259ac8db0af820054998cd"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:49 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:49 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Thrift: throw bad_alloc when malloc fails, not something else\n\nWhen malloc/realloc fail, we\u0027ve typically just thrown a TException. This\nallows a server that should simply crash when out of memory to survive\nin a strage state, with various bad consequences. Instead, we should\nthrow bad_alloc and just not catch it (or if we decide to, be very\ncareful to respond properly).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005167 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2991a0f376ab7640b7259ac8db0af820054998cd",
      "tree": "547bdf08001c92482eb4eb32c54aea7e86119335",
      "parents": [
        "ece1a089eccad21f093de72b5fe6d730d132812c"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:47 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:47 2010 +0000"
      },
      "message": "THRIFT-926. cpp: TFramedTransport: Uphold the strong exception safety guarantee\n\nPreviously, if we had a new[] failure when growing a TFramedTransport\nwrite buffer, we would leave the buffer in an invalid state (wBufSize_\nwould reflect the desired size, rather than the actual size).  Now, we\nmake no change to any member variables if new[] fails.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005166 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ece1a089eccad21f093de72b5fe6d730d132812c",
      "tree": "6d6d894d220f8e400dbb21ad2e35e72c664b7619",
      "parents": [
        "54bec5dbd8f91305d2cd1d1f1125cf8b54fdd6bc"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:46 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:46 2010 +0000"
      },
      "message": "THRIFT-926. cpp: TMemoryBuffer: Uphold the strong exception safety guarantee\n\nPreviously, if we had a realloc failure when growing a TMemoryBuffer, we\nwould leave the buffer in an invalid state (bufferSize_ would reflect\nthe desired size, rather than the actual size).  Now, we make no change\nto any member variables if realloc fails.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005165 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "54bec5dbd8f91305d2cd1d1f1125cf8b54fdd6bc",
      "tree": "d5bb16b3c1bb1f5bdeafa1499d0c66e7e72a6b24",
      "parents": [
        "7197efb8490afebc97625de2b8a4dfcf61fe6d19"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:45 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:45 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Add configurable buffer recycling for TNonblockingServer\n\nAdd methods to TNonblockingServer to set the maximum size of idle read\nand write buffers and the check interval (in calls).  When checked, if\nthe buffers are larger than the configured maximum, they will be resized\ndown the to maximum size.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005164 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7197efb8490afebc97625de2b8a4dfcf61fe6d19",
      "tree": "4cdd1637bd864ba1dcee74e9d3c44ff276ce7492",
      "parents": [
        "109693c82a63b321b540cb3c993d918fc946dfbe"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:43 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:43 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Revert r750153 to make way for more flexible version\n\nr750153 caused TNonblockingServer to reset its buffers every 512 calls.\nA more configurable version was developed internally, so I\u0027m reverting\nthis rev first to avoid conflicts.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005163 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "109693c82a63b321b540cb3c993d918fc946dfbe",
      "tree": "a8b5942237ebc12d42e61e5888ee5d30fb0327ac",
      "parents": [
        "0a2d81e81614a73590056b4fea7688463df7c80b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:42 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:42 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Convert tests to use boost 1.37\n\nThe boost test framework has changed significantly from boost 1.34 to\n1.37.  Quite a few new features have been added, and some annoying bugs\nhave been fixed.\n\nThis change now builds the thrift tests against boost 1.37, and updates\nthem to use some of the newer features.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005162 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "0a2d81e81614a73590056b4fea7688463df7c80b",
      "tree": "f7640d3608c2a2ddcc3cb6508c060ec05b7277df",
      "parents": [
        "e5c435cccf4fdc5650c6127563b3b61de65e1762"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:40 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:40 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Fix inconsistencies in transport read() behavior\n\n- TBufferedTransport::borrow() could block if not enough data was\n  available.  Now it returns NULL immediately in this case, like all\n  other transports.\n\n- TBufferedTransport::read() could block some data was available in the\n  readahead buffer, but not enough to satisfy the request.  It would\n  attempt to call read() on the underlying transport, but this might\n  block.  Now it just returns the remaining data in the readahead\n  buffer.  The caller is responsible for calling read() again to get the\n  rest of the data they want.\n\n- TFrameTransport::read() threw an exception if read() on the underlying\n  transport returned 0 when looking for a frame header.  Now\n  TFrameTransport::read() returns 0, too.  (It still throws an exception\n  if the underlying transport returns 0 after a partial frame or frame\n  header has been read.)\n\n- TFDTransport::read() threw an exception on EINTR.  Now it retries up\n  to 5 times, similarly to the way TSocket::read() behaves.\n\n- TZlibTransport::read() could block when less data than was requested\n  is available.  Now it only calls read() on the underlying transport\n  when it would otherwise have nothing to return.\n\n  This does mean that TZlibTransport::read() now often returns less data\n  than is actually available at the time.  This required updating\n  several of the ZlibTest tests to use readAll() instead of read(),\n  since they previously assumed read() would return all available data.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005161 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e5c435cccf4fdc5650c6127563b3b61de65e1762",
      "tree": "326d1cde9434aa046536f1dee903cb0491729d53",
      "parents": [
        "d4788dfd4ae1bd04a78dc611855f70eb97355af3"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:38 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:38 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Add tests to verify blocking read behavior\n\nAdd tests that check to see whether or not read() and borrow() block\nwhen called with a length larger than the amount of data currently\navailable.\n\nAt the moment, not all of the transports behave the same way.  I believe\nthe desired behavior is:\n\n  When M bytes are available, and 0 \u003c M \u003c N:\n  - read(N): return M bytes immediately\n  - borrow(N): return NULL immediately\n\n  When 0 bytes are available:\n  - read(N): In this case, it is acceptable either to immediately return\n    0, or to block until some data is available.  If the transport\n    blocks, it returns immediately when some date becomes available,\n    even if less than N bytes are available.\n  - borrow(N): return NULL immediately\n\n- The borrow() tests fail when using TBufferedTransport.\n  TBufferedTransport incorrectly blocks until the amount of data\n  requested is available.\n\n- test_read_none_available() fails when using TFramedTransport.\n  Calling read() on a TFramedTransport when no data is available throws\n  an exception instead of returning 0.\n\n- test_read_none_available() fails when using TFDTransport.  This is\n  partly just an artifact of the fact that I use SIGALRM as part of this\n  test.  Unlike TSocket, TFDTransport doesn\u0027t retry after EINTR.\n\n- test_read_part_available() fails when using TZlibTransport around a\n  transport that has blocking read() behavior.  TZlibTransport::read()\n  loops calling read() on the underlying transport.  It should probably\n  break out of the loop and return to the caller as soon as it has\n  uncompressed any data, even if it is less than requested and more\n  might be available.  Once some data has been uncompressed,\n  TZlibTransport cannot risk calling read() again since it might block.\n\nWill commit fixes for these separately.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005160 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d4788dfd4ae1bd04a78dc611855f70eb97355af3",
      "tree": "464850819f658bd7ce70402a44586e53bfd9e53d",
      "parents": [
        "0c025e8f52096f6c9f39b80909b5b1aebf335b03"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:37 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:37 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Test wrapper transports more thoroughly\n\nUpdateS TransportTest so that the wrapper transports\n(TBufferedTransport, TFramedTransport, TZlibTransport) are tested with a\nwider variety of inner transports.  Previously they were only tested\nusing TMemoryBuffer.  Now all other transports are also tested wrapped\ninside each of these transports.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005159 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "0c025e8f52096f6c9f39b80909b5b1aebf335b03",
      "tree": "a50ae395bae21657a2510d94e22c1e6501112d7a",
      "parents": [
        "65e62d3741e226abf0caf7b7393845ad41779a61"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:36 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:36 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Update TransportTest to test TSocket\n\nMade the TSocket(int fd) constructor public, so TransportTest can create\na connected pair of TSocket transports using socketpair().\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005158 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "65e62d3741e226abf0caf7b7393845ad41779a61",
      "tree": "e4fb8b2f4a8811618b2531c5ef616953e1ece72a",
      "parents": [
        "4f9efdb460a7c54cc55b25f2c6b8955a5fcff229"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:35 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:35 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Reduce default buffer sizes for TransportTest\n\nReduce the default test buffer sizes by about 30x, reducing the time it\ntakes to run TransportTest from about 1 minute to about 2 seconds.  I\nadded a --size-multiplier argument that can be used to adjust the sizes\nof all test buffers, so developers can still run with large buffer sizes\nwhen desired.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005157 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4f9efdb460a7c54cc55b25f2c6b8955a5fcff229",
      "tree": "0c31542a9e504f19b089d4dd27660bedc8ea70f8",
      "parents": [
        "4199377a7c5dbb72679abe9c05c9663e3736a780"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:33 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:33 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Fix bugs in TFileTransport::flush()\n\nPreviously flush() had race conditions that could cause it to return\nbefore all data had actually been flushed to disk.  Now the writer\nmakes sure both buffer queues have been flushed when forceFlush_ is set.\n\nAlso, flush() did not wake up the writer thread, so it normally had to\nwait for the writer thread to wake up on its own time.  (By default,\nthis could take up to 3 seconds.)\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005156 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4199377a7c5dbb72679abe9c05c9663e3736a780",
      "tree": "5bbc4847cec0c637d02b041dbbf6bbdb08447db5",
      "parents": [
        "709b69f14c7c69b83e1752212bf51b4da67db834"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:31 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:31 2010 +0000"
      },
      "message": "THRIFT-926. cpp: TFileTransportTest timing slightly more lenient\n\nSeveral of the TFileTransportTest tests check wall clock time to make\nsure the writer thread processes operations quickly enough, and isn\u0027t\nhanging.  However, this can easily result in false failures if we don\u0027t\nget enough processor time.  This commit makes a few changes to reduce\nthe number of these failures.\n\n- No longer fail if a single destructor call takes more than 500us.\n  We only require 90% of the calls to complete in 500us.  No call may\n  take more than 100ms, though.  With this change, the test passes most\n  of the time now, even while an \"fbmake opt\" task is running in\n  parallel.\n\n- In the flush_max_us tests, make sure the writer thread is started\n  before we start recording timing.  Otherwise, creating the thread\n  could take long enough to throw off the numbers for the first fsync()\n  call.\n\nAlso tested with the pthread_cond_signal() in the TFileTransport\ndestructor commented out, to make sure the test still fails properly\nwhen the destructor takes too long.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005155 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "709b69f14c7c69b83e1752212bf51b4da67db834",
      "tree": "c9f04bd0d15b25832de0b8417d62eda12644d989",
      "parents": [
        "0e0eb354527cecdc22d1c0e6ecba06d7f747e728"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:30 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:30 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Fix destructor behavior of TFileTransport\n\nSet closing_ to true before we wake up the writer thread in the\ndestructor.  This way the writer thread flushes the data and exits when\nit is woken up.\n\nPreviously the writer thread could end up going through 2 full timeout\ncycles before exiting.  The writer thread could wake up, notice it has\nnothing to do since closing_ is not set, and immediately go back to\nsleep.  The destructor would then proceed to call flush(), which would\nwait for the writer thread to wake up (1 full time out) and clear the\nforceFlush_ flag.  After flush returns, the destructor would set\nclosing_.  It could take the writer thread another full timeout to wake\nup again and process this flag.\n\nThere were also some points where the worker threads would detect the\nclosing_ state in their loops and automatically close the file, but did\nnot zero out the file descriptor, then the destructer attempted to close\nthe same file.  Fix by simply zeroing out the fd_ at these points.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005154 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "0e0eb354527cecdc22d1c0e6ecba06d7f747e728",
      "tree": "96002a775da4764d700e299d4bca379e678cf898",
      "parents": [
        "a0e11597163def6727896a77490899681c1eb6d6"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:29 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:29 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Don\u0027t sleep in TFileTransport if we have data to write\n\nPreviously, the TFileTransport writer thread behaved as follows:\n\n  while true:\n    wait for main thread to notify new data in enqueueBuffer_\n    swap(enqueueBuffer_, dequeueBuffer_)\n    write out everything in dequeueBuffer_\n\nNow the behavior is:\n\n  while true:\n    if enqueueBuffer_ is empty\n      wait for main thread to notify new data in enqueueBuffer_\n    swap(enqueueBuffer_, dequeueBuffer_)\n    write out everything in dequeueBuffer_\n\nThe old behavior had a couple problems:\n- Writes that arrived while the writer thread was writing\n  dequeueBuffer_ wouldn\u0027t get processed immediately.  The writer thread\n  would always wait until another write occurred after it started its\n  condition variable wait, or until it timed out (3 seconds by default).\n\n- If the main thread was writing fast enough to fill up enqueueBuffer_\n  while the writer thread was still writing out dequeueBuffer_, it would\n  block the next write call until the writer thread swapped the buffers.\n  Unfortunately, the writer thread waits to do this until it the main\n  thread notifies it of another write.  This deadlock is only broken by\n  the 3 second timeout.  Performance then tanks, since the writer thread\n  now always sleeps 3 seconds each time around the loop.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005153 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a0e11597163def6727896a77490899681c1eb6d6",
      "tree": "df8bf21b710a92f520b8d8b2b940cf0b0e6fa000",
      "parents": [
        "e94fa3391db1a423b6964b0aa6499324d05b055b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:27 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:27 2010 +0000"
      },
      "message": "THRIFT-926. cpp: remove \"standalone\" distinction in TZlibTransport\n\nNow that TZlibTransport::flush() behaves the same way as other\ntransports, there is no need to distinguish between RPC and standalone\nbehavior for TZlibTransport.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005152 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e94fa3391db1a423b6964b0aa6499324d05b055b",
      "tree": "31c7ea84ea0cadc3c411fa0078e88ede3f794bd4",
      "parents": [
        "f2abcf9a563849dc5861be8aa38f764525c072b1"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:26 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:26 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Make TZlibTransport::flush() behave like other transports\n\nPreviously, TZlibTransport::flush() finished the zlib stream, so calling\nwrite() after flush() would result in an error.  Now it just flushes the\ndata, without finishing the stream.  A new TZlibTransport::finish()\nfunction has been added to finish the stream.\n\nThis breaks compatibility.  I\u0027m aware of anyone using this code outside\nof Facebook, though.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005151 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f2abcf9a563849dc5861be8aa38f764525c072b1",
      "tree": "cc186334ba89995a6eb31ff2b2cdfab90e3c9c7c",
      "parents": [
        "9a961e7750bd9d0393802df4d7a3bb6996a3339b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:24 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:24 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Use boost::lognormal_distribution in ZlibTest\n\nThis way we no longer have to have a huge hard-coded list of numbers in\nthe source code.  The distribution is randomly generated for each run.\n(Although the --seed argument can be used for repeatablity.)\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005150 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9a961e7750bd9d0393802df4d7a3bb6996a3339b",
      "tree": "472f07117c164d728f470fa2b967c54a9374c47c",
      "parents": [
        "3cc9dab229951aecf59cd229a45007013cb57fba"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:23 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:23 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Convert ZlibTest to use the boost unit test framework\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005149 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3cc9dab229951aecf59cd229a45007013cb57fba",
      "tree": "4fba76fadcbd2b3231a076b7f82f733f5232ef8a",
      "parents": [
        "56cb796bcecb1e2fef8ab23d8f3f60418502ba10"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:21 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:21 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Remove TZlibTest dependency on filesystem data\n\nPreviously, ZlibTest read a file from disk to get data to test with.\nIt would fail unless gen-cpp/DebugProtoTest_types.tcc was present in the\ncurrent directory and was at least 32kB long.\n\nNow ZlibTest simply generates 3 separate buffers to test with.  The\nfirst buffer is just all \"a\"s, the second is some random sequential\nruns, and the third is completely random.  They usually seem to have\ncompression ratios of around 315:1, 4:1, and 1:1, respectively.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005148 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "56cb796bcecb1e2fef8ab23d8f3f60418502ba10",
      "tree": "fe8fc0005c3ac09fc0c0bb9ab42dc768b11714c0",
      "parents": [
        "35dc7695a95e4e0c3e311faca5341a2e365b9ea0"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:20 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:20 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Fix a couple minor issues in ZlibTest\n\n- Add a necessary cast.\n- Check buffer sizes more carefully to allow for different read/write\n  size distributions.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005147 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "35dc7695a95e4e0c3e311faca5341a2e365b9ea0",
      "tree": "8e2c4355bdc06ae32911705e815d98769accc105",
      "parents": [
        "105961de04cf064981b70e8ec8458c196e0ee17e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:19 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:19 2010 +0000"
      },
      "message": "THRIFT-929. cpp: Add unit test for transport functionality\n\nTests various transport types by writing data, and verifying it can be\nread back successfully.  Tests both virtual calls (accessed as\nTTransport*) and non-virtual calls (accessed as the appropriate pointer\ntype, or as TBufferBase* when appropriate).\n\nThis is similar to some of the tests already performed in\nTMemoryBufferTest and ZlibTest.cpp.  However, this tests a few more\ntransport types, and it interleaves read and write calls more heavily.\n(It currently exposes some bugs in flush() in a couple transports.) It\nalso exercises both the virtual and non-virtual code paths, now that\nread() and write() only result in virtual calls when invoked on a\nTTransport*.\n\nTFileTransport currently has several race condition bugs, so most of the\nTFileTransport tests ususally fail.  It also has some performance bugs,\ncausing the TFileTransport tests to take a long time.  Will fix those\nissues separately.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005146 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "105961de04cf064981b70e8ec8458c196e0ee17e",
      "tree": "1b23d9cc439f34e50bf5d771732be4d80c934596",
      "parents": [
        "67f56ec6ab7a89c72d607efe620f85a885fc088e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:17 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:17 2010 +0000"
      },
      "message": "THRIFT-928. cpp: TNonblockingServer: use TSocket and support TClientInfo\n\nModify TNonblockingServer to use TSocket for I/O and support server\nevent handlers; this enables TClientInfo to function with a minor change\nto the processing loop.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005145 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "67f56ec6ab7a89c72d607efe620f85a885fc088e",
      "tree": "7da9591d90b66f230c893d42e2e7f54b433880eb",
      "parents": [
        "44ff76f5147010694187e6ae95a3978fd7a71fb2"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:16 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:16 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Remove TServerSocket as a friend class of TSocket\n\nThis is no longer necessary now that TSocket::TSocket(int) is public.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005144 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "44ff76f5147010694187e6ae95a3978fd7a71fb2",
      "tree": "107de4c06e6bbcb6674963a4e6e67f0bbf35cb63",
      "parents": [
        "64637511d2c987dc0df9d8466e7ce3626d005425"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:15 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:15 2010 +0000"
      },
      "message": "THRIFT-925. cpp: Add _VALUES_TO_NAMES enum map\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005143 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a8af11dde6194e7449388148ed573347895b9229",
      "tree": "691561ba85042a2f8ffe92c8fb2cbc377923a4c4",
      "parents": [
        "c3b3622158009ea9db85607a4901d05c63108875"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:11 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:11 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Fix an errant argument to a debug statement\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005141 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c3b3622158009ea9db85607a4901d05c63108875",
      "tree": "5c5a7d4452958349f93bb7f6d5c67ea3a9938e12",
      "parents": [
        "23248713345e36d8ed66704a9a58a5f39a48d942"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:10 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:10 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Add profiling code to help conversion to C++ templates\n\nAdd some profiling code to track when potentially unnecessary virtual\ncalls are made in the thrift C++ serialization and deserialization code.\nThis can be used to help service implementors determine which places in\ntheir code should be updated to use an appropriate thrift template\nclass.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005140 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "23248713345e36d8ed66704a9a58a5f39a48d942",
      "tree": "e6aa7c9d97776a88be24ba1de8ca6cabcbacec05",
      "parents": [
        "b7762a032aa4190c6b99a5394e69b29aceb57281"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:08 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:08 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Thrift Server Client Stats\n\nAdd the ability for Thrift servers to monitor client connections.  It is\nactivated by #including server/TClientInfo.h and creating 1) a\nTClientInfoCallHandler passed to the processor with setEventHandler()\nand 2) a TClientInforServerHandler passed to the server with\nsetServerEventHandler().\n\nThe result vector, showing active connections, provides client address\nand the thrift call it is executing (or last executed), the time\nconnected, and the number of calls made since connection.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005139 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b7762a032aa4190c6b99a5394e69b29aceb57281",
      "tree": "ebfc006c1ca2324ada5116d0edaa2f6717f7bf1e",
      "parents": [
        "8dfc732af635d5243194b74d4f411a551ff9a5ee"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:00 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:00 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Update C++ generator to emit templatized code\n\nWhen the \"templates\" option is passed to the C++ generator, it now emits\ntemplatized versions of the client and processor.  Generated types emit\ntemplatized read() and write() functions.\n\nThis allows the generated code to invoke the correct non-virtual\nTTransport and TProtocol implementations, resulting in faster\nserialization and deserialization.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005138 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8dfc732af635d5243194b74d4f411a551ff9a5ee",
      "tree": "75dfa730b6c7b66efa544f5daf1d51636e5cae99",
      "parents": [
        "e71115be6caa2f3afd6fa092a09fd41c2c355691"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:58 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:58 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Fix C++ compilation when using list\u003cbool\u003e\n\nThe STL specializes vector\u003cbool\u003e to store the values as individual bits, rather\nthan bools.  Therefore, when using a Thrift list\u003cbool\u003e, readBool() gets invoked\nnot with a bool\u0026, but with a std::vector\u003cbool\u003e::reference.\n\nTProtocol does provide a readBool(std::vector\u003cbool\u003e::reference) implementation.\nHowever, almost all TProtocol subclasses defined only readBool(bool\u0026), which\nhides the other overloaded versions of readBool().  As a result, the code\nworked only when accessing TProtocol objects via a \"TProtocol*\", and not\ndirectly via the subclass type.  When using C++ templates, protocol objects do\nget invoked via pointers to the subclass type, causing compile failures when\nstd::vector\u003cbool\u003e is used.\n\nThis change updates the various TProtocol implementations to also provide\nreadBool(std::vector\u003cbool\u003e::reference).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005137 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e71115be6caa2f3afd6fa092a09fd41c2c355691",
      "tree": "e4eae6a053b7a04a0734685f3e58733630fbca81",
      "parents": [
        "6806fb836a6a846ae450f06a22deef1e59c2a983"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:56 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:56 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Templatize binary and compact protocol\n\nConvert TBinaryProtocol and TCompactProtocol to template classes, taking\nthe transport class as a template parameter.  This allows them to make\nnon-virtual calls when using the template, improving serialization\nperformance.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005136 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "6806fb836a6a846ae450f06a22deef1e59c2a983",
      "tree": "706559164d1e161ca94bc78ea658a97a52553d6f",
      "parents": [
        "e879c2f4db4bc0b7e5a0edfdf669c4fa477123a0"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:52 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:52 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Convert protocol classes to use non-virtual functions\n\nUpdated the thrift protocol classes to use non-virtual calls for most\nfunctions.  The correct implementation is determined at compile time via\ntemplates now.  Only the base TProtocol class falls back to using\nvirtual function calls.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005135 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e879c2f4db4bc0b7e5a0edfdf669c4fa477123a0",
      "tree": "68b3554d062d4bbd46b14d0c4c0ceed0ba856982",
      "parents": [
        "72fd0b415f7fe4f84988b52346b380f17b528c90"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:50 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:50 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Convert transport classes to use non-virtual calls\n\nUpdate the thrift transport classes to use non-virtual calls for most\nfunctions.  The correct implementation is determined at compile time via\ntemplates now.  Only the base TTransport class falls back to using\nvirtual function calls.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005134 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "72fd0b415f7fe4f84988b52346b380f17b528c90",
      "tree": "237529b51ee0f6a66d94d6694785f2881c8cbf09",
      "parents": [
        "ea051ca793bfe68b554d4dd39b48cc237cae53d9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:47 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:47 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Add shortcutted version of readAll() in TBufferBase\n\nJust perform a memcpy() if all of the requested data is available in the\nbuffer.  This improves performance a little in the common case.  It has\na bigger impact with the upcoming template changes.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005133 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ea051ca793bfe68b554d4dd39b48cc237cae53d9",
      "tree": "935c83bc5f0d33dac87466a281bfeb9bfd38ae9a",
      "parents": [
        "c6b4cab89c6da0272914a07b1f01491031df524f"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:46 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:46 2010 +0000"
      },
      "message": "THRIFT-922. cpp: When reading strings, borrow first\n\nAttempt to get a pointer to the internal transport buffer before copying\nonto the heap.  This improves performance TFramedTransport and\nTMemoryBuffer, and with TBufferedTransport if the string fits within the\nbuffer.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005132 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ef7200f6e825db54edfa4736192446c96b2ae1d4",
      "tree": "30115f97266d45ec4811f424441ae32000df8889",
      "parents": [
        "18cd0f03340c3eeead9b691e0d9b8a055035eec2"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:42 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:42 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Include request/response size in processor callbacks\n\nRequired updating transport interface.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005129 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "18cd0f03340c3eeead9b691e0d9b8a055035eec2",
      "tree": "525bb4bc983c4ff375fb7454fbbb2f93c55c2989",
      "parents": [
        "5ddabb8e3f63a15874e436c9a650dc17f7dd7028"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:39 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:39 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Make clients call writeEnd on their transports before flush\n\nChanging the order of these calls makes more sense from the perspective\nof logical operations.  It also simplifies the upcoming stats collection\ncode.  No clients should be affected.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005128 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5ddabb8e3f63a15874e436c9a650dc17f7dd7028",
      "tree": "4e22ac0f769e0dda25c8a77734020c5d9a408770",
      "parents": [
        "d7192063e141c8374c2256e9fea9b7571e5fc71e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:37 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:37 2010 +0000"
      },
      "message": "THRIFT-923. cpp: Implement a fully nonblocking server and client\n\nThere are three major parts of this:\n1/ New callback-style interfaces for for a few key Thrift components:\n   TAsyncProcessor for servers and TAsyncChannel for clients.\n2/ Concrete implementations of TAsyncChannel and a server for\n   TAsyncProcessor based on evhttp.\n3/ Async-style code generation for C++\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005127 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d7192063e141c8374c2256e9fea9b7571e5fc71e",
      "tree": "8da8cd317b1394f2ced4bbe5da7f07addb784a43",
      "parents": [
        "8c535ab87c3eaa35f1c94ca9dd1aeb5930425c3b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:33 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:33 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Processor-level event callbacks\n\n- Add a TProcessorEventHandler callback interface.\n- Add methods to TProcessor to hold an instance of the interface.\n- Add code to the compiler to make the processor call callbacks at key points.\n- Add an optional processor event handler to the test server.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005126 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8c535ab87c3eaa35f1c94ca9dd1aeb5930425c3b",
      "tree": "8bdf9e55f7962ea2ad51da2e8df8b248805895fc",
      "parents": [
        "1df96ce22fcfa3cbc2700eb4be29e5d457167d15"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:31 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:31 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Revert the BufferBase part of r750585\n\nr750585 included two logically distinct changes, one of which was not\nreferenced in the commit message and was not reviewed by a C++\nmaintainer.  It was committed more-or-less by accident.  This patch\nreverts that part of the change since it conflicts with the template\ncode in some complicated ways.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005125 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8a441a46ad56b6f1f9d15ecadcc604a8b4c27c59",
      "tree": "5aa5d28a4c5530e0109ee820a6e435fe0caccf35",
      "parents": [
        "5bb525ccf938e3b183814f92097a96bb85941e07"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Oct 04 21:13:36 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Mon Oct 04 21:13:36 2010 +0000"
      },
      "message": "THRIFT-940 use BOOST_LDFLAGS for unit tests, required to build on Mac OS X\n\nPatch: Christian Lavoie\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004431 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a18364ac88b035e9433a0238b8fbe75285aa04f3",
      "tree": "8e0e14db71433dde1ebd6f34a4fab028431ab535",
      "parents": [
        "ca67b899594004966f002a82ff126e0916f133d4"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 14:36:07 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 14:36:07 2010 +0000"
      },
      "message": "THRIFT-900. cpp: Unix domain socket\n\nThis patch adds a new Unix Socket transport.\n\nPatch: Roger Meier\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1002179 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7a0825c34da505371aaaded74565108fa01f526c",
      "tree": "d5bf5d749fdab783bba793ff85d08e4f72647faa",
      "parents": [
        "fb790d726297cfa85900db00214fc0f3a9d029e6"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 16:42:18 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 16:42:18 2010 +0000"
      },
      "message": "THRIFT-856. cpp: Building cpp library fails on OS X with malloc and free not being declared in scope\n\nThis patch adds include which seems to fix the problem for some people.\n\nPatch: James Clarke\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@992013 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8ede81860c5b6c93645c62e871c213b4188e7162",
      "tree": "2e9325beccc0da26967f2be2a39ad552b8bd3ee8",
      "parents": [
        "383e9495667afbd686beb89bb510433fdd4cfe82"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Sep 02 15:26:28 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Sep 02 15:26:28 2010 +0000"
      },
      "message": "THRIFT-798. cpp: Reduce resource leakage by TNonblockingServer destructor\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991980 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "383e9495667afbd686beb89bb510433fdd4cfe82",
      "tree": "3cf72e09b19021ede1bab7cff6e72301c3652e1d",
      "parents": [
        "d6a02ff99bcee734d5335c91f5ada41d7322ecb4"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 15:16:56 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 15:16:56 2010 +0000"
      },
      "message": "THRIFT-567. cpp: Can\u0027t immediately stop a TSimpleServer thread that is idle\n\nThis interrupts the server in addition to setting the stop flag.\n\nPatch: Rush Manbert\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991974 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "010f1e09d09d7a5169b3468399928b6e807aab29",
      "tree": "2b6aafbd9cd56ab3dd96e3651a8603808e0d44b8",
      "parents": [
        "ee8255d0867da74510574afe634c692603c7d7aa"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 00:56:53 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 00:56:53 2010 +0000"
      },
      "message": "THRIFT-756. cpp: Exposing TSocket(int) constructor to public\n\nThis patch changes the raw socket handle constructor from protected to public.\n\nPatch: Rajat Goel\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991785 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "351e22b52afcbe9b40e0933f80b06b479dff50f4",
      "tree": "bf08ca7a10a6adca594d44ae22111008f2ccb0ee",
      "parents": [
        "f261dd795c4004c72c7efd66c4b09f66299bfc83"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Aug 31 16:51:19 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Aug 31 16:51:19 2010 +0000"
      },
      "message": "THRIFT-503. cpp: Move the tests built by \"make check\" under lib/cpp\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991246 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2b45589aa3ac0c9584b9c136a2f3aa09c82170fd",
      "tree": "bb79a4b55e5d41a60c0bfde8140a84a34be48835",
      "parents": [
        "618777d975d1e19d63b097db2d3817a701464044"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Aug 31 16:51:11 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Aug 31 16:51:11 2010 +0000"
      },
      "message": "THRIFT-500. Remove unnecessary \"ACLOCAL_AMFLAGS\" line from lib/cpp/Makefile.am\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991242 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "184d26237a3d0a5449a29350a74c2240bf1097e8",
      "tree": "5879b2ba219f2a44dddbac5f239ef1838114cd89",
      "parents": [
        "3ff373e26e633fe728c7d93485db637bbb534a85"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Aug 17 17:43:58 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Aug 17 17:43:58 2010 +0000"
      },
      "message": "THRIFT-851. php: php extension fails to compile on centos 5.x\n\nThis patch introduces an approach that is compatbile with both centos and Mac.\n\nPatch: Todd Lipcon\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@986410 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "cdde1854e7d2eb27577bec89336f1ec007195478",
      "tree": "5e7bdf24ec5a0ef485fb5166b2fa926c9058dbf9",
      "parents": [
        "7b1128c94fa330fdf18300ba24868ef49b510520"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Aug 13 02:06:08 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Aug 13 02:06:08 2010 +0000"
      },
      "message": "THRIFT-247. Commit files missing from r985031\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@985068 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "112e30985bdd71433a736bdc16019d22adccb59c",
      "tree": "b722a214bed798647a849274fda35376169a430b",
      "parents": [
        "e2350512c9e2bcff8f5d3c2a3108e2573e85a1a5"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Aug 12 23:03:29 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Aug 12 23:03:29 2010 +0000"
      },
      "message": "THRIFT-247. cpp: Basic THttpServer implementation for C++\n\nThis does not integrate with any existing HTTP server.  Rather, it is a\ntransport that parses HTTP requests to allow any of the blocking\nsocket-based servers to handle HTTP.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@985031 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7ba364f7d80624d378be67624a92cda43665b091",
      "tree": "3efd5d4bfc3d2599f71cce1687a21e25101c3ca3",
      "parents": [
        "a7bd2f20ff8301040e80debdf2d9c91ccbe55c14"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 20:45:37 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 20:45:37 2010 +0000"
      },
      "message": "revert unintentional partial commit of THRIFT-247\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@980204 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "23f2348fae272f68622bb12f3c271edf721ca1eb",
      "tree": "c9c2d9a7b0edbe0639514885686aa4a5e07084b4",
      "parents": [
        "dcfb0025df86fcc0e372ba33e851981cb54c49fe"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 18:23:22 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 18:23:22 2010 +0000"
      },
      "message": "add ASL to a handful of files\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@980145 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "318a328aec8062d6edf5efcd41dc8702a8595253",
      "tree": "3e2803b6f9d64d6639b8ef53643594384fdb90a7",
      "parents": [
        "f35a9b9152b66fc47c36ff25240e7704172d18ae"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Mar 22 02:34:57 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Mar 22 02:34:57 2010 +0000"
      },
      "message": "THRIFT-736. cpp: Check for availability of pthread_mutex_timedlock\n\nr920679 introduced a call to pthread_mutex_timedlock, which is not\navailable on all UNIX variants.  In particular, it is missing on Mac OS.\nAdd a preprocessor check for the relevant feature macro.  If it fails,\njust use a trylock.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@925940 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5f013bb45d0c380b034c2099614ab1ba5eaea021",
      "tree": "071d8b8681eea052bc052c8a2961163d64b85872",
      "parents": [
        "767c1a90fed87d36aaf077322bb9225eff98ee52"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Mar 10 22:11:26 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Mar 10 22:11:26 2010 +0000"
      },
      "message": "cpp: Fix build problems introduced by r920682\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@921591 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "767c1a90fed87d36aaf077322bb9225eff98ee52",
      "tree": "74d9259050c94d86340354fad23257060f67aa10",
      "parents": [
        "450c240592b35c9706832fc853e0345cf5800c0d"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:28 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:28 2010 +0000"
      },
      "message": "cpp: Minor TSocketPool cleanups\n\n- Make sure the underlying socket is always closed.\n- Don\u0027t reconnect on repeated calls to open.\n- Move some code outside of a try block.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920691 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "450c240592b35c9706832fc853e0345cf5800c0d",
      "tree": "4e66c1262e215846a47111a29cdd5b9443ffc6ed",
      "parents": [
        "472fffb37530256702006ef00b6fcf949ecbc26c"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:26 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:26 2010 +0000"
      },
      "message": "cpp: Make an implicit virtual declaration explicit\n\nThis changes nothing since it\u0027s already declared virtual in the parent,\nbut this is clearer.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920690 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "472fffb37530256702006ef00b6fcf949ecbc26c",
      "tree": "7dcbdd2a01874a87d1831d03f5a8cea3e0c76633",
      "parents": [
        "ccd4bdb2aebee869c537c8a38fd1c00e9ac706b3"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:24 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:24 2010 +0000"
      },
      "message": "cpp: Don\u0027t leak memory on realloc failure in TNonblockingServer\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920689 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ccd4bdb2aebee869c537c8a38fd1c00e9ac706b3",
      "tree": "6101fccc2ad876b0a713bcb12cc99ed37790e268",
      "parents": [
        "336c29dbbeca40543a028c731be6d5c26aeeb363"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:21 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:21 2010 +0000"
      },
      "message": "cpp: Implement peek() for TFileTransport\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920688 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "336c29dbbeca40543a028c731be6d5c26aeeb363",
      "tree": "08468c3b5e5adee97a14735944ca9b1a4f134a7f",
      "parents": [
        "8af018bf13789a48af8a49827a0d18d26925d73f"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:19 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:19 2010 +0000"
      },
      "message": "cpp: Prevent TFileTransport seekToEnd from leaking memory\n\nIn seekToEnd we loop on readEvent to skip through the last chunk, but\nthe complete events returned are disowned by readState_ and therefore\nmust be freed by the caller.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920687 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8af018bf13789a48af8a49827a0d18d26925d73f",
      "tree": "594eac09f6b2be97fc19fb18992468ec6d570ed1",
      "parents": [
        "1c20c871d218f479e101f6e9fb25231189d1bf72"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:17 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:17 2010 +0000"
      },
      "message": "cpp: Prevent TFileTransport from throwing uncaught exceptions\n\nFilleTransport::writerThread throws exceptions. This function is run\ninside the writer thread, so these exceptions are not caught. When these\nexceptions happen, the system aborts.\n\nThe fix is to first eliminate all the throw commands inside this function. In\naddition, add some error recovery logic into the code: whenever an IO error\nhappens, we enter into an error recovery mode. Go to sleep for a few seconds\nthen try to reopen the file.\n\nNote: Currently, when errors happen, we drop events.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920686 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "1c20c871d218f479e101f6e9fb25231189d1bf72",
      "tree": "1929b75c9c431d890abe0810b4609b9ebcef084f",
      "parents": [
        "71a1530c74340e95a95a1b0b6c5699fbc082a9d9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:14 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:14 2010 +0000"
      },
      "message": "cpp: Add setLowRTO to TSocket\n\nlow tcp RTO might mitigate TCP incast problems. Adding the setLowRTO\nfunction to TSocket allows us to experiment with a solution.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920685 13f79535-47bb-0310-9956-ffa450edef68\n"
    }
  ],
  "next": "71a1530c74340e95a95a1b0b6c5699fbc082a9d9"
}
