)]}'
{
  "log": [
    {
      "commit": "105961de04cf064981b70e8ec8458c196e0ee17e",
      "tree": "1b23d9cc439f34e50bf5d771732be4d80c934596",
      "parents": [
        "67f56ec6ab7a89c72d607efe620f85a885fc088e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:17 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:17 2010 +0000"
      },
      "message": "THRIFT-928. cpp: TNonblockingServer: use TSocket and support TClientInfo\n\nModify TNonblockingServer to use TSocket for I/O and support server\nevent handlers; this enables TClientInfo to function with a minor change\nto the processing loop.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005145 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "67f56ec6ab7a89c72d607efe620f85a885fc088e",
      "tree": "7da9591d90b66f230c893d42e2e7f54b433880eb",
      "parents": [
        "44ff76f5147010694187e6ae95a3978fd7a71fb2"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:16 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:16 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Remove TServerSocket as a friend class of TSocket\n\nThis is no longer necessary now that TSocket::TSocket(int) is public.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005144 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "44ff76f5147010694187e6ae95a3978fd7a71fb2",
      "tree": "107de4c06e6bbcb6674963a4e6e67f0bbf35cb63",
      "parents": [
        "64637511d2c987dc0df9d8466e7ce3626d005425"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:15 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:15 2010 +0000"
      },
      "message": "THRIFT-925. cpp: Add _VALUES_TO_NAMES enum map\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005143 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a8af11dde6194e7449388148ed573347895b9229",
      "tree": "691561ba85042a2f8ffe92c8fb2cbc377923a4c4",
      "parents": [
        "c3b3622158009ea9db85607a4901d05c63108875"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:11 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:11 2010 +0000"
      },
      "message": "THRIFT-926. cpp: Fix an errant argument to a debug statement\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005141 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c3b3622158009ea9db85607a4901d05c63108875",
      "tree": "5c5a7d4452958349f93bb7f6d5c67ea3a9938e12",
      "parents": [
        "23248713345e36d8ed66704a9a58a5f39a48d942"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:10 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:10 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Add profiling code to help conversion to C++ templates\n\nAdd some profiling code to track when potentially unnecessary virtual\ncalls are made in the thrift C++ serialization and deserialization code.\nThis can be used to help service implementors determine which places in\ntheir code should be updated to use an appropriate thrift template\nclass.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005140 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "23248713345e36d8ed66704a9a58a5f39a48d942",
      "tree": "e6aa7c9d97776a88be24ba1de8ca6cabcbacec05",
      "parents": [
        "b7762a032aa4190c6b99a5394e69b29aceb57281"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:08 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:08 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Thrift Server Client Stats\n\nAdd the ability for Thrift servers to monitor client connections.  It is\nactivated by #including server/TClientInfo.h and creating 1) a\nTClientInfoCallHandler passed to the processor with setEventHandler()\nand 2) a TClientInforServerHandler passed to the server with\nsetServerEventHandler().\n\nThe result vector, showing active connections, provides client address\nand the thrift call it is executing (or last executed), the time\nconnected, and the number of calls made since connection.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005139 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b7762a032aa4190c6b99a5394e69b29aceb57281",
      "tree": "ebfc006c1ca2324ada5116d0edaa2f6717f7bf1e",
      "parents": [
        "8dfc732af635d5243194b74d4f411a551ff9a5ee"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:00 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:10:00 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Update C++ generator to emit templatized code\n\nWhen the \"templates\" option is passed to the C++ generator, it now emits\ntemplatized versions of the client and processor.  Generated types emit\ntemplatized read() and write() functions.\n\nThis allows the generated code to invoke the correct non-virtual\nTTransport and TProtocol implementations, resulting in faster\nserialization and deserialization.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005138 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8dfc732af635d5243194b74d4f411a551ff9a5ee",
      "tree": "75dfa730b6c7b66efa544f5daf1d51636e5cae99",
      "parents": [
        "e71115be6caa2f3afd6fa092a09fd41c2c355691"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:58 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:58 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Fix C++ compilation when using list\u003cbool\u003e\n\nThe STL specializes vector\u003cbool\u003e to store the values as individual bits, rather\nthan bools.  Therefore, when using a Thrift list\u003cbool\u003e, readBool() gets invoked\nnot with a bool\u0026, but with a std::vector\u003cbool\u003e::reference.\n\nTProtocol does provide a readBool(std::vector\u003cbool\u003e::reference) implementation.\nHowever, almost all TProtocol subclasses defined only readBool(bool\u0026), which\nhides the other overloaded versions of readBool().  As a result, the code\nworked only when accessing TProtocol objects via a \"TProtocol*\", and not\ndirectly via the subclass type.  When using C++ templates, protocol objects do\nget invoked via pointers to the subclass type, causing compile failures when\nstd::vector\u003cbool\u003e is used.\n\nThis change updates the various TProtocol implementations to also provide\nreadBool(std::vector\u003cbool\u003e::reference).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005137 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e71115be6caa2f3afd6fa092a09fd41c2c355691",
      "tree": "e4eae6a053b7a04a0734685f3e58733630fbca81",
      "parents": [
        "6806fb836a6a846ae450f06a22deef1e59c2a983"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:56 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:56 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Templatize binary and compact protocol\n\nConvert TBinaryProtocol and TCompactProtocol to template classes, taking\nthe transport class as a template parameter.  This allows them to make\nnon-virtual calls when using the template, improving serialization\nperformance.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005136 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "6806fb836a6a846ae450f06a22deef1e59c2a983",
      "tree": "706559164d1e161ca94bc78ea658a97a52553d6f",
      "parents": [
        "e879c2f4db4bc0b7e5a0edfdf669c4fa477123a0"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:52 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:52 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Convert protocol classes to use non-virtual functions\n\nUpdated the thrift protocol classes to use non-virtual calls for most\nfunctions.  The correct implementation is determined at compile time via\ntemplates now.  Only the base TProtocol class falls back to using\nvirtual function calls.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005135 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e879c2f4db4bc0b7e5a0edfdf669c4fa477123a0",
      "tree": "68b3554d062d4bbd46b14d0c4c0ceed0ba856982",
      "parents": [
        "72fd0b415f7fe4f84988b52346b380f17b528c90"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:50 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:50 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Convert transport classes to use non-virtual calls\n\nUpdate the thrift transport classes to use non-virtual calls for most\nfunctions.  The correct implementation is determined at compile time via\ntemplates now.  Only the base TTransport class falls back to using\nvirtual function calls.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005134 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "72fd0b415f7fe4f84988b52346b380f17b528c90",
      "tree": "237529b51ee0f6a66d94d6694785f2881c8cbf09",
      "parents": [
        "ea051ca793bfe68b554d4dd39b48cc237cae53d9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:47 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:47 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Add shortcutted version of readAll() in TBufferBase\n\nJust perform a memcpy() if all of the requested data is available in the\nbuffer.  This improves performance a little in the common case.  It has\na bigger impact with the upcoming template changes.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005133 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ea051ca793bfe68b554d4dd39b48cc237cae53d9",
      "tree": "935c83bc5f0d33dac87466a281bfeb9bfd38ae9a",
      "parents": [
        "c6b4cab89c6da0272914a07b1f01491031df524f"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:46 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:46 2010 +0000"
      },
      "message": "THRIFT-922. cpp: When reading strings, borrow first\n\nAttempt to get a pointer to the internal transport buffer before copying\nonto the heap.  This improves performance TFramedTransport and\nTMemoryBuffer, and with TBufferedTransport if the string fits within the\nbuffer.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005132 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ef7200f6e825db54edfa4736192446c96b2ae1d4",
      "tree": "30115f97266d45ec4811f424441ae32000df8889",
      "parents": [
        "18cd0f03340c3eeead9b691e0d9b8a055035eec2"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:42 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:42 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Include request/response size in processor callbacks\n\nRequired updating transport interface.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005129 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "18cd0f03340c3eeead9b691e0d9b8a055035eec2",
      "tree": "525bb4bc983c4ff375fb7454fbbb2f93c55c2989",
      "parents": [
        "5ddabb8e3f63a15874e436c9a650dc17f7dd7028"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:39 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:39 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Make clients call writeEnd on their transports before flush\n\nChanging the order of these calls makes more sense from the perspective\nof logical operations.  It also simplifies the upcoming stats collection\ncode.  No clients should be affected.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005128 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5ddabb8e3f63a15874e436c9a650dc17f7dd7028",
      "tree": "4e22ac0f769e0dda25c8a77734020c5d9a408770",
      "parents": [
        "d7192063e141c8374c2256e9fea9b7571e5fc71e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:37 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:37 2010 +0000"
      },
      "message": "THRIFT-923. cpp: Implement a fully nonblocking server and client\n\nThere are three major parts of this:\n1/ New callback-style interfaces for for a few key Thrift components:\n   TAsyncProcessor for servers and TAsyncChannel for clients.\n2/ Concrete implementations of TAsyncChannel and a server for\n   TAsyncProcessor based on evhttp.\n3/ Async-style code generation for C++\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005127 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d7192063e141c8374c2256e9fea9b7571e5fc71e",
      "tree": "8da8cd317b1394f2ced4bbe5da7f07addb784a43",
      "parents": [
        "8c535ab87c3eaa35f1c94ca9dd1aeb5930425c3b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:33 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:33 2010 +0000"
      },
      "message": "THRIFT-928. cpp: Processor-level event callbacks\n\n- Add a TProcessorEventHandler callback interface.\n- Add methods to TProcessor to hold an instance of the interface.\n- Add code to the compiler to make the processor call callbacks at key points.\n- Add an optional processor event handler to the test server.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005126 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8c535ab87c3eaa35f1c94ca9dd1aeb5930425c3b",
      "tree": "8bdf9e55f7962ea2ad51da2e8df8b248805895fc",
      "parents": [
        "1df96ce22fcfa3cbc2700eb4be29e5d457167d15"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:31 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 06 17:09:31 2010 +0000"
      },
      "message": "THRIFT-922. cpp: Revert the BufferBase part of r750585\n\nr750585 included two logically distinct changes, one of which was not\nreferenced in the commit message and was not reviewed by a C++\nmaintainer.  It was committed more-or-less by accident.  This patch\nreverts that part of the change since it conflicts with the template\ncode in some complicated ways.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1005125 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a18364ac88b035e9433a0238b8fbe75285aa04f3",
      "tree": "8e0e14db71433dde1ebd6f34a4fab028431ab535",
      "parents": [
        "ca67b899594004966f002a82ff126e0916f133d4"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 14:36:07 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Sep 28 14:36:07 2010 +0000"
      },
      "message": "THRIFT-900. cpp: Unix domain socket\n\nThis patch adds a new Unix Socket transport.\n\nPatch: Roger Meier\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@1002179 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7a0825c34da505371aaaded74565108fa01f526c",
      "tree": "d5bf5d749fdab783bba793ff85d08e4f72647faa",
      "parents": [
        "fb790d726297cfa85900db00214fc0f3a9d029e6"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 16:42:18 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 16:42:18 2010 +0000"
      },
      "message": "THRIFT-856. cpp: Building cpp library fails on OS X with malloc and free not being declared in scope\n\nThis patch adds include which seems to fix the problem for some people.\n\nPatch: James Clarke\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@992013 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8ede81860c5b6c93645c62e871c213b4188e7162",
      "tree": "2e9325beccc0da26967f2be2a39ad552b8bd3ee8",
      "parents": [
        "383e9495667afbd686beb89bb510433fdd4cfe82"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Sep 02 15:26:28 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Sep 02 15:26:28 2010 +0000"
      },
      "message": "THRIFT-798. cpp: Reduce resource leakage by TNonblockingServer destructor\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991980 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "383e9495667afbd686beb89bb510433fdd4cfe82",
      "tree": "3cf72e09b19021ede1bab7cff6e72301c3652e1d",
      "parents": [
        "d6a02ff99bcee734d5335c91f5ada41d7322ecb4"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 15:16:56 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 15:16:56 2010 +0000"
      },
      "message": "THRIFT-567. cpp: Can\u0027t immediately stop a TSimpleServer thread that is idle\n\nThis interrupts the server in addition to setting the stop flag.\n\nPatch: Rush Manbert\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991974 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "010f1e09d09d7a5169b3468399928b6e807aab29",
      "tree": "2b6aafbd9cd56ab3dd96e3651a8603808e0d44b8",
      "parents": [
        "ee8255d0867da74510574afe634c692603c7d7aa"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 00:56:53 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Thu Sep 02 00:56:53 2010 +0000"
      },
      "message": "THRIFT-756. cpp: Exposing TSocket(int) constructor to public\n\nThis patch changes the raw socket handle constructor from protected to public.\n\nPatch: Rajat Goel\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991785 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "184d26237a3d0a5449a29350a74c2240bf1097e8",
      "tree": "5879b2ba219f2a44dddbac5f239ef1838114cd89",
      "parents": [
        "3ff373e26e633fe728c7d93485db637bbb534a85"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Aug 17 17:43:58 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Tue Aug 17 17:43:58 2010 +0000"
      },
      "message": "THRIFT-851. php: php extension fails to compile on centos 5.x\n\nThis patch introduces an approach that is compatbile with both centos and Mac.\n\nPatch: Todd Lipcon\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@986410 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "cdde1854e7d2eb27577bec89336f1ec007195478",
      "tree": "5e7bdf24ec5a0ef485fb5166b2fa926c9058dbf9",
      "parents": [
        "7b1128c94fa330fdf18300ba24868ef49b510520"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Aug 13 02:06:08 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Aug 13 02:06:08 2010 +0000"
      },
      "message": "THRIFT-247. Commit files missing from r985031\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@985068 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "112e30985bdd71433a736bdc16019d22adccb59c",
      "tree": "b722a214bed798647a849274fda35376169a430b",
      "parents": [
        "e2350512c9e2bcff8f5d3c2a3108e2573e85a1a5"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Aug 12 23:03:29 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Aug 12 23:03:29 2010 +0000"
      },
      "message": "THRIFT-247. cpp: Basic THttpServer implementation for C++\n\nThis does not integrate with any existing HTTP server.  Rather, it is a\ntransport that parses HTTP requests to allow any of the blocking\nsocket-based servers to handle HTTP.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@985031 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7ba364f7d80624d378be67624a92cda43665b091",
      "tree": "3efd5d4bfc3d2599f71cce1687a21e25101c3ca3",
      "parents": [
        "a7bd2f20ff8301040e80debdf2d9c91ccbe55c14"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 20:45:37 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 20:45:37 2010 +0000"
      },
      "message": "revert unintentional partial commit of THRIFT-247\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@980204 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "23f2348fae272f68622bb12f3c271edf721ca1eb",
      "tree": "c9c2d9a7b0edbe0639514885686aa4a5e07084b4",
      "parents": [
        "dcfb0025df86fcc0e372ba33e851981cb54c49fe"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 18:23:22 2010 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Wed Jul 28 18:23:22 2010 +0000"
      },
      "message": "add ASL to a handful of files\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@980145 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "318a328aec8062d6edf5efcd41dc8702a8595253",
      "tree": "3e2803b6f9d64d6639b8ef53643594384fdb90a7",
      "parents": [
        "f35a9b9152b66fc47c36ff25240e7704172d18ae"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Mar 22 02:34:57 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Mar 22 02:34:57 2010 +0000"
      },
      "message": "THRIFT-736. cpp: Check for availability of pthread_mutex_timedlock\n\nr920679 introduced a call to pthread_mutex_timedlock, which is not\navailable on all UNIX variants.  In particular, it is missing on Mac OS.\nAdd a preprocessor check for the relevant feature macro.  If it fails,\njust use a trylock.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@925940 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "767c1a90fed87d36aaf077322bb9225eff98ee52",
      "tree": "74d9259050c94d86340354fad23257060f67aa10",
      "parents": [
        "450c240592b35c9706832fc853e0345cf5800c0d"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:28 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:28 2010 +0000"
      },
      "message": "cpp: Minor TSocketPool cleanups\n\n- Make sure the underlying socket is always closed.\n- Don\u0027t reconnect on repeated calls to open.\n- Move some code outside of a try block.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920691 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "450c240592b35c9706832fc853e0345cf5800c0d",
      "tree": "4e66c1262e215846a47111a29cdd5b9443ffc6ed",
      "parents": [
        "472fffb37530256702006ef00b6fcf949ecbc26c"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:26 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:26 2010 +0000"
      },
      "message": "cpp: Make an implicit virtual declaration explicit\n\nThis changes nothing since it\u0027s already declared virtual in the parent,\nbut this is clearer.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920690 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "472fffb37530256702006ef00b6fcf949ecbc26c",
      "tree": "7dcbdd2a01874a87d1831d03f5a8cea3e0c76633",
      "parents": [
        "ccd4bdb2aebee869c537c8a38fd1c00e9ac706b3"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:24 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:24 2010 +0000"
      },
      "message": "cpp: Don\u0027t leak memory on realloc failure in TNonblockingServer\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920689 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ccd4bdb2aebee869c537c8a38fd1c00e9ac706b3",
      "tree": "6101fccc2ad876b0a713bcb12cc99ed37790e268",
      "parents": [
        "336c29dbbeca40543a028c731be6d5c26aeeb363"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:21 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:21 2010 +0000"
      },
      "message": "cpp: Implement peek() for TFileTransport\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920688 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "336c29dbbeca40543a028c731be6d5c26aeeb363",
      "tree": "08468c3b5e5adee97a14735944ca9b1a4f134a7f",
      "parents": [
        "8af018bf13789a48af8a49827a0d18d26925d73f"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:19 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:19 2010 +0000"
      },
      "message": "cpp: Prevent TFileTransport seekToEnd from leaking memory\n\nIn seekToEnd we loop on readEvent to skip through the last chunk, but\nthe complete events returned are disowned by readState_ and therefore\nmust be freed by the caller.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920687 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8af018bf13789a48af8a49827a0d18d26925d73f",
      "tree": "594eac09f6b2be97fc19fb18992468ec6d570ed1",
      "parents": [
        "1c20c871d218f479e101f6e9fb25231189d1bf72"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:17 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:17 2010 +0000"
      },
      "message": "cpp: Prevent TFileTransport from throwing uncaught exceptions\n\nFilleTransport::writerThread throws exceptions. This function is run\ninside the writer thread, so these exceptions are not caught. When these\nexceptions happen, the system aborts.\n\nThe fix is to first eliminate all the throw commands inside this function. In\naddition, add some error recovery logic into the code: whenever an IO error\nhappens, we enter into an error recovery mode. Go to sleep for a few seconds\nthen try to reopen the file.\n\nNote: Currently, when errors happen, we drop events.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920686 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "1c20c871d218f479e101f6e9fb25231189d1bf72",
      "tree": "1929b75c9c431d890abe0810b4609b9ebcef084f",
      "parents": [
        "71a1530c74340e95a95a1b0b6c5699fbc082a9d9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:14 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:14 2010 +0000"
      },
      "message": "cpp: Add setLowRTO to TSocket\n\nlow tcp RTO might mitigate TCP incast problems. Adding the setLowRTO\nfunction to TSocket allows us to experiment with a solution.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920685 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "71a1530c74340e95a95a1b0b6c5699fbc082a9d9",
      "tree": "fee7473fac0d403a4b8074b5991b2aa5f37c5ccc",
      "parents": [
        "eee98bede4e9934a0cdd32fcffcd0cc659b4d09a"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:12 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:12 2010 +0000"
      },
      "message": "cpp: Fix memory corruption bug in TBufferedTransport::borrowSlow()\n\nOn one code path, the code would read data past the end of its buffer.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920684 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "eee98bede4e9934a0cdd32fcffcd0cc659b4d09a",
      "tree": "8198a0dbfc88c65db98fddf9a8a8872307435290",
      "parents": [
        "ac110e4f1cd87ce38fce06e61ef88bc84ac2edb0"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:10 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:10 2010 +0000"
      },
      "message": "cpp: Disable IPV6_V6ONLY only if the socket is an AF_INET6 socket\n\nSome systems may disable IPV6 completely.  Ensure that we only disable\nIPV6_V6ONLY if the socket is AF_INET6\n\nNo longer see the warning:\n\nThrift: Wed Jul 22 18:08:36 2009 TServerSocket::listen() IPV6_V6ONLY Protocol not available\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920683 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ac110e4f1cd87ce38fce06e61ef88bc84ac2edb0",
      "tree": "36ed0ff4d1a5a098f89eaeaf5571fe884e8cffd6",
      "parents": [
        "7a2065d3dbdf361bbbe8b66a5b03080c0e532403"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:07 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:07 2010 +0000"
      },
      "message": "cpp: Eliminate circular dependency between thrift libraries\n\nPreviously, Thrift.cpp contained TApplicationException, which was using\nTProtocol methods, defined in TProtocol.h.  This caused a circular\ndependency since libprotocol depends on Thrift.h.  This change moves\nTApplicationException into its own file.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920682 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7a2065d3dbdf361bbbe8b66a5b03080c0e532403",
      "tree": "35318367c65d8a46400ab0fec57102588e96a095",
      "parents": [
        "4cc0755b3382abc3e17ebba0ab4c2c78b9a8bbd7"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:04 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:04 2010 +0000"
      },
      "message": "cpp: Add profiling hooks to Mutex, ReadWriteMutex() classes\n\nExtend the Thrift C++ Concurrency library by allowing a user to register\na callback and a sample rate for lock primitive contention profiling.\nThe callback will be invoked approximately once every sampleRate calls\nto Mutex::lock(), Mutex::timedlock(), ReadWriteLock::acquireRead(), or\nReadWriteLock::acquireWrite().\n\nThe callback receives a pointer to the mutex responsible and the time\nwaited on the lock in micros (whether the lock was successfuly acquire\nor not).  The user can then implement a registry of his choice to\nlog/collect this data as needed.\n\nThis can all be easily compiled out if it harms performance.  By\ndefault, there is no profiling callback, so the overhead is minimal\n(one branch).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920681 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4cc0755b3382abc3e17ebba0ab4c2c78b9a8bbd7",
      "tree": "c8fcb43e67e5787772f737062e436d6e25ca8220",
      "parents": [
        "4e19f1914e49db4b7913ff0f5af8eec51caee875"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:01 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:20:01 2010 +0000"
      },
      "message": "cpp: Fix a race/deadlock in ThreadManager\n\nWhen removing a task from the pending queue, we were only notifying a\nblocked thread waiting to enqueue a task if the number of pending tasks\nwas exactly one less than the limit.  However, if two tasks are finished\nat about the same time, this can result in two spots being freed up with\nonly one notify.  With this change, we always notify on task completion,\neliminating the race/deadlock.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920680 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4e19f1914e49db4b7913ff0f5af8eec51caee875",
      "tree": "64db18658f59cb9411dc32d8c9a764131e8c82f8",
      "parents": [
        "6c1ee214c447bef02c3aa091ff5706503d1b1004"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:59 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:59 2010 +0000"
      },
      "message": "cpp: non-blocking add for ThreadManager\n\nIt\u0027s rare for the ThreadManager mutex to be contended, but it is\npossible.  For nonblocking applications, it is necessary to have a\nstrict timeout for the lock acquisition.  With this change, that timeout\nis enforced.  Also add timeout parameters to Mutex::lock and\nGuard::Guard to support this feature.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920679 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "6c1ee214c447bef02c3aa091ff5706503d1b1004",
      "tree": "1a23e82355b5cadd2ea675cc37c39313f54d353e",
      "parents": [
        "a1a15112fed5f7ec934a352920b4c535941fd1ab"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:56 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:56 2010 +0000"
      },
      "message": "cpp: Extend FunctionRunner to support periodic calls (in a thread)\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920678 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a1a15112fed5f7ec934a352920b4c535941fd1ab",
      "tree": "5aca787d7a2489cbebb88fed005c97a47ac4eb84",
      "parents": [
        "eed92991cf064f7c89a911be734d51619150d6bf"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:54 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:54 2010 +0000"
      },
      "message": "cpp: TSocket: call a second gettimeofday only for error checking\n\nPreviously, we called gettimeofday twice for every send, which is\ncostly.  Now, we only make the second call if send fails with EAGAIN.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920677 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "eed92991cf064f7c89a911be734d51619150d6bf",
      "tree": "f2e05dedb6daeff59fdfa1609d30056216d4a2bc",
      "parents": [
        "8106ba617af50f2a325fd6ce01a1a995cbd320a9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:52 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:52 2010 +0000"
      },
      "message": "cpp: TSocketPool: Optimize the case of a single server in the pool.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920676 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8106ba617af50f2a325fd6ce01a1a995cbd320a9",
      "tree": "67bf9253e4e6f58119ce830092ef73a1a2fa2b90",
      "parents": [
        "9c22ba41033a3f632df9db1c871cbf844e79824c"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:50 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:50 2010 +0000"
      },
      "message": "cpp: TSocketPool: make it possible to add servers by struct\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920675 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9c22ba41033a3f632df9db1c871cbf844e79824c",
      "tree": "f1345b9a32516d4f7863da36dbcb068692257af8",
      "parents": [
        "068f4169b9c2cd9f93ad32e99c5b0d5b786e0bc1"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:47 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:47 2010 +0000"
      },
      "message": "cpp: TTransport: set END_OF_FILE TException code if read returns 0\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920674 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "068f4169b9c2cd9f93ad32e99c5b0d5b786e0bc1",
      "tree": "da5926056c211612a1c1856e83fc7493f2af5f12",
      "parents": [
        "58e4d2c6e3b237825b573116d4e06781733ab5f5"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:45 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:45 2010 +0000"
      },
      "message": "cpp: TNonblockingServer: Allow unrun tasks to expire after a time limit\n\nEnhance ThreadManager to allow a expiration time interval to be assigned\nto tasks, and expire those tasks after that time limit has passed.\nEnhance TNonblockingServer to utilize this capability so it can be used\nfor overload resilience.\n\nNote: expired entries are only removed from the queue head, so the\nmechanism in ThreadManager may not do what you expect if you have\nheterogeneous expiration times. That\u0027s not an issue with\nTNonblockingServer (which will give all tasks the same limit) and might\nnot be in other cases where most tasks have the same limit and the rest\nexecute quickly. A full-up timeout queue would be more complex and have\ngreater overhead than that used here. It\u0027s unnecessary for the task at\nhand so I didn\u0027t go that route...\n\nThe TNonblocking interface is simple: a setTaskExpireTime() accepts a\n64-bit millisecond argument. 0 means infinite. A getTaskExpireTime()\naccessor completes the interface.\n\nThe ThreadManager interface involves an added argument to add() for the\nexpiration interval and a setExpireCallback() function for setting a\ncallback that is called for expired tasks (for this project this is\nnecessary to shut down the associated connection).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920673 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "58e4d2c6e3b237825b573116d4e06781733ab5f5",
      "tree": "58baf86bf023662ae8c58d314f301b44ec1219d1",
      "parents": [
        "450e35d2a333a6883c4a7444d9687e9ebd1160dd"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:43 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:43 2010 +0000"
      },
      "message": "cpp: Log unexpected exceptions in TThreadPoolServer\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920672 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "450e35d2a333a6883c4a7444d9687e9ebd1160dd",
      "tree": "3ecd87d815ee076a751384a5e004a46ebc648ecb",
      "parents": [
        "9e8073c5cd71ad72f7603b36514af06cee09c830"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:41 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:41 2010 +0000"
      },
      "message": "cpp: Fix max TCP port number\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920671 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9e8073c5cd71ad72f7603b36514af06cee09c830",
      "tree": "6456dfabe60b407f7c700026512770e0620965da",
      "parents": [
        "e96fa5502f38d91e7c417343e4c504384fc84f31"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:39 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:39 2010 +0000"
      },
      "message": "Eliminate some trailing whitespace\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920670 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e96fa5502f38d91e7c417343e4c504384fc84f31",
      "tree": "99c93564471b280e9e74d089a824fdcd858b59b7",
      "parents": [
        "83b8fdac0ff52f1f1d9f96772b956c807f668593"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:37 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:37 2010 +0000"
      },
      "message": "cpp: Add enum and constructor to RWGuard to make read/write more visible\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920669 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "83b8fdac0ff52f1f1d9f96772b956c807f668593",
      "tree": "d4cecc242929b8313fa6abcb19aac9214937f0f4",
      "parents": [
        "a0dbfefbf3d09eebdc784f3fe6049c8bbc62a498"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:34 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:34 2010 +0000"
      },
      "message": "cpp: Fix for task completion notification deadlock under heavy server load\n\nAlong with insuring that the event loop is able to see task completion\nnotifications, we need to process pending notifications as soon as they\nare available to avoid filling the notification pipe (the pipe can hold\n512 notifications).\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920668 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a0dbfefbf3d09eebdc784f3fe6049c8bbc62a498",
      "tree": "17f873e6cd020a1dfbccb319229341c731698050",
      "parents": [
        "b9db49c6776bde3b06ce8a5ceb32c873f8de4592"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:32 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:32 2010 +0000"
      },
      "message": "cpp: TNonBlockingServer: Use separate monitor for max queue\n\nWe were using the same monitor for max queue size and empty queue, this\nmeant the notifies might be going to the wrong place.\n\nThis change significantly reduces the time spent in futex calls in\nloaded servers.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920667 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b9db49c6776bde3b06ce8a5ceb32c873f8de4592",
      "tree": "a6925b9e86822ef11fed77eacb2cd50aa0e072d3",
      "parents": [
        "28e88ecac1cab801112587068ee4fbc6de457e49"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:30 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:30 2010 +0000"
      },
      "message": "cpp: Let Monitors share Mutex instances\n\n- Let Monitor objects share a Mutex() instance so that more than one\n  condition can be implemented on top of a single mutex protecting an\n  important data structure.\n- Make Mutex and Monitor noncopyable\n- Add an accessor to Mutex() so the underlying pthread_mutex_t* can be\n  retrieved for passing to pthread_condwait\n- Change Monitor to use the actual Mutex class instead of creating a\n  naked pthread_mutex_t on its own\n- Add new constructors to Monitor\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920666 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "28e88ecac1cab801112587068ee4fbc6de457e49",
      "tree": "03bf1cc43953d72dc46fc7f2308aaa435926e61b",
      "parents": [
        "01fe15322f55a9aec5de6807fe0d4c54db7d79f6"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:27 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:27 2010 +0000"
      },
      "message": "cpp: Exit TNonBlockingServer on memmory allocation failure\n\nsetrlimit causes bad_alloc exceptions, but undefined behavior occurs if\nwe don\u0027t exit.  It is not typical for libraries to call exit, but it is\nnot clear what other behavior is possible.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920665 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "01fe15322f55a9aec5de6807fe0d4c54db7d79f6",
      "tree": "2f95d72f6b8f0fd8f544ce46367f1aeacf4069f9",
      "parents": [
        "e574a065a9ed100bda718582dc3378abc2933e78"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:25 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 05:19:25 2010 +0000"
      },
      "message": "cpp: TNonBlockingServer overload handling and optimizations\n\n- Establish a mechanism for TNonBlockingServer to handle overloads by\n  limiting the number of connections accepted or in-process.\n\n- Provide a framework for further work in handling server overloads.\n\n- Limit memory consumption of connection object pool.\n\n- Drop connections when overloaded.\n\n- Add overload-handling behavior allowing pending tasks to be dropped\n  from the front of the task queue (short of the ability to terminate\n  running tasks, these are the oldest tasks in the system and thus the\n  most likely to be beyond their freshness date).  This reduces the\n  chance of spending valuable CPU time processing a request that the\n  client has already timed out.\n\n- Uses a single persistent pipe() to communicate task completion instead\n  of constructing and monitoring a new socketpair() for every task in\n  the system.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920664 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4ae8780c5c1e37c4c480a23f277a7942e3aada09",
      "tree": "b4af0631a81b83a4fec3bd43ace98dd030e60e52",
      "parents": [
        "53c10e09e15b446e7213b341e8fddc79296f1d51"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 00:49:14 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 09 00:49:14 2010 +0000"
      },
      "message": "THRIFT-706. cpp: Fix memory leak of string_buf_ in TCompactProtocol\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@920597 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3bb5e0581a076e5c754470f4d44979ad0cff8bc1",
      "tree": "98760787de98019370e9edebdc2565e9a878ef50",
      "parents": [
        "c771944644247f5ae31c37ffe937fe93c147b327"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Jan 25 19:31:31 2010 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Jan 25 19:31:31 2010 +0000"
      },
      "message": "THRIFT-683. Remove profanity\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@902941 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9b90344445d0a753e8a4a8a926c67d6a6c051c5e",
      "tree": "0592ac49bbbee220c31b3bd9a952d8f13e44ccc2",
      "parents": [
        "72fd472476a68dc55ca8cbfb05452d6c69fb0d19"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 21 05:51:28 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 21 05:51:28 2009 +0000"
      },
      "message": "THRIFT-606. cpp: Fix build on Solaris Nevada\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@827890 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3e7fca421efe0c76bc493a4058d3667c540bcca4",
      "tree": "44809cd68dc6383bfaa37f95a793f1665169274e",
      "parents": [
        "0e8e6099e215f3a6adcb6e5c75e9dc8ad53a7a21"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sat Sep 19 01:59:13 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sat Sep 19 01:59:13 2009 +0000"
      },
      "message": "THRIFT-587. cpp: Properly set addrLen before accept calls\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@816850 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ffff2b35763e47667c63df903fe6e59b5ada4d22",
      "tree": "88a954b0aab4f3d4cce5b9ed8d376ad9d3bc95e4",
      "parents": [
        "af81de0123c8d9920a25a27d28da66f9d00748cc"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Sep 01 18:03:07 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Sep 01 18:03:07 2009 +0000"
      },
      "message": "THRIFT-214. cpp: Qualify another cast\n\nr722337 only fixed one occurrence of this issue.\nNot sure why this one hasn\u0027t been a problem before,\nbut it is breaking compilation on Mac OS 10.6.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@810150 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "3029786ce1dda4bb625e72ebb5202c0b89e233a2",
      "tree": "c7f97b24b8f009c3ebd6395e816b706e1a4df1c5",
      "parents": [
        "3efce2336983ae9cb91e70d73827fa377ca3a3a7"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Aug 05 16:42:59 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Aug 05 16:42:59 2009 +0000"
      },
      "message": "THRIFT-555. cpp: Fix macro defintions for TCompact on non-GNU big endian\n\nWe were defining ntolell and letonll, but we were only using\nhtolell and letohll.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@801293 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "52687eb3b9aa8982cab5e11fae2ae879c6bc1b69",
      "tree": "7b19bd2e1e4a3eadbc379f9a0d4b4b79b1997123",
      "parents": [
        "9fcacc8ff6e856bd55929763b5026181413806f1"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:57 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:57 2009 +0000"
      },
      "message": "THRIFT-469. cpp: Fix a bug in TimerManager::add\n\nThe old code didn\u0027t notify waiters when the inserted task\u0027s timeout\nwas less than the current timeout because it didn\u0027t check the task map\nto find the lowest timeout until after the new task was inserted.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781630 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "9fcacc8ff6e856bd55929763b5026181413806f1",
      "tree": "944af206140c734bdeac2b3107bd075268053c2e",
      "parents": [
        "8584b6ffe799c19e0b843be4ded394934112c01b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:54 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:54 2009 +0000"
      },
      "message": "THRIFT-466. cpp: Make the concurrency library test more thorough\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781629 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "8584b6ffe799c19e0b843be4ded394934112c01b",
      "tree": "b80817e55c47b43b690bb4c3f84ad7341da2036e",
      "parents": [
        "5fa20da4a5a21a90cdf4ee7000c56d254d77f066"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:50 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:50 2009 +0000"
      },
      "message": "THRIFT-465. cpp: Fix some STL misuse in the concurrency library test\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781628 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5fa20da4a5a21a90cdf4ee7000c56d254d77f066",
      "tree": "fa352ec8f342ce4d8004ed59efae99bee4b63d9e",
      "parents": [
        "840e75205bf4c7da635bd40dd10867073ca1d51e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:47 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:32:47 2009 +0000"
      },
      "message": "THRIFT-464. cpp: Fix some STL misuse in the concurrency library\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781627 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "840e75205bf4c7da635bd40dd10867073ca1d51e",
      "tree": "119644b07390d4a0cb84fac61327d90e2805a0be",
      "parents": [
        "2fb877a794ce3df3eb488926f991e210f419ebf6"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:10:50 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jun 04 00:10:50 2009 +0000"
      },
      "message": "THRIFT-497. cpp: Fix TSocket::read and peek on Max OS\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@781626 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "08d2f11cbec8147e8fb13c06a1b1a91317a8272d",
      "tree": "c7d91b6f914002c8bdfb73098d89b59c76018f12",
      "parents": [
        "e5eef13e6f509ad60cd2076d37f9ddfe54df7785"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:36 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:36 2009 +0000"
      },
      "message": "cpp: Fix compilation on OpenBSD by including sys/types.h\n\nsocket(2) says that this might be required on some Unixes.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@776931 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5105b2e79d21204d13f2351dc6b973061e66b215",
      "tree": "7f1127a8f5198bf94b13fbb05b084c4f79e96136",
      "parents": [
        "2ff956c605561d70a3e9a2748ab44b259234eb7f"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:27 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:27 2009 +0000"
      },
      "message": "cpp: Add some missing includes to fix OpenBSD compilation\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@776929 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2ff956c605561d70a3e9a2748ab44b259234eb7f",
      "tree": "38ea1a953d188a5867a3ec3c32f0e2fcb54fe51e",
      "parents": [
        "e4ca1795ead89b5ae79557775163bee6b505ffcc"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:23 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:23 2009 +0000"
      },
      "message": "cpp: Fix an OpenBSD compilation bug by moving a typedef\n\nThe typedef was aliasing a private type, which is apparently illegal.\nMoving it into the class definition fixed it.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@776928 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e4ca1795ead89b5ae79557775163bee6b505ffcc",
      "tree": "1fa753acfce9e02b101bfa15dc9aa78be2f981e0",
      "parents": [
        "85a8f7b4c22344da3f8e4d259b2cdf591e31d048"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:19 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:19 2009 +0000"
      },
      "message": "cpp: Deal with systems without sched_get_priority_{min,max} (OpenBSD)\n\nAlso make a few tweaks to configure.ac:\n- Check for clock_gettime in librt since it seems to be more\n  widely available.\n- Make it clear which AC_CHECK_FUNCS are optional.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@776927 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d28ce1035b6880f73a39e993280c7358e114d88f",
      "tree": "949f4ada54eb54838b07858c065d1713b53875e6",
      "parents": [
        "32194ab4425c5db1a6406427df0251ebd96186d6"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:14 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 21 02:28:14 2009 +0000"
      },
      "message": "cpp: Fix an OpenBSD compilation error that appears to be a real bug\n\nThe (Linux) man page for ctime_r states pretty clearly that\nthe buffer it uses must have space for at least 26 characters.\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@776925 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "be378f232b3b4ea5007a6665d3815a63a10ece65",
      "tree": "0afcc2e213147f41ebaa051caa090c7cb33e02ca",
      "parents": [
        "8db8980fa106d585bad706e503f7d9baa89cf7cb"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 07 00:41:18 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 07 00:41:18 2009 +0000"
      },
      "message": "THRIFT-490. Clarify the comment for the Guard macro\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@772478 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "141eab41474c18dd5509446a71f63b62d4b4035c",
      "tree": "0d64ad1f2c765126e591f14bdaf2f233ad137336",
      "parents": [
        "260fa93aaa50e8e6431de682f2d172515a4c8d58"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Apr 03 15:05:28 2009 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Apr 03 15:05:28 2009 +0000"
      },
      "message": "THRIFT-425. cpp: numeric_limits is declared in \u003climits\u003e\n\nTCompactProtocol.cpp doesn\u0027t compile without including limits.\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761705 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "260fa93aaa50e8e6431de682f2d172515a4c8d58",
      "tree": "ddc7944090948f79d1f4bb3c7ac0d72f31f9194a",
      "parents": [
        "d0251dd85281c018f7667083436b5d6aa204c814"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 23:51:39 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 23:51:39 2009 +0000"
      },
      "message": "THRIFT-411. cpp: Make TNonblockingServer::connectionStackLimit_ accessors use the right type\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761481 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7247b8cfd63147287f613f4af56339db89d879b7",
      "tree": "3d6aa173faf51c3ef6ee4ba1c304a272d04085e2",
      "parents": [
        "e4d4ea0e834ed4d022bb38e53daae4985c04ee04"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 23:05:40 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 23:05:40 2009 +0000"
      },
      "message": "cpp: Fix compiler and library compilation with newer glibc\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761464 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e4d4ea0e834ed4d022bb38e53daae4985c04ee04",
      "tree": "1fc0cfa600e97f81bbb995a98ed5a4340cdca6b1",
      "parents": [
        "a7d63f5f7013ab90999d715b1f9c311296fa2d19"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 21:37:17 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 21:37:17 2009 +0000"
      },
      "message": "THRIFT-333. cpp: Initial TCompactProtocol implementation\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761438 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "deda141392d0b242e1fce0c0682ceedb45642a18",
      "tree": "b3341930bc7cc0965fa6d725f728774fae8c361c",
      "parents": [
        "b5714ef91ec7210c65e07c8d635c224795f22919"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 19:22:31 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Apr 02 19:22:31 2009 +0000"
      },
      "message": "THRIFT-388. Create a \"ONEWAY\" message type that is an alias for \"CALL\"\n\nPave the way for a new message type for oneway function calls.\nFor now, just define the constant in all languages and make\nserver implementations treat it the same way as a normal call.\nOnly C++ and Erlang currently check the message type (on the\nserver side).\n\nThere is a little bit of redundancy in the Erlang code, but\nthe alternative is a bit gross, and this split-up will be\nnecessary eventually when we start handling one-way calls\ndifferently.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761389 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "ea2cba8ba8484a8d4e669c02dd97b3b2445ef322",
      "tree": "6be4a3bf2d069a006c9a15f5ee47a1893a176f4d",
      "parents": [
        "4bc4231040186d9e0c35ff4d8211ce7b7e43aab5"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Mar 30 21:35:00 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Mar 30 21:35:00 2009 +0000"
      },
      "message": "THRIFT-387. Add license headers to a bunch of files\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@760189 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "abb56a4a0dbeaedf0e71cf206db8e7e16932ab6b",
      "tree": "cd110d0baff80afea51007897b170a272cd3d941",
      "parents": [
        "2aa289072b0ca427b2afc79793310c910596a8b5"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Mar 26 06:23:57 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Mar 26 06:23:57 2009 +0000"
      },
      "message": "THRIFT-255. cpp: Add TSimpleFileTransport, a wrapper around TFDTransport\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@758533 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c51986f43897a64531935653cb4a2462f6cd7e11",
      "tree": "da8728080bf9265c2aa6eb8d72877b384ea94c80",
      "parents": [
        "473292500dc553e537aad0544f9fbb31d0fbf3d0"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 24 20:01:25 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Mar 24 20:01:25 2009 +0000"
      },
      "message": "THRIFT-136. s/async/oneway/ in comments\n\nThis is an internal-only change.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@757990 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "13083d6d52d2b5bd3d5a9368a04503c5b21eabab",
      "tree": "dfc912718c5f9dbacfd395d1e5f8dd59e9fd9de6",
      "parents": [
        "afa1b47e60c4ffba554f6187d84fd20cd514f51d"
      ],
      "author": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Mar 20 02:19:46 2009 +0000"
      },
      "committer": {
        "name": "Bryan Duxbury",
        "email": "bryanduxbury@apache.org",
        "time": "Fri Mar 20 02:19:46 2009 +0000"
      },
      "message": "THRIFT-294. Remove @author tags\n\nThey\u0027re gone. Don\u0027t add any new ones!\n\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@756307 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "cbcd63ab4984336ecebae485bd8b3186a0444d39",
      "tree": "906c46c3efb954ac56fe083d74358124ea38ce22",
      "parents": [
        "48141bf5a686453b7a1b5b5b506617669b7cc748"
      ],
      "author": {
        "name": "Kevin Clark",
        "email": "kclark@apache.org",
        "time": "Thu Mar 19 03:50:05 2009 +0000"
      },
      "committer": {
        "name": "Kevin Clark",
        "email": "kclark@apache.org",
        "time": "Thu Mar 19 03:50:05 2009 +0000"
      },
      "message": "Thrift-357. cpp: Fix buffer and connection bloat in TNonBlockingServer\n\nAuthor: Anthony Giardullo\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@755824 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "45d56965c29850ae8d86b7d822ee8f3169ab57f1",
      "tree": "edc3f492d8d059e01ebc89c1816894202ce661e7",
      "parents": [
        "e0a11c44ab44eab3d4662716a70bfc5f9d272b77"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sat Mar 14 23:35:16 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sat Mar 14 23:35:16 2009 +0000"
      },
      "message": "THRIFT-351. cpp: Allow a custom ThreadFactory in TThreadedServer\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@754551 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "022b224ebdd932bb8e4fe54beea02589c3661b8b",
      "tree": "c18d8854fb93897d8a29e9d2d83bcfe2f46bd59e",
      "parents": [
        "586f0a0f01458f5691382249d2899dbd7da84dd3"
      ],
      "author": {
        "name": "Kevin Clark",
        "email": "kclark@apache.org",
        "time": "Thu Mar 05 21:05:37 2009 +0000"
      },
      "committer": {
        "name": "Kevin Clark",
        "email": "kclark@apache.org",
        "time": "Thu Mar 05 21:05:37 2009 +0000"
      },
      "message": "THRIFT-96. cpp: TSocket.peek fails on FreeBSD\n\nAuthor: Alexander Shigin\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@750585 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "5ace1780abe8f62e6e6be789ae53637f3a35b195",
      "tree": "9e3cf1f8120efe561c92ac8356b91d659320efc6",
      "parents": [
        "e8d3c47944139364d0573fa82c3d5ba877df13e9"
      ],
      "author": {
        "name": "Kevin Clark",
        "email": "kclark@apache.org",
        "time": "Wed Mar 04 21:10:58 2009 +0000"
      },
      "committer": {
        "name": "Kevin Clark",
        "email": "kclark@apache.org",
        "time": "Wed Mar 04 21:10:58 2009 +0000"
      },
      "message": "THRIFT-265. cpp: Reset buffers every 512 calls in TNonblockingServer\n\nAuthor: Erik Frey\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@750153 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "57b500610f34d15e7261c6460144ec88f710af85",
      "tree": "65cedde9f783f26df06cdd194c4d8dac97307114",
      "parents": [
        "f4c71c73d0d3438d5eb8c72dc889fb292bc23cc8"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Feb 25 00:59:55 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Feb 25 00:59:55 2009 +0000"
      },
      "message": "THRIFT-348. cpp: Fix readBool for vectors of bools (again)\n\nThis bug only affected the returned number bytes read\n(which is not currently used), not the actual bool value.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@747635 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "035aed90c0a7e54cd9e0f2ac70dc7c1bb303a4b0",
      "tree": "19d48f30b2c1937c378a230445fbf16732d220ef",
      "parents": [
        "7d3df42bb5eefc740724537d802597668ab1a955"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Feb 10 21:38:48 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Feb 10 21:38:48 2009 +0000"
      },
      "message": "cpp: Fix implementations of \"list\u003cbool\u003e\"\n\nTProtocol::readBool expects a \"bool\u0026\" as its argument, but \"list\u003cbool\u003e\"\nis implemented as \"vector\u003cbool\u003e\", which is a specialization of vector\nthat uses a custom structure as its reference type.  Therefore, we need\nto overload TProtocol::readBool for std::vector\u003cbool\u003e::reference.\nThis function is provided as a non-virtual for efficiency since it is\nhighly unlikely that any subclass will want to override it.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@743112 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "0b7d6fa5ee27dcfe60ed946c99fbc1c664bb4057",
      "tree": "8a8d7fded45f797c0155f0a16d08371839c3c287",
      "parents": [
        "d20a1d3619efa9edef51364d927bc9a78b37217f"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sat Feb 07 02:36:35 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sat Feb 07 02:36:35 2009 +0000"
      },
      "message": "THRIFT-314. Purge reflection.limited\n\nThis was a feature designed to allow a Thrift server to report\ninformation about its interface.  However, the feature has\nsignificant design problems, and is presence is currently causing\nconfusion without doing any good.  Therefore, it is being removed.\nIt will always be in source control if and when we are ready to\ncome back to it.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@741824 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "b5e6221eb5cbabab25d5c9badb7262b15c42cfdd",
      "tree": "b215dc9387b4b9e7cb454e0306fbe66ac0b2d42e",
      "parents": [
        "3fa89e33f3e7e76a2f79546c72d1728492f12bef"
      ],
      "author": {
        "name": "T Jake Luciani",
        "email": "jake@apache.org",
        "time": "Sat Jan 31 22:36:20 2009 +0000"
      },
      "committer": {
        "name": "T Jake Luciani",
        "email": "jake@apache.org",
        "time": "Sat Jan 31 22:36:20 2009 +0000"
      },
      "message": "THRIFT-270: change cpp namespaces from facebook::thrift to apache::thrift\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@739644 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "4c266ccc2cd6598891dfd8955cf0dc8ff4b97976",
      "tree": "af4188c44514f6f8c0f32b62c7eacc7180872fae",
      "parents": [
        "6713e1b126c8734ae9daafb4a63f76f26ca7fb7b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jan 15 23:56:24 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jan 15 23:56:24 2009 +0000"
      },
      "message": "THRIFT-244. cpp: Make TJSONProtocolFactor inherit from TProtocolFactory\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@734863 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "6713e1b126c8734ae9daafb4a63f76f26ca7fb7b",
      "tree": "41428eef0cabfd059ede77d7ecb3bd52e622e9ff",
      "parents": [
        "afa80ea73d4cbf83afee807e5d9f9034fa177ade"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jan 15 23:56:19 2009 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jan 15 23:56:19 2009 +0000"
      },
      "message": "THRIFT-244. cpp: Fix TJSONProtocol::writeMessageBegin\n\nuint8_t is a character type, so lexical_cast doesn\u0027t convert it\nto an integer representation.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@734862 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "322e595c2ac8a7ff4ef53cc472882d85e36000a0",
      "tree": "62b7512e2549ccf03fb825683c0f14d05427d8e5",
      "parents": [
        "fbb14ef1b33db23cb0862975af58bbba957d2378"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Dec 05 02:54:09 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Dec 05 02:54:09 2008 +0000"
      },
      "message": "THRIFT-203. cpp: Make library headers compile under g++ -pedantic\n\nIt turns out that trailing commas in enum definitions are\nnot actually valid C++.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@723562 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "fbb14ef1b33db23cb0862975af58bbba957d2378",
      "tree": "ccd152e2b70aa5c54e648eba6b30355f88d15b63",
      "parents": [
        "428d5695ab6dd8a598b1be5bb29cfb7c90aa9414"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Dec 02 02:32:25 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Dec 02 02:32:25 2008 +0000"
      },
      "message": "THRIFT-214. cpp: Qualify a cast to fix OSX compilation\n\nid_t is defined in some OSX header, and the id_t in this function\nresolved to that one instead of Thread::id_t.  This change fully\nqualifies the type to make sure it resolves properly.\n\nAlso remove a comment about eliminating the C-style cast, since it\nis actually quite appropriate in this case.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@722337 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "428d5695ab6dd8a598b1be5bb29cfb7c90aa9414",
      "tree": "b6fe8237a268aee32a16406f7aeb027b08479546",
      "parents": [
        "0c87ad41ee8dc669f8e1cbe0b17f8382844a0497"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Dec 02 02:22:01 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Dec 02 02:22:01 2008 +0000"
      },
      "message": "THRIFT-215. cpp: Disable an assertion that fails on various platforms\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@722336 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "d90cd1f539f5837858aa64256d187b4444560b81",
      "tree": "d8de41e092bed047cf12db66f902ecfce06c9def",
      "parents": [
        "f33e03c6fad10465ac4867b27c63a35cb2de0cbe"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 29 22:50:34 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Oct 29 22:50:34 2008 +0000"
      },
      "message": "THRIFT-168. cpp: Clear transport buffers before a flush\n\nPreviously, TBufferedTransport and TFramedTransport could\nleave data in their buffers if a flush threw an exception.\nThis patch makes them reset their internal pointers before\nflushing to the underlying transport.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@709037 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "826e648354c4e2e37abe5d8dda04e6497d76e16a",
      "tree": "0f9a3f43e3da5e0732bc05d007861b3a18c6ffad",
      "parents": [
        "1cc0c5e6d6088849cca2987af39f0d9a965c0d60"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Oct 20 21:29:07 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Oct 20 21:29:07 2008 +0000"
      },
      "message": "THRIFT-177. cpp: Add a missing \"std::\"\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@706418 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c53a5944eda576d1920cf44359e310b1205361cb",
      "tree": "06e9bda6ceff532b2f6466abb8da0f8071d4f832",
      "parents": [
        "9837aaf097729beb2d3c656bb68c9c373faa84e9"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 07 23:55:24 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 07 23:55:24 2008 +0000"
      },
      "message": "Fix a compile bug introduced by r702644\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@702672 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e11f3073f7411e7b0508047850fcb42b331a2e5e",
      "tree": "0f3345c7c166f284b8a7a87e71fe21714cdedf17",
      "parents": [
        "58434e698865101096e28fb2ea98282133d55e2c"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 07 21:39:19 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Oct 07 21:39:19 2008 +0000"
      },
      "message": "THRIFT-149. cpp: Make TNonblockingServer handle a shut-down ThreadManager\n\nThis is a step toward implementing a graceful shutdown.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@702644 13f79535-47bb-0310-9956-ffa450edef68\n"
    }
  ],
  "next": "5317b1ecd23bc6ba29905cff6f8e411fbfe287f8"
}
