)]}'
{
  "log": [
    {
      "commit": "56b6e32173997d66d6e86093e1f4856c9354d8f3",
      "tree": "90cde269e1b076e6ce64eb66d381e9766c78f118",
      "parents": [
        "bc8109faffb4358249efa9a6e8c4e8dc769070d8"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Oct 23 22:16:51 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Oct 23 22:16:51 2010 +0000"
      },
      "message": "THRIFT-6 csharp AssemblyInfo added\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1026700 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "bc8109faffb4358249efa9a6e8c4e8dc769070d8",
      "tree": "fa4845b363b8d899a350f7f2ea0b0a724d7f1381",
      "parents": [
        "e703ed2ce689fce7b57af1f7299ccbfdc99adaee"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Oct 23 22:01:54 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Oct 23 22:01:54 2010 +0000"
      },
      "message": "THRIFT-6 accidently changed name of ThriftMSBuildTask to Thrift, reverted\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1026690 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e703ed2ce689fce7b57af1f7299ccbfdc99adaee",
      "tree": "03e0e78f8a7536f5a884c822875dd4ecf999dbc4",
      "parents": [
        "2287278140256323491d8879dbc9592f71cbd1a9"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Oct 22 20:23:57 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Oct 22 20:23:57 2010 +0000"
      },
      "message": "THRIFT-745. java: Make it easier to instantiate servers\n\nThis patch replaces the multitude of constructors with builder-esque Args objects for each server and single constructor.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1026482 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2287278140256323491d8879dbc9592f71cbd1a9",
      "tree": "bbbe00e3773daa589f62b86341b49d77ba3754ad",
      "parents": [
        "8166073e7fc4b4a13bbbcc464328f03d0a89b577"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 22 11:20:25 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 22 11:20:25 2010 +0000"
      },
      "message": "THRIFT-6 update Version Info for several languages, add print-version to Makefile.am\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1026299 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8166073e7fc4b4a13bbbcc464328f03d0a89b577",
      "tree": "950c555f1d1a3360d25f5d4d246619231c9d3481",
      "parents": [
        "206c0dc1af226521eb7fccf3890182741fb56cc1"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 20 19:04:07 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 20 19:04:07 2010 +0000"
      },
      "message": "THRIFT-959. java: TSocket seems to do its own buffering inefficiently\n\nThis patch removes the buffering from TSocket. This seems to improve performance marginally on small reads and writes that are buffered elsewhere (like the Framed Transport).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1025678 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "206c0dc1af226521eb7fccf3890182741fb56cc1",
      "tree": "e7f8560ef03fd6a3fb06c525189a46f36a36d09e",
      "parents": [
        "2376684d86215e0ef1415f8820d9a2a797dcd3a0"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 19 23:00:27 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 19 23:00:27 2010 +0000"
      },
      "message": "THRIFT-947. java: Provide a helper method to determine the TProtocol used to serialize some data.\n\nPatch: Mathias Herberts\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1024455 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2376684d86215e0ef1415f8820d9a2a797dcd3a0",
      "tree": "3ef2ebb0e9388f19166e2cf14ed5ae17b30d59b2",
      "parents": [
        "1b13083defbde2dae2baf535eeae272c7c9e1ab0"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 19 18:06:45 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 19 18:06:45 2010 +0000"
      },
      "message": "THRIFT-957. java: THsHaServer: Change access modifier of the invoker field.\n\nThis patch adds a new overridable method to allow subclasses to specify their own Runnable implementation.\n\nPatch: Benjamin Coverston\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1024343 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "1b13083defbde2dae2baf535eeae272c7c9e1ab0",
      "tree": "15bec9226ee662d97caa94d33726b91334d29174",
      "parents": [
        "63228e53c239eac664b3933b4ed3a86d32af809a"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 19 17:20:57 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 19 17:20:57 2010 +0000"
      },
      "message": "THRIFT-106. java: TSSLServerSocket\n\nThis patch adds support for SSL-encrypted client and server sockets.\n\nPatch: Nirmal Ranganathan\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1024328 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": "5e64d51efcbaac0839ac78565a5e010843587f95",
      "tree": "69896a0a0114992637a058e16953f57e470ad05c",
      "parents": [
        "f04cfca79716258c97415527ddc47ac87c83a802"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Oct 16 15:54:36 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Sat Oct 16 15:54:36 2010 +0000"
      },
      "message": "THRIFT-916 t_java_generator.cc: remove compiler warnings for enumerations not handled in switch\n\nPatch: Christian Lavoie\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023317 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f04cfca79716258c97415527ddc47ac87c83a802",
      "tree": "10fc8d216ea2a8c8097e0f17b829538ba95effa0",
      "parents": [
        "421dfbea6348ea5fdc1c8bb870f8940715f080fa"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 15 19:24:32 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 15 19:24:32 2010 +0000"
      },
      "message": "THRIFT-893  add JavaScript to the tutorial example (html only)\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023077 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "421dfbea6348ea5fdc1c8bb870f8940715f080fa",
      "tree": "430430332b9c92bed7bed899518932bb8454c28c",
      "parents": [
        "e8ddffe7bafbdcccd86db79b6a0dd7c60df4af05"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 15 19:12:44 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 15 19:12:44 2010 +0000"
      },
      "message": "THRIFT-807 JavaScript: Initialization of Base Types with 0 instead of null\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023073 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e8ddffe7bafbdcccd86db79b6a0dd7c60df4af05",
      "tree": "f921114dc9ee9d1aedef18d1df6a23ddf0104e01",
      "parents": [
        "c991270de6361bcd86319bf02201d2074c9a93d9"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Oct 15 16:40:34 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Oct 15 16:40:34 2010 +0000"
      },
      "message": "THRIFT-958. java: Change accessmodifer on trans_ field in the FrameBuffer class to public.\n\nPatch: Benjamin Coverston\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1023008 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c991270de6361bcd86319bf02201d2074c9a93d9",
      "tree": "7c964248a896d0db40a49b89835ba87e69d46ece",
      "parents": [
        "3b76fa3638ff91a76c518bfbc480a18e17d01e09"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 15 13:16:05 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 15 13:16:05 2010 +0000"
      },
      "message": "THRIFT-913 Test Case for Url encoded strings + simple enhancement to lib/js/test/RunTestServer.sh\nand ignore gen-* and *.class\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1022907 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3b76fa3638ff91a76c518bfbc480a18e17d01e09",
      "tree": "0f9ce14823cb8e3da2d47b225f76bd3c9ee69cd4",
      "parents": [
        "63c938bfa139fa088d2a1776614d7f882d71edc1"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Thu Oct 14 17:56:03 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Thu Oct 14 17:56:03 2010 +0000"
      },
      "message": "THRIFT-955 remove CharLowerBuff function for mingw based Thrift Compiler\n\u003d\u003e no lowercase names and directories which was inconsistent for using across different platforms\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1022630 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "63c938bfa139fa088d2a1776614d7f882d71edc1",
      "tree": "9721d855a028e67d4fdefa10b31bbb70b7241929",
      "parents": [
        "0069cc4a298a15c84df5e09e4abebe8ba8a0b8a5"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Wed Oct 13 20:02:54 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Wed Oct 13 20:02:54 2010 +0000"
      },
      "message": "ignore a few test binaries\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1022274 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": "4c5689269f767670741bc49648d419d4c6a188f1",
      "tree": "349d2070c906bfcfbea20b66e371334cc2bc6a7e",
      "parents": [
        "21cd3180ef915ec8f1a2fa33520bcb529e5a1c41"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 12 22:32:23 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Oct 12 22:32:23 2010 +0000"
      },
      "message": "THRIFT-951. java: Add a new isServing() method to TServer\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1021941 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "21cd3180ef915ec8f1a2fa33520bcb529e5a1c41",
      "tree": "3ca3519b827a1046a97d0dd9027ad9c6660f94de",
      "parents": [
        "8684df9a7986e785ceffb8316c8592558bd7707c"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Oct 11 22:13:23 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Oct 11 22:13:23 2010 +0000"
      },
      "message": "spacing cleanup\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1021535 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8684df9a7986e785ceffb8316c8592558bd7707c",
      "tree": "a5935b9faa63f49f0c572e140bb0183fc98b9f97",
      "parents": [
        "9a3ec701d814334f6c20ed0f69b3bbcbcca6a6e5"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Oct 11 22:01:27 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Oct 11 22:01:27 2010 +0000"
      },
      "message": "clear a bunch of java warnings, unused code and imports, etc\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1021531 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9a3ec701d814334f6c20ed0f69b3bbcbcca6a6e5",
      "tree": "f476b789ecf900700a6cb319c35135302c235c4b",
      "parents": [
        "052bbef327eda51ddde5845a2794c344eab8e3a0"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Oct 11 21:56:50 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Oct 11 21:56:50 2010 +0000"
      },
      "message": "update svn:ignore in test/py.twisted\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1021528 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "052bbef327eda51ddde5845a2794c344eab8e3a0",
      "tree": "f476b789ecf900700a6cb319c35135302c235c4b",
      "parents": [
        "085a3e7b6045c435bc21442c867c9d3ed8d3bb60"
      ],
      "author": {
        "name": "Mark Slee",
        "email": "mcslee@apache.org",
        "time": "Mon Oct 11 21:45:13 2010 +0000"
      },
      "committer": {
        "name": "Mark Slee",
        "email": "mcslee@apache.org",
        "time": "Mon Oct 11 21:45:13 2010 +0000"
      },
      "message": "THRIFT-952. TBinarySerializer utility class for converting between byte strings and PHP objects\n\nAdds a nice TBinarySerializer class to make it simple to convert between PHP objects and serialized strings using the Binary protocol.\n\nPatch: Radu Marin\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1021521 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": "50e4349463c983aac50d37a071191391f704258a",
      "tree": "6c62c7693693afd96c8d846aaa01f734708784e2",
      "parents": [
        "f969bcb7d89f3f50dba4528a673464f668fb2905"
      ],
      "author": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 08 17:46:06 2010 +0000"
      },
      "committer": {
        "name": "Roger Meier",
        "email": "roger@apache.org",
        "time": "Fri Oct 08 17:46:06 2010 +0000"
      },
      "message": "THRIFT-581 Add a testsuite for txThrift (Twisted) / py.twisted\n\nPatch: Esteve Fernandez\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005923 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f969bcb7d89f3f50dba4528a673464f668fb2905",
      "tree": "a97809b35756c458109424222fd5a55ee95fb84b",
      "parents": [
        "b3d0aa0c82ea5769b2a5dc7268e05c398d361726"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 20:04:40 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 20:04:40 2010 +0000"
      },
      "message": "THRIFT-862. java: Async client issues / improvements\n\nThis patch improves quite a large number of things about the async client code.\n\nPatch: Ning Liang\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005221 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b3d0aa0c82ea5769b2a5dc7268e05c398d361726",
      "tree": "db995ed5f7f6325197f9d1086f670e8deca6ae04",
      "parents": [
        "ef6a1766ceeddac8345aa3102e4d33af4ecd8432"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 20:00:03 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 20:00:03 2010 +0000"
      },
      "message": "THRIFT-946. java: Augment FieldValueMetaData so it differentiates \u0027string\u0027 and \u0027binary\u0027 fields.\n\nThis patch adds a new method to the FieldMetaData class that indicates binary or not.\n\nPatch: Mathias Herberts\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005220 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ef6a1766ceeddac8345aa3102e4d33af4ecd8432",
      "tree": "591419ff6d5aa32b0f37eff7ad571c1c676751c9",
      "parents": [
        "25df8e7e4ae6bd889a76d1ffacc5ec64da241223"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:55 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:55 2010 +0000"
      },
      "message": "THRIFT-927. php: Option to support modifying the PHP include path\n\nMake the PHP generator recognize a new-style namespace called \"php.path\".\nIf it is present, it is segmented and used as a path to include the\ngenerated code.  (It goes between \"packages\" and the Thrit file basename.)\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005172 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": "64637511d2c987dc0df9d8466e7ce3626d005425",
      "tree": "c0374fb3bdc2e75a84900bc6de70def5e16e8e3d",
      "parents": [
        "a8af11dde6194e7449388148ed573347895b9229"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:13 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:13 2010 +0000"
      },
      "message": "THRIFT-924. php: Fix missing comma in generated PHP struct constants\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005142 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": "c6b4cab89c6da0272914a07b1f01491031df524f",
      "tree": "69d677b9dbdee0b8fbd2a947054676323ae1ff23",
      "parents": [
        "f62126dbb30f1d9ec9a8744206c598016d366e7a"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:45 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:45 2010 +0000"
      },
      "message": "THRIFT-923. cpp: Add completion notification to async clients\n\nAdd a virtual function \"completed__(bool)\" to xxxCobClient that is\ncalled by recv_xxx() after reception of a response (arg \u003d true) or an\nexception (arg \u003d false). This allows the TAsyncClient to intercede at\nthat point, permitting, e.g., the load-balancing of persistent\nconnections that would otherwise remain bound to a single server.\n\nA new \"no_client_completion\" flag inhibits generation of this mechanism.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005131 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f62126dbb30f1d9ec9a8744206c598016d366e7a",
      "tree": "15763d767ead1c053ee0b5f1b6356878f26de546",
      "parents": [
        "ef7200f6e825db54edfa4736192446c96b2ae1d4"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:43 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:43 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Prefix function name with service name\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005130 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": "1df96ce22fcfa3cbc2700eb4be29e5d457167d15",
      "tree": "a7cab95eaf9e0822c3f669211e9734477fcaf0ca",
      "parents": [
        "ded25bbe0d82ce151c633addd3b96d5c3e0c4dc1"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:28:10 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:28:10 2010 +0000"
      },
      "message": "THRIFT-945. java: TAsyncClient class\u0027s currentMethod is never set, hence a second call on the same client will fail if a previous call is ongoing.\n\nThis patch adds a test for the problem and fixes the issue by setting the current method after a call has been started.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004865 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ded25bbe0d82ce151c633addd3b96d5c3e0c4dc1",
      "tree": "1be1ea7deb5adf52ce6b97c11d2477442c39200b",
      "parents": [
        "c657447e0edd882ffc6144ca81c1f1d3cccae048"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:23:30 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:23:30 2010 +0000"
      },
      "message": "THRIFT-941. php:  Make PHP C Extension use the defined Protocol writeMessageBegin function\n\nThis patch causes the C extension to call into user-land to get the correct writeMessageBegin function.\n\nPatch: Chris Goffinet\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004864 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c657447e0edd882ffc6144ca81c1f1d3cccae048",
      "tree": "6876346b8e65935ecee2f07d1dc93dc72f113eaa",
      "parents": [
        "ffca7e17202bc045f6a5ac3489c9f6a5e3b61d4c"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:12:33 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:12:33 2010 +0000"
      },
      "message": "THRIFT-932. hs: Haskell tests need to be run through \u0027make check\u0027 (and probably \u0027cabal check\u0027) too\n\nTests are now self-contained and correctly exit after running. There\u0027s a single run script which has improved error messages and defaults to the thrift binary compiled in the current source directory instead of those in PATH. And as a bonus hooks both cabal check and running the tests to make check. \n\nPatch: Christian Lavoie\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004861 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ffca7e17202bc045f6a5ac3489c9f6a5e3b61d4c",
      "tree": "99a32275ad8e684c681afc3b866bbebb54fa0fc0",
      "parents": [
        "371372e83284a767354cf7f30a545cd0ec26d6b4"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:01:43 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Oct 06 00:01:43 2010 +0000"
      },
      "message": "THRIFT-944. hs: Support all version-4s of base\n\nPatch: Christian Lavoie\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004859 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "371372e83284a767354cf7f30a545cd0ec26d6b4",
      "tree": "4518e008d41501ac972a4bc27f0895d13884d2fa",
      "parents": [
        "687c412c10cba2013fce0984dab18bb9aa49e8d9"
      ],
      "author": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Tue Oct 05 17:08:08 2010 +0000"
      },
      "committer": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Tue Oct 05 17:08:08 2010 +0000"
      },
      "message": "THRIFT-933 : looks fine, and cabal check looks good as well\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004716 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "687c412c10cba2013fce0984dab18bb9aa49e8d9",
      "tree": "2d720f9a1216f9e57b8cb3f9c34fa7bb6dc203d2",
      "parents": [
        "ddcf32ab9cb342de899f6c572b5ecb64be2a8fb1"
      ],
      "author": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Tue Oct 05 16:47:52 2010 +0000"
      },
      "committer": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Tue Oct 05 16:47:52 2010 +0000"
      },
      "message": "THRIFT-943: fix typo\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004709 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ddcf32ab9cb342de899f6c572b5ecb64be2a8fb1",
      "tree": "eecea15d32cf6720f860ff43c70e4b33a374e228",
      "parents": [
        "41d3058dbf45d3e771192052f1f15ba1b6daf5d3"
      ],
      "author": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Tue Oct 05 16:45:50 2010 +0000"
      },
      "committer": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Tue Oct 05 16:45:50 2010 +0000"
      },
      "message": "disable php extension if php-config is missing\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004707 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "41d3058dbf45d3e771192052f1f15ba1b6daf5d3",
      "tree": "9431866345872172f9410dfd775d0fc47eb3791c",
      "parents": [
        "9e7ba8cbacd5d09eb2af4c76eb82f7df5e0b8739"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 16:39:29 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 16:39:29 2010 +0000"
      },
      "message": "THRIFT-868. Make const values work properly with typdefs\n\nJust requires calling get_true_type in the right spot.  Because \"the\nright spot\" is under src/parse, get_true_type had to be moed from\nt_generator to t_type.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004703 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9e7ba8cbacd5d09eb2af4c76eb82f7df5e0b8739",
      "tree": "a7f99d7e03ac9d9a9aa8f7a17b139f9cceb5f1b0",
      "parents": [
        "3e07a8f23371ae9a96c55b4d81c31c9c57ace92b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 16:39:27 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 16:39:27 2010 +0000"
      },
      "message": "compiler: Move t_type::generate_fingerprint to a .cc file\n\nForcing all of the functions under src/parse to be defined in header\nfiles is silly and sometimes painful.  Createa a \"parse.cc\" file for\nfunctions that don\u0027t belong in header files.  To start, move\ngenerate_fingerprint there, because it requires including md5.h.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004702 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3e07a8f23371ae9a96c55b4d81c31c9c57ace92b",
      "tree": "a5fc3c5f2753607991f08bdd4d918b5322e08742",
      "parents": [
        "653eadab2fd65051d36b117237ba0a91596cb8bf"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 02:38:59 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 02:38:59 2010 +0000"
      },
      "message": "erlang: Use Automake SUBDIRS instead of a manual forwarding rule\n\nPreviously, lib/erl/Makefile.am would forward rules like \"all\" and\n\"clean\" to the src subdir by manually invoking a submake.  However,\nspecifying src as a SUBDIR accomplishes this more easily and also\nensures that other rules like \"distclean\" work.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004510 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "653eadab2fd65051d36b117237ba0a91596cb8bf",
      "tree": "576426e89e032c47fb5fa26be97922b305d4cbe7",
      "parents": [
        "8a441a46ad56b6f1f9d15ecadcc604a8b4c27c59"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 02:38:58 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 05 02:38:58 2010 +0000"
      },
      "message": "THRIFT-841. Exclude generated php and erlang Makefiles from \"make dist\"\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1004509 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": "5bb525ccf938e3b183814f92097a96bb85941e07",
      "tree": "456557d59dde6efedc845c02d0c8c82d628088e9",
      "parents": [
        "e1ae6b45d556dc6e92aeaaa855206be807fbe8a3"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 30 19:36:05 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 30 19:36:05 2010 +0000"
      },
      "message": "THRIFT-939. java: optional binary fields throw NPE on default byte[] getters\n\nThis patch deals with null ByteBuffers correctly.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1003212 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e1ae6b45d556dc6e92aeaaa855206be807fbe8a3",
      "tree": "08942a7b20b87f329ed21016bc9e9a88ae1039aa",
      "parents": [
        "f0755e95c7f69d48cc994b80c02b940d9878a386"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 17:44:45 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 17:44:45 2010 +0000"
      },
      "message": "bump versions to 0.6.0\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1002294 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f0755e95c7f69d48cc994b80c02b940d9878a386",
      "tree": "51be15a5578ff70812aa502d1a39f55c44f100a4",
      "parents": [
        "a18364ac88b035e9433a0238b8fbe75285aa04f3"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 15:06:38 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 15:06:38 2010 +0000"
      },
      "message": "update the CHANGES file\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1002207 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": "ca67b899594004966f002a82ff126e0916f133d4",
      "tree": "8517205cd847f47315bf122a6cf39129e959efb7",
      "parents": [
        "b1a283f11e50650acc1b0730200b17bf8c5fac07"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Sep 28 03:30:17 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Sep 28 03:30:17 2010 +0000"
      },
      "message": "contrib/fb303: use pure_enums in C++ for compatibility\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1002000 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b1a283f11e50650acc1b0730200b17bf8c5fac07",
      "tree": "946a409d029cb0735b2a280e9c8baa2cdd2d9fc7",
      "parents": [
        "84a7c2a901ee11433ca755edad1c278172ba7644"
      ],
      "author": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Tue Sep 28 00:11:01 2010 +0000"
      },
      "committer": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Tue Sep 28 00:11:01 2010 +0000"
      },
      "message": "THRIFT-912. java: Fix some bugs in SASL implementation, update protocol spec slightly\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001973 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "84a7c2a901ee11433ca755edad1c278172ba7644",
      "tree": "a1fd80a229ba9d0613bca15cd417f8e39d2f82ea",
      "parents": [
        "4abfb288ab76b2291b49e4f9439107c3bcb26d7a"
      ],
      "author": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Tue Sep 28 00:02:53 2010 +0000"
      },
      "committer": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Tue Sep 28 00:02:53 2010 +0000"
      },
      "message": "THRIFT-931. java: Add log4j.properties missing from previous commit\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001971 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4abfb288ab76b2291b49e4f9439107c3bcb26d7a",
      "tree": "eb98338fdc092abc207f91a2bdf506fbb2dd736d",
      "parents": [
        "fcaa8f5364931155ba5675db7a02d898abf07998"
      ],
      "author": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Tue Sep 28 00:01:31 2010 +0000"
      },
      "committer": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Tue Sep 28 00:01:31 2010 +0000"
      },
      "message": "THRIFT-890. java: Add README missing from previous commit\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001970 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "fcaa8f5364931155ba5675db7a02d898abf07998",
      "tree": "3f344a18e6f6f0f09d0b17f02b3b239249267e91",
      "parents": [
        "a406b90fa27221119baf09625345487de26db0a7"
      ],
      "author": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Mon Sep 27 23:51:22 2010 +0000"
      },
      "committer": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Mon Sep 27 23:51:22 2010 +0000"
      },
      "message": "THRIFT-931. java: Use log4j for Java tests\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001967 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a406b90fa27221119baf09625345487de26db0a7",
      "tree": "c3461d004a333d5f3372cc851749668264ab6eec",
      "parents": [
        "71a58a87648c03309d00d959af74ca45c7700cfd"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Sep 27 23:37:44 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Mon Sep 27 23:37:44 2010 +0000"
      },
      "message": "THRIFT-787. compiler: Enums are not read correctly\n\nThis patch removes unnecessary enum value resolution code from all the individual generators. It\u0027s been unnecessary since forever ago when we made the compiler force the global resolution of values.\n\nPatch: Christian Lavoie\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001966 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "71a58a87648c03309d00d959af74ca45c7700cfd",
      "tree": "57c7c1cccf26fbb367a1027342c36650697b2770",
      "parents": [
        "515c2381b71cf997c17a70c144bfc622a388c6a0"
      ],
      "author": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Mon Sep 27 19:27:40 2010 +0000"
      },
      "committer": {
        "name": "Anthony F. Molinaro",
        "email": "molinaro@apache.org",
        "time": "Mon Sep 27 19:27:40 2010 +0000"
      },
      "message": "THRIFT-918 : better haskell tests\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001883 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "515c2381b71cf997c17a70c144bfc622a388c6a0",
      "tree": "004962a12a6f147c57b34909be656d29e41acd7a",
      "parents": [
        "fa6eaca7623c90a23adf088ee20f125cf7b2c388"
      ],
      "author": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Mon Sep 27 18:26:07 2010 +0000"
      },
      "committer": {
        "name": "Todd Lipcon",
        "email": "todd@apache.org",
        "time": "Mon Sep 27 18:26:07 2010 +0000"
      },
      "message": "THRIFT-890. java: Fix tutorial to build and run in trunk\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1001856 13f79535-47bb-0310-9956-ffa450edef68\n"
    }
  ],
  "next": "fa6eaca7623c90a23adf088ee20f125cf7b2c388"
}
