)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "5317b1ecd23bc6ba29905cff6f8e411fbfe287f8",
      "tree": "a49c45aecf8cab4133d58ae243680a26beb67177",
      "parents": [
        "46e8d0b8fb18e25baf45a51715d7e3129a17fdb6"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jul 24 19:10:16 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jul 24 19:10:16 2008 +0000"
      },
      "message": "THRIFT-95. cpp: Fix write buffer initialization in TBufferedTransport\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@679500 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "01e55c1c28547eaac74636790bb86617c890c4c2",
      "tree": "ccf24cb13626196702d177e2266e62cb9287e468",
      "parents": [
        "2be87f3ab036183d49ad7a9af274c797839ef342"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sun Jul 13 22:18:51 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Sun Jul 13 22:18:51 2008 +0000"
      },
      "message": "cpp: Eliminate the use of fprintf [THRIFT-77]\n\nAdd printf and perror methods to TOutput and use them to\nreplace uses of fprintf in the C++ library.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@676448 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "2be87f3ab036183d49ad7a9af274c797839ef342",
      "tree": "34f05e595d0b2136f7e4a7d7eec0895d6b61737c",
      "parents": [
        "8d07e1d1524ce548bcd3b9b792af6f0af218a8bb"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Jul 11 21:39:58 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Jul 11 21:39:58 2008 +0000"
      },
      "message": "(THRIFT-37) Add some missing newlines to fprintfs.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@676087 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "53f18f01bea79d373d0bb1138b67c03e42f4143c",
      "tree": "6b4445e45da6575046dde340ee010d4abb5f3cd5",
      "parents": [
        "615da249957987b39887eb12abe887ad6c883114"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Jul 11 00:45:29 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri Jul 11 00:45:29 2008 +0000"
      },
      "message": "(THRIFT-69) Fix Util::currentTime for use in applications.\n\nThis function didn\u0027t work properly when used outside of the Thrift library\nbecause config.h isn\u0027t available.  This patch fixes the issue by moving\nthe function definition into the library.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@675819 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "af78778acd7fb551a84aaf63e604d969123bf85d",
      "tree": "db279121d2fdebf27cced752a46ab0898848c0b3",
      "parents": [
        "03b574feada3862d460c7fc15dd1fb90687ff428"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jul 03 20:29:34 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu Jul 03 20:29:34 2008 +0000"
      },
      "message": "(THRIFT-54) Remove \"frameResponses\" from TNonblockingServer\n\nTNonblockingServer and TFramedTransport used to have the option to only\nframe messages on one side of the communication.  This capability was\nremoved from TFramedTransport because it was poorly implemented and not\nuseful.  This change removes it from TNonblockingServer as well, and\nremoves references to it in some of the C++ test code.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@673791 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "52cb7a7413a33a86079cf8e9b3561e33339aeb9d",
      "tree": "809000e9a27f54182eea3982d5ad7e54b7e98dc0",
      "parents": [
        "f14541626d1c49cb1439d65e81fa3609c23b7cf0"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Jun 30 21:40:35 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Mon Jun 30 21:40:35 2008 +0000"
      },
      "message": "(THRIFT-45) TNonblockingServer (C++): only do one write in responses.\n\nInstead of doing one 4-byte write for the frame length before the write\nof the actual message, prepend the frame length to the message buffer\nso we can send them both at once.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@672937 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c88eb8c9dda2bd5100216458779f8bff7b1a9275",
      "tree": "216f0d3ed1ec88bb2b275654ed47ca8ab5c670a6",
      "parents": [
        "a27c3cd0c92371a5d9a604a9a088bf53acd01f49"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:54 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:54 2008 +0000"
      },
      "message": "Include \u003ccstring\u003e and use \"std::\" for memset in T[Server]Socket.cpp.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666498 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a27c3cd0c92371a5d9a604a9a088bf53acd01f49",
      "tree": "b8a6b1d489e8dfa07feebdfd9c292706913c0625",
      "parents": [
        "32e95f8bb9e124720beae6d4fe1897328dda5f83"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:44 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:44 2008 +0000"
      },
      "message": "Include \u003ccstring\u003e and use \"std::\" for memcpy in TBufferTransports.h.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666497 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "32e95f8bb9e124720beae6d4fe1897328dda5f83",
      "tree": "8199737619b7e401c2c5a50a06bc888b4bbf0de8",
      "parents": [
        "fb1c5ace0afa13d91d744080abd2dac1fbaf2911"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:36 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:36 2008 +0000"
      },
      "message": "Include \u003climits\u003e in TBinaryProtocol.cpp for numeric_limits.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666496 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "fb1c5ace0afa13d91d744080abd2dac1fbaf2911",
      "tree": "9020ffe4be322ab09efc0c88b81771680fbe48ec",
      "parents": [
        "a4d7eef5cd5e946f30c386e1f4fe790f6d5574ad"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:28 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:28 2008 +0000"
      },
      "message": "Declare special mutex initializers unconditionally.\n\nWe don\u0027t want to include pthread.h in Mutex.h, so we can\u0027t detect whether\nthe non-portable mutex initializers are defined.  Instead, we just declare\nthem unconditionally and only define them if they are available.\nUnfortunately, this means that users will get a link error instead of a\ncompile error if they try to use them when they are not available.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666495 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "a4d7eef5cd5e946f30c386e1f4fe790f6d5574ad",
      "tree": "2365bb6d1b98e8e4de254613ae55d50aab46fa4e",
      "parents": [
        "77bb9167664b39ea8656aadf64537f6c4f109219"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:20 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:20 2008 +0000"
      },
      "message": "Fix some includes in Thrift.{h,cpp}.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666494 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "77bb9167664b39ea8656aadf64537f6c4f109219",
      "tree": "fcccaf897478147f6168c6991bc51c8edf67acd5",
      "parents": [
        "4d1c712ad173a66faafa2844bad9504e5f7bdfec"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:11 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:18:11 2008 +0000"
      },
      "message": "Regenerate reflection_limited to pick up some compiler improvements.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666493 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "1a2f2187cd9891634080d4aa53a76f50849a1ed1",
      "tree": "a41264a0816247a430e0c3623a30a177a1b0b46e",
      "parents": [
        "61eec8f95c679078f5f5c3f91edc2178e59bfe34"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:14:01 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Wed Jun 11 01:14:01 2008 +0000"
      },
      "message": "Another whitespace rampage\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666477 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "13aea4600c7e170a0f178d72d7d68d3bddd7ef9a",
      "tree": "241b7993b4aa3d9009be6405952d1e30cd98de77",
      "parents": [
        "d14f4f86d4a521dd2327789f9230ab239b1c342b"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:56:04 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:56:04 2008 +0000"
      },
      "message": "Fix IPv6 on FreeBSD.\n\nOn FreeBSD (and possibly other BSDs), binding to ipv6 is restricted unless the\nsysctl net.inet6.ip6.v6only\u003d0 or the socket option IPV6_V6ONLY is turned off.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666367 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "c6dab613003c704f072542f39214f7af64fc0412",
      "tree": "6cf0c32408e229af01a44f79023d29747ba6fde7",
      "parents": [
        "e3a64923e9620ebf99ff51ed5bfcb366e503c79e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:55:13 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:55:13 2008 +0000"
      },
      "message": "Thrift: Allow for alternative Mutex initializers.\n\nSummary:\nAdd an argument to the Mutex constructor.\nIt takes a pointer to a function that initializes the internal pthread_mutex_t.\nWe provide initializers for default pthread_mutex_t (which is our default),\nadaptive mutexes, and recursive mutexes.\n\nReviewed By: hzhao, psaab, mcslee\n\nTest Plan: Built libthrift.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666362 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "e3a64923e9620ebf99ff51ed5bfcb366e503c79e",
      "tree": "2d7212edec32b8f46d3451ed6a0dc8c3fa5173f8",
      "parents": [
        "791a57f528e12829acd6d2950d50e65139080f49"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:55:04 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:55:04 2008 +0000"
      },
      "message": "Fix locking bug in ThreadManager.\n\nIt looks like the scheduler waits on monitor_, but the worker notifies\nworkerMonitor_. Also, it does so out of critical section.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666361 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "791a57f528e12829acd6d2950d50e65139080f49",
      "tree": "b675279ceb1ff2397453e38b573b8e49bea4ba03",
      "parents": [
        "665365490f3e14cf3e40205f16d9dc9b5a833f1e"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:54:56 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:54:56 2008 +0000"
      },
      "message": "FunctionRunner Utility Class.\n\nRuns arbitrary functions of form \u0027void(void)\u0027 and \u0027void*(void*)\u0027\nwithout need to create custom Runnable classes.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666360 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "af296954ea59369129b4129633e263fd65b503de",
      "tree": "b70c053a513508b8b8708d37622c79260744d2fc",
      "parents": [
        "c89e4de50947b91b658a952da4671033e333c9df"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:54:40 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Tue Jun 10 22:54:40 2008 +0000"
      },
      "message": "Add ProfilerRegisterThead() to PosixThread.\n\nAdds an #ifdef\u0027d block that calls ProfilerRegisterThread() if\n\"REGISTER_THREAD_GOOGLE_PERFTOOLS\" is set.  Apparently, this makes the\nGoogle perftools CPU profiler work much better on x86-64.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@666358 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "7dab93e23790f6a2d647ad5d4a7a34f24a464778",
      "tree": "1d496585a4a4b720e0fca148e7d4dac395f1ffe5",
      "parents": [
        "f9b5b12f4d7e86e9834dd39ae4393383cab809af"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri May 09 19:18:29 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri May 09 19:18:29 2008 +0000"
      },
      "message": "Fix a few copy-paste errors in TBufferTransports (not code).\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665684 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "80097936bd1258f074a226396f9546d98d060964",
      "tree": "be8903db3543110e45d9ad056a19cb1bbff10d6c",
      "parents": [
        "47714584327a9a8240f28e8ef4493534a1d047ba"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri May 09 07:14:10 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri May 09 07:14:10 2008 +0000"
      },
      "message": "C++/TFramedTransport: Don\u0027t write an empty frame on flush.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665681 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "47714584327a9a8240f28e8ef4493534a1d047ba",
      "tree": "24bb6dd7e13bc8bf12964f0ee059ce0805c9e321",
      "parents": [
        "8df6c82aa751f65100b6b283dee205e251753aa8"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri May 09 00:40:26 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Fri May 09 00:40:26 2008 +0000"
      },
      "message": "Fix a small logic error in TBufferedTransport::borrowSlow.\n\nWas using an unsigned int for a value that could be negative.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665680 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "f233e46a2dc705f017d5980baa6ad97922b72291",
      "tree": "1ace8edd19a260f76b55e117ce615da8b1e200b9",
      "parents": [
        "28f298dd5d9b68c9c0dbaefa95c88d51ed8e430a"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 01 06:21:04 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 01 06:21:04 2008 +0000"
      },
      "message": "Throw a transport exception if fstat fails.\n\nThis was failing on an NFS mount that was dying.\nBetter to fail hard then return uninitialized data.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665677 13f79535-47bb-0310-9956-ffa450edef68\n"
    },
    {
      "commit": "28f298dd5d9b68c9c0dbaefa95c88d51ed8e430a",
      "tree": "4c089343bfd96f8eddb653ec2f746a27d7a8ec9a",
      "parents": [
        "9a4edfa07fe0c09865015a15d26695823cd4a5fd"
      ],
      "author": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 01 06:17:36 2008 +0000"
      },
      "committer": {
        "name": "David Reiss",
        "email": "dreiss@apache.org",
        "time": "Thu May 01 06:17:36 2008 +0000"
      },
      "message": "Memory-based transport rewrite.\n\nThe old implementations of the memory-based transports (TBufferedTransport,\nTFramedTransport, and TMemoryBuffer) shared very little code and all worked\na bit differently.  This change unifies them all as subclasses of a single\nbase (TBufferBase) which handles the fast-path operations (when requests\ncan be satisfied by the buffer) with inline methods (that will eventually\nbe made nonvirtual in the template branch) and calls out to pure-virutal\nmethods to handle full/empty buffers.  All of the buffer-management is now\ndone in terms of \"base and bound\" pointers rather than \"pos\" integers.\n\nThese classes were moved to TBufferTransports.{h,cpp}.  The .h is included\nin TTransportUtils for backwards compatibility.\n\nAlso added a \"TShortReadTransport\" to assist testing transports.\n\n\ngit-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665676 13f79535-47bb-0310-9956-ffa450edef68\n"
    }
  ],
  "next": "e39e9379119b99c2bad7613b8cd32c11482b9558"
}
