)]}'
{
  "log": [
    {
      "commit": "dd6c8c1069d74f47e81f47dc89285edf906a464e",
      "tree": "c0092bc0000b2d55e7088c294b851e8f4147ad0f",
      "parents": [
        "40cd0215f15ccbd2462bb855389467b0fd05b66a"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "memmenlauer@biodataanalysis.de",
        "time": "Wed Sep 09 13:43:15 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Sep 15 20:39:44 2020 +0200"
      },
      "message": "TServerSocket.cpp: Ensure the server is really listening (via helper variable listening_)\nClient: cpp\nPatch: Mario Emmenlauer\n\nThis closes #2232\n"
    },
    {
      "commit": "40cd0215f15ccbd2462bb855389467b0fd05b66a",
      "tree": "d55dc0da383d601fda508355de4f5cf5a5059470",
      "parents": [
        "304f50b39fbb1f6a66c1bb76cf88a135d015fda9"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "memmenlauer@biodataanalysis.de",
        "time": "Wed Sep 09 13:53:31 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Sep 15 09:03:56 2020 +0200"
      },
      "message": "Added getter and setter for domain socket path, and minor fix for printing abstract domain socket paths\nClient: cpp\nPatch: Mario Emmenlauer\n\nThis closes #2233\n"
    },
    {
      "commit": "304f50b39fbb1f6a66c1bb76cf88a135d015fda9",
      "tree": "3b2eba96cc850b1968419da3baa94b88306ffb91",
      "parents": [
        "413377bbbcacbf0b8db5ff456d71ef5fe3a9c2e3"
      ],
      "author": {
        "name": "Jonathan Mackenzie",
        "email": "jonmac1@gmail.com",
        "time": "Tue Sep 15 01:41:07 2020 +0930"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Sep 14 09:11:07 2020 -0700"
      },
      "message": "Fixed double newline at end of generated python service files (#2236)\n\nGenerated python files have a blank line at the end of files, except for\r\nservice files where there are two blank lines, this change makes these\r\nservice files consistent.\r\n\r\nThis change is trivial and thus does not require a ticket."
    },
    {
      "commit": "413377bbbcacbf0b8db5ff456d71ef5fe3a9c2e3",
      "tree": "a0f1da0200b60fba681e4f599f98773ad93a5d20",
      "parents": [
        "6b1cb30f48713f11c0b485d08f494d8cf607a05e"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Sep 12 19:18:06 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Sep 12 19:18:36 2020 +0200"
      },
      "message": "fix CI: add Erlang crashes to known failures\n"
    },
    {
      "commit": "6b1cb30f48713f11c0b485d08f494d8cf607a05e",
      "tree": "12c5fbe9cc7707d4f13dc12f7b8f76509cc19e86",
      "parents": [
        "03715899d280c834f8cccbb0435fdedcc456c0e1"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed May 27 12:08:01 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Sep 12 19:07:28 2020 +0200"
      },
      "message": "THRIFT-5217 Deprecated boost header\nClient: cpp\nPatch: Zezeng Wang\n\nThis closes #2158\n"
    },
    {
      "commit": "03715899d280c834f8cccbb0435fdedcc456c0e1",
      "tree": "5972cd2316bb19f45969b205a6ac90c48fe07bf8",
      "parents": [
        "47d4a00f51de56d409fe016c5aa78d763128cbca"
      ],
      "author": {
        "name": "longzhiri",
        "email": "persistentsnail@gmail.com",
        "time": "Tue Aug 04 22:01:09 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Sep 12 19:01:36 2020 +0200"
      },
      "message": "THRIFT-5260 Fix the thrift compiler generate problematic lua code for the oneway method\nClient: lua\nPatch: longzhiri \u003cpersistentsnail@gmail.com\u003e\n\nThis closes #2212\n\nThe oneway method\u0027s processor has no need to write the result to client, but it is necessary to return values of each handler\u0027s return.\n"
    },
    {
      "commit": "47d4a00f51de56d409fe016c5aa78d763128cbca",
      "tree": "9feec995ab65897125c3f281c8e3260de731001d",
      "parents": [
        "b0d14133d5071370905a1b54b37a1a7c86d50e6d"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Thu May 21 19:45:48 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Sep 12 18:52:22 2020 +0200"
      },
      "message": "Deprecated WinXP and Server2003 methods\nClient: cpp\nPatch: Mario Emmenlauer\n\nThis closes #2165\n"
    },
    {
      "commit": "b0d14133d5071370905a1b54b37a1a7c86d50e6d",
      "tree": "517583f4bb61da82195f237c3663cac3f259e1bc",
      "parents": [
        "935770c6b077fd96430684049078bdb9bdff50c5"
      ],
      "author": {
        "name": "Allen George",
        "email": "allen.george@gmail.com",
        "time": "Sun Mar 29 11:48:55 2020 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Sep 02 09:03:40 2020 +0200"
      },
      "message": "THRIFT-5158 Update Rust generator and Rust lib,test,tutorial to only support 2018 edition\nClient: rs\nPatch: Allen George\n\nThis closes #2078\n"
    },
    {
      "commit": "935770c6b077fd96430684049078bdb9bdff50c5",
      "tree": "124d39ef5293e40c68e8cf90c89b27fb3117281c",
      "parents": [
        "073166f2c4b99b5ab4b425dd2dfc137b00a2e260"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Sun Mar 08 17:31:21 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Sep 02 08:54:35 2020 +0200"
      },
      "message": "THRIFT-5136: Fix memory leak in thrift_multiplexed_processor_process_impl()\nClient: c_glib\nPatch: wangyunjian \u003cwangyunjian@huawei.com\u003e\n\nThis closes #2052\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "073166f2c4b99b5ab4b425dd2dfc137b00a2e260",
      "tree": "e6e3e48a99ac7bb1146aedb88647285fd9e083f2",
      "parents": [
        "021cb2707086a926ae49dcb9c1b7929472d0daa9"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Sun Jul 26 21:25:50 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Sep 02 08:49:42 2020 +0200"
      },
      "message": "THRIFT-5255: Fix stack overflow in framed transport\nClient: c_glib\nPatch: wangyunjian \u003cwangyunjian@huawei.com\u003e\n\nThis closes #2206\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "021cb2707086a926ae49dcb9c1b7929472d0daa9",
      "tree": "b06f41eec9e6ad3f5b4480b009852922bcab20d0",
      "parents": [
        "21b3e46993005e86b05714e3806ee9eb53a1d0af"
      ],
      "author": {
        "name": "Zero",
        "email": "longzhiri@gmail.com",
        "time": "Mon Aug 03 20:44:00 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Aug 31 22:52:39 2020 +0200"
      },
      "message": "THRIFT-5259 Fix \"Transport endpoint is not connected \" error when running lua test server accepts a connection\nClient: lua\nPatch: Zero \u003clongzhiri@gmail.com\u003e\n\nThis closes #2211\n"
    },
    {
      "commit": "21b3e46993005e86b05714e3806ee9eb53a1d0af",
      "tree": "f812aaf9cca1714ae611327fb03161287a96f854",
      "parents": [
        "cc41c29c08be3830104ef7bec2c181c99d40b1a3"
      ],
      "author": {
        "name": "longzhiri",
        "email": "persistentsnail@gmail.com",
        "time": "Sat Aug 08 15:24:10 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Aug 31 22:46:43 2020 +0200"
      },
      "message": "THRIFT-5262 Fix a encoding struct bug in the compact protocol implementation to lua\nClient: lua\nPatch: longzhiri \u003cpersistentsnail@gmail.com\u003e\n\nThis closes #2214\n"
    },
    {
      "commit": "cc41c29c08be3830104ef7bec2c181c99d40b1a3",
      "tree": "c6a56e10b9acc272176adcfdded1b5972e802a10",
      "parents": [
        "3a03da53af6969354d541bf225d9f670978c4118"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Sat Aug 22 15:08:22 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Aug 31 22:41:45 2020 +0200"
      },
      "message": "Fix appveryor check\nPatch: Zezeng Wang\n\nThis closes #2220\n"
    },
    {
      "commit": "3a03da53af6969354d541bf225d9f670978c4118",
      "tree": "913c4928ee1ce2f54cbed268841427cdfc1b1fc4",
      "parents": [
        "22b6c0c8bbc7089ce714f782366c2914c5e9eac5"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Sat Aug 22 12:15:46 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Aug 31 22:37:01 2020 +0200"
      },
      "message": "THRIFT-5268 Fix some file loss \")\" in define\nClient: c_glib\nPatch: Zezeng Wang\n\nThis closes #2218\n"
    },
    {
      "commit": "22b6c0c8bbc7089ce714f782366c2914c5e9eac5",
      "tree": "c663ad84228397462b114aeb761d399ba5d63f51",
      "parents": [
        "0503fc0112728bd17d9b5163716265c2a879404f"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Fri Aug 28 17:20:31 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Sat Aug 29 09:38:13 2020 -0700"
      },
      "message": "THRIFT-5270: Fix wrong int to string conversions\n\nClient: go\n\nStarting from go 1.15, go test starts to complain about wrongly used int\nto string conversions:\n\n    ./field.go:58:83: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)\n    ./numeric.go:72:12: conversion from int64 to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)\n    ./json_protocol_test.go:612:92: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)\n    ./simple_json_protocol_test.go:685:96: conversion from int to string yields a string of one rune, not a string of digits (did you mean fmt.Sprint(x)?)\n\njson_protocol_test and simple_json_protocol_test usages are actually\nalready in format arg so just remove the conversion is good enough.\nfield is no longer used anywhere so just removed it (there\u0027s one line of\ncommented out code in compact_protocol so remove that line as well). The\none in numeric.go is actually a bug. We didn\u0027t set sValue correctly in\nNewNumericFromI64 and NewNumericFromI32 functions.\n"
    },
    {
      "commit": "0503fc0112728bd17d9b5163716265c2a879404f",
      "tree": "9ac0ade6918ac2a3d3783f61151aa5d9ee8e7e92",
      "parents": [
        "c80b8bbe703f593d1aa47941bd6b61f7726068bd"
      ],
      "author": {
        "name": "panivko",
        "email": "vladimir.panivko@together.com",
        "time": "Fri May 29 08:17:16 2020 +0300"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Aug 25 21:58:10 2020 +0200"
      },
      "message": "THRIFT-5132 Warning in TSocket when using ssl connection\nClient: PHP\nPatch: Vladimir Panivko\n\nThis closes #2160\n"
    },
    {
      "commit": "c80b8bbe703f593d1aa47941bd6b61f7726068bd",
      "tree": "ed77589840f5c4c64d09465270edba1c5d3eb9e1",
      "parents": [
        "01d53f483a7531ad4899b522060e8913dca309fb"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Thu Jul 23 09:43:41 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Aug 07 16:54:14 2020 +0200"
      },
      "message": "THRIFT-5237 Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class\nClient: c_glib\nPatch: Zezeng Wang\n\nThis closes #2208\n"
    },
    {
      "commit": "01d53f483a7531ad4899b522060e8913dca309fb",
      "tree": "5e0defc327b49ed329aa9022cb6ea884052239a7",
      "parents": [
        "68c1506715d834c5ab274a622a67bab207936ac7"
      ],
      "author": {
        "name": "Neil Williams",
        "email": "neil@reddit.com",
        "time": "Tue Jul 07 07:27:29 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Thu Aug 06 08:27:55 2020 -0700"
      },
      "message": "THRIFT-5248: Python: Make TSocket.isOpen check if server still connected\n\nClient: py\n\nThis is inspired by changes to the Go library (THRIFT-5214) and, by\nproxy, this blog post[1]. The idea is that if the other end of the\nsocket has closed their end of the connection, we can figure that out by\ndoing a non-blocking read on our socket before we waste time serializing\nand sending a message just to find out the socket is closed when we try\nto read the response.\n\n[1]: https://github.blog/2020-05-20-three-bugs-in-the-go-mysql-driver/\n"
    },
    {
      "commit": "68c1506715d834c5ab274a622a67bab207936ac7",
      "tree": "6f51b8289651a568e71fb6611e79de5fef76d87d",
      "parents": [
        "b93fafd327f6de0f4c7496da5dfd5e8c5d8fe499"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Aug 04 23:09:14 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Aug 05 11:55:00 2020 +0200"
      },
      "message": "THRIFT-5261 Support for deprecated methods (via annotation)\nClient: Delphi\nPatch: Jens Geyer\n\nThis closes #2213\n"
    },
    {
      "commit": "b93fafd327f6de0f4c7496da5dfd5e8c5d8fe499",
      "tree": "77f824ac4fb6ae2aed8276465e9d6959cbac1de9",
      "parents": [
        "64f419b5ad40df233d34cc3715c68b8d85712699"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Sun Aug 02 13:36:54 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Mon Aug 03 10:48:24 2020 -0700"
      },
      "message": "THRIFT-5214: Use peek to implement socket connectivity check\n\nClient: go\n\nIn previous implementation of socket connectivity check, we try to read\n1 byte and put it into buffer when succeeded. The buffer complicates\nthe implementation of Read function. Change to use syscall.Recvfrom with\nMSG_PEEK flag instead so that the buffer is no longer needed.\n"
    },
    {
      "commit": "64f419b5ad40df233d34cc3715c68b8d85712699",
      "tree": "223de55598275d97826316e2600fa57100ede006",
      "parents": [
        "86352b4821085d63861deab59c46ef1042fbfe81"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Wed Jul 29 10:12:53 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Jul 29 12:42:37 2020 -0700"
      },
      "message": "THRIFT-5257: Fix Go THeaderTransport endOfFrame handling\n\nClient: go\n\nIn the current implementation, we only call endOfFrame when we hit EOF\nwhen reading from the frameReader. The problem is in go stdlib the Read\ncall finished reading the remaining data from frameReader will not\nreturn EOF, the next Read will. This caused us in most cases only call\nendOfFrame at the beginning of the next frame, which could cause\ntroubles because we didn\u0027t read the beginning of the frame properly.\n"
    },
    {
      "commit": "86352b4821085d63861deab59c46ef1042fbfe81",
      "tree": "6c9c441d4125e4bb115e9989a769c99b36212677",
      "parents": [
        "23c8e52fa0708c53f74958944ecf04b293d1db73"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Mon Jun 15 17:00:33 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Jul 25 12:13:53 2020 +0200"
      },
      "message": "THRIFT-5237 Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class\nClient: cpp\nPatch: Zezeng Wang\n\nThis closes #2185\n"
    },
    {
      "commit": "23c8e52fa0708c53f74958944ecf04b293d1db73",
      "tree": "2488715cb1d846e8c57a2b8629beac2761dd203c",
      "parents": [
        "363ee0001f45118067249ed75ddc348195bf5734"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jul 15 23:46:23 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jul 16 08:51:36 2020 +0200"
      },
      "message": "THRIFT-5254 Member name cannot be Isset (unless it is an \"required\" member)\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2203\n"
    },
    {
      "commit": "363ee0001f45118067249ed75ddc348195bf5734",
      "tree": "cf9848dd8ed758abd3690fed98a7475d7525b8f7",
      "parents": [
        "58e655e4b99e97a733057be78f614b4d9ddea560"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jul 15 23:44:56 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jul 16 08:51:20 2020 +0200"
      },
      "message": "THRIFT-5253 using Result in result name generates wrong IAsync interface\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2202\n"
    },
    {
      "commit": "58e655e4b99e97a733057be78f614b4d9ddea560",
      "tree": "cdf37d1f919b1456ea099a0bd5d7933197b30c3c",
      "parents": [
        "ec57271d5b90ba06eaad99dda26dc0af9bd2af71"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jul 14 15:34:44 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jul 14 21:41:36 2020 +0200"
      },
      "message": "THRIFT-5252 Make CreateHttpClientHandler() method virtual\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2201\n"
    },
    {
      "commit": "ec57271d5b90ba06eaad99dda26dc0af9bd2af71",
      "tree": "bc7073638437650c1203e8612104e3e8f7deacb8",
      "parents": [
        "eb45c2a1e48cc50f70298a34702fb365c61b489d"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Jul 13 21:15:31 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Jul 13 23:42:45 2020 +0200"
      },
      "message": "THRIFT-5251 StringUtils\u003cT\u003e.ToString() raises an exception for enum values outside range\nClient: Delphi\nPatch: Jens Geyer\n"
    },
    {
      "commit": "eb45c2a1e48cc50f70298a34702fb365c61b489d",
      "tree": "53fcab0c8ebbdafe72ee483ea37ecd92ba288649",
      "parents": [
        "dd0918713d8b5db0a2cf9c3bd7141c2e252bd7e4"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Mon Jul 06 16:53:47 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jul 07 22:18:07 2020 +0200"
      },
      "message": "THRIFT-5247 Avoiding meaningless System.copy\nClient: java\nPatch: Zezeng Wang\n\nThis closes #2196\n"
    },
    {
      "commit": "dd0918713d8b5db0a2cf9c3bd7141c2e252bd7e4",
      "tree": "467aa993e108167b035343ed0c4f662e721f20b6",
      "parents": [
        "761a869e0508d2cf7975b040a6da54ae62a889b6"
      ],
      "author": {
        "name": "dugenkui",
        "email": "dugenkui@meituan.com",
        "time": "Sat Jul 04 01:33:39 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Jul 03 23:36:13 2020 +0200"
      },
      "message": "Fix FrameWriter.java typo\nClient: java\nPatch: dugenkui \u003cdugenkui@meituan.com\u003e\n\nThis closes #2193\n"
    },
    {
      "commit": "761a869e0508d2cf7975b040a6da54ae62a889b6",
      "tree": "e8f64a8a77b45b45434bb733210d648315f82533",
      "parents": [
        "6c5f5c8a94b9f8b697d5bd51f9a4fcb70e96c248"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Thu Feb 27 00:02:19 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jul 01 23:18:03 2020 +0200"
      },
      "message": "THRIFT-5118: Fix memory leak when the handler method return a exception\nClient: c_glib\nPatch: wangyunjian\n\nThis closes #2035\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "6c5f5c8a94b9f8b697d5bd51f9a4fcb70e96c248",
      "tree": "c7310714f51e9afc4d8173303ee488ccac462ddc",
      "parents": [
        "4db7a0af13ac9614e3e9758d42b2791040f4dc7e"
      ],
      "author": {
        "name": "ResDiaryLewis",
        "email": "lewis.jackson@resdiary.com",
        "time": "Fri Jun 26 10:37:49 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jul 01 22:59:16 2020 +0200"
      },
      "message": "THRIFT-5329: Add THttpTransport constructor with HttpClient\nClient: netstd\nPatch: Lewis Jackson\n\nThis closes #2188\n"
    },
    {
      "commit": "4db7a0af13ac9614e3e9758d42b2791040f4dc7e",
      "tree": "6ea8c8eafb05706125445cb2865540dc1dc84b87",
      "parents": [
        "5dc1d268f5c63b804d0b185943467cfeb47859d5"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Sat Jun 27 10:13:34 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Jul 01 11:50:44 2020 -0700"
      },
      "message": "THRIFT-5240: Do connectivity check in Go server\n\nClient: go\n\nIn compiler generated TProcessorFunction implementations, add a\ngoroutine after read the request to do connectivity check on the input\ntransport. If the transport is no longer open, cancel the context object\npassed into the handler implementation.\n\nAlso define ErrAbandonRequest error, to help TSimpleServer closing\nclient connections that\u0027s already closed on the other end.\n"
    },
    {
      "commit": "5dc1d268f5c63b804d0b185943467cfeb47859d5",
      "tree": "d57f0316bbfea7d7dfb9e86a3ec0f37c01fa7fe8",
      "parents": [
        "0dd1363931ac1f9a531b48ded7f1178194fa4ef6"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Sat Jun 27 08:34:31 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Tue Jun 30 10:07:48 2020 -0700"
      },
      "message": "THRIFT-5152: Separate timeout in TSSLSocket\n\nClient: go\n\nWe separated timeout in go\u0027s TSocket into connect timeout and socket\ntimeout in 81334cd, this change does the same for TSSLSocket to keep\nthem consistent.\n\nAlso rename the arg in NewTSocketFromConnTimeout from connTimeout to\nsocketTimeout, because in that function we already have a connection,\nso connect timeout is never used again. The timeout passed into that\nfunction is really for socket timeout, not connect timeout. The name of\nthat function actually means \"New TSocket From Conn (with) Timeout\", not\n\"New TSocket From ConnTimeout\" (I guess that\u0027s where the original\nconfusion came from).\n\nAlso add the missing change note for the breaking change.\n"
    },
    {
      "commit": "0dd1363931ac1f9a531b48ded7f1178194fa4ef6",
      "tree": "50bb2f7982572fba20d249ef8f5679035372f4ec",
      "parents": [
        "86cc6f095c5943cb382e5ef0e5cf889c6e09bd86"
      ],
      "author": {
        "name": "dugenkui",
        "email": "dugenkui@meituan.com",
        "time": "Wed Apr 29 02:41:02 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Jun 28 16:55:16 2020 +0200"
      },
      "message": "THRIFT-5190: StringUtils haven\u0027t take `(offset + length) \u003e bytes.length` into account\nClient: java\nPatch: dugenkui \u003cdugenkui@meituan.com\u003e\n\nThis closes #2125\n"
    },
    {
      "commit": "86cc6f095c5943cb382e5ef0e5cf889c6e09bd86",
      "tree": "97061f642591a2f32f7a225bb3f76b63e84cce48",
      "parents": [
        "24ca210fde0ad51769e359ad9f925ae30a6ed061"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Sat Mar 21 22:34:02 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Jun 27 15:25:06 2020 +0200"
      },
      "message": "THRIFT-5144: Fix memory leak when generate deserialize list element\nClient: c_glib\nPatch: wangyunjian\n\nThis closes #2064\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "24ca210fde0ad51769e359ad9f925ae30a6ed061",
      "tree": "2ff0fd3977be92bc7f835cd0afe45dfa9a384f12",
      "parents": [
        "6e16c2bc542657954966f5fde98d16398853582c"
      ],
      "author": {
        "name": "Salah Ghanim",
        "email": "salah.ghanim@gmail.com",
        "time": "Wed Jun 24 12:21:10 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 25 22:06:13 2020 +0200"
      },
      "message": "Fix README.md typo\nPatch: Salah Ghanim\n\nThis closes #2186\n"
    },
    {
      "commit": "6e16c2bc542657954966f5fde98d16398853582c",
      "tree": "00e0bd8bc1c59efd3f9e5861c6763c842461bee5",
      "parents": [
        "283410126ccb3ac4990045e07cccb5df11ee2a16"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jun 24 23:51:01 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 25 22:00:52 2020 +0200"
      },
      "message": "THRIFT-5238 GetHashCode can throw NullReferenceException\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2187\n"
    },
    {
      "commit": "283410126ccb3ac4990045e07cccb5df11ee2a16",
      "tree": "0b673389fe3a02ca5972dfe04ef5a1c16c0ec102",
      "parents": [
        "bcae3bb52f976ce245ad77dfb060e5776d67ce85"
      ],
      "author": {
        "name": "Emmanuel Brard",
        "email": "emmanuel.brard@getyourguide.com",
        "time": "Mon Jun 22 10:40:11 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Jun 22 22:50:45 2020 +0200"
      },
      "message": "THRIFT-2087 Python compiler replace non utf-8 char with default\nClient: py\nPatch: Emmanuel Brard\n\nThis closes #2184\n"
    },
    {
      "commit": "bcae3bb52f976ce245ad77dfb060e5776d67ce85",
      "tree": "6359791188eabd62dc520426c89cc91a4c45bb3b",
      "parents": [
        "8b8633e8d805905868f359adf85d18326204a5d5",
        "e79f764f09afdfe829a06ca721059d34244d7c20"
      ],
      "author": {
        "name": "Duru Can Celasun",
        "email": "dcelasun@apache.org",
        "time": "Thu Jun 18 22:09:33 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jun 18 22:09:33 2020 +0100"
      },
      "message": "THRIFT-5233: Handle I/O timeouts in go library (#2181)\n\nClient: go\r\n\r\nAs discussed in the JIRA ticket, this commit changes how we handle I/O\r\ntimeouts in the go library.\r\n\r\nThis is a breaking change that adds context to all Read*, Write*, and\r\nSkip functions to TProtocol, along with the compiler change to support\r\nthat, and also adds context to TStandardClient.Recv, TDeserializer,\r\nTStruct, and a few others.\r\n\r\nAlong with the function signature changes, this commit also implements\r\ncontext cancellation check in the following TProtocol\u0027s ReadMessageBegin\r\nimplementations:\r\n\r\n- TBinaryProtocol\r\n- TCompactProtocol\r\n- THeaderProtocol\r\n\r\nIn those ReadMessageBegin implementations, if the passed in context\r\nobject has a deadline attached, it will keep retrying the I/O timeout\r\nerrors, until the deadline on the context object passed. They won\u0027t\r\nretry I/O timeout errors if the passed in context does not have a\r\ndeadline attached (still return on the first error)."
    },
    {
      "commit": "8b8633e8d805905868f359adf85d18326204a5d5",
      "tree": "ac16ed99161f625778a51c4ee48fa70b7d67792e",
      "parents": [
        "1bed620c5f91cf60fd7c4e54f16714fd50ad807c"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Fri May 29 22:29:25 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 18 22:23:05 2020 +0200"
      },
      "message": "THRIFT-5221: Fix stack overflow when reading buffer\nClient: c_glib\nPatch: wangyunjian\n\nThis closes #2161\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "1bed620c5f91cf60fd7c4e54f16714fd50ad807c",
      "tree": "a1d4d0e775bf13177531f1433679c5135dc4505e",
      "parents": [
        "7db2d0fa46fc7724eff9e0d5b85d28010265cf55"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 18 11:22:12 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 18 11:22:33 2020 +0200"
      },
      "message": "THRIFT-5235 Add property setter for isset flags\nClient: delphi\nPatch: Jens Geyer\n"
    },
    {
      "commit": "7db2d0fa46fc7724eff9e0d5b85d28010265cf55",
      "tree": "1b4873c7e39cfaeb5ccaaeaad1c01a7e2c722fb3",
      "parents": [
        "210202e65c4d68303438a42763e5b50a67d44a7d"
      ],
      "author": {
        "name": "Phil Price",
        "email": "philprice@gmail.com",
        "time": "Sun Aug 25 07:27:52 2019 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 18 00:37:40 2020 +0200"
      },
      "message": "THRIFT-5234 Fix a number of js/ts generation issues\nClient: js/ts\nPatch: Phil Price\n"
    },
    {
      "commit": "210202e65c4d68303438a42763e5b50a67d44a7d",
      "tree": "76117243c2004a28e7d18a15181d03cd963ff271",
      "parents": [
        "7b379944efe1f63511831f5555782310a4f3296d"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Jun 14 14:40:04 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jun 16 22:04:23 2020 +0200"
      },
      "message": "THRIFT-5229 Deprecate as3 support\nClient: as3\nPatch: Jens Geyer\n\nThis closes #2182\n"
    },
    {
      "commit": "7b379944efe1f63511831f5555782310a4f3296d",
      "tree": "1339e49c52ea45d6a4d415ad763a79f6b8c28228",
      "parents": [
        "26681fbdb77f6dfaf2f2613d4ad860a224e84b71"
      ],
      "author": {
        "name": "Marco Schroeter",
        "email": "mschroeter@biodataanalysis.de",
        "time": "Thu Mar 12 10:30:49 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Jun 15 22:32:43 2020 +0200"
      },
      "message": "Thrift.csproj: Stop writing AssemblyAttributes.cs to /tmp\nClient: netstd\nPatch: Marco Schroeter\n\nThis closes #2167\n"
    },
    {
      "commit": "e79f764f09afdfe829a06ca721059d34244d7c20",
      "tree": "9680d1a399fe1e60a7f399a5a80cf3fb6a6a501a",
      "parents": [
        "3f78c70bbba82c733b1545d39eb5b489ac384e4c"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Fri Jun 12 22:22:35 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Mon Jun 15 13:28:38 2020 -0700"
      },
      "message": "THRIFT-5233: Handle I/O timeouts in go library\n\nClient: go\n\nAs discussed in the JIRA ticket, this commit changes how we handle I/O\ntimeouts in the go library.\n\nThis is a breaking change that adds context to all Read*, Write*, and\nSkip functions to TProtocol, along with the compiler change to support\nthat, and also adds context to TStandardClient.Recv, TDeserializer,\nTStruct, and a few others.\n\nAlong with the function signature changes, this commit also implements\ncontext cancellation check in the following TProtocol\u0027s ReadMessageBegin\nimplementations:\n\n- TBinaryProtocol\n- TCompactProtocol\n- THeaderProtocol\n\nIn those ReadMessageBegin implementations, if the passed in context\nobject has a deadline attached, it will keep retrying the I/O timeout\nerrors, until the deadline on the context object passed. They won\u0027t\nretry I/O timeout errors if the passed in context does not have a\ndeadline attached (still return on the first error).\n"
    },
    {
      "commit": "26681fbdb77f6dfaf2f2613d4ad860a224e84b71",
      "tree": "b742ea0959bd5e90e1748323a870291ef8ad8e9f",
      "parents": [
        "3f78c70bbba82c733b1545d39eb5b489ac384e4c"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed Jun 03 17:24:38 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Jun 14 14:17:11 2020 +0200"
      },
      "message": "THRIFT-5225: Use nullptr instead of NULL\nPatch: Zezeng Wang\n\nThis closes #2168\n"
    },
    {
      "commit": "3f78c70bbba82c733b1545d39eb5b489ac384e4c",
      "tree": "34cf2af82e2a76ecd4eb1e6d86c15b38a97d37d2",
      "parents": [
        "dabfea2f98a9ab605748dea55b1efbb1932b361f"
      ],
      "author": {
        "name": "Stanislav Markevic",
        "email": "smarkevic@freelancer.com",
        "time": "Tue Feb 04 12:19:05 2020 +0000"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jun 09 23:23:02 2020 +0200"
      },
      "message": "THRIFT-5082 Add a Class reference for PHP enum $_TSPEC\nClient: php\nPatch: Stanislav Markevic\n\nThis closes #2000\n"
    },
    {
      "commit": "dabfea2f98a9ab605748dea55b1efbb1932b361f",
      "tree": "ac141f9f985ad0aa540b9b6111b8c9ffcfb39728",
      "parents": [
        "cfbb905034c928f073639af00b30d74951744b61"
      ],
      "author": {
        "name": "max ulidtko",
        "email": "ulidtko@gmail.com",
        "time": "Tue May 19 21:44:46 2020 +0300"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jun 09 23:09:25 2020 +0200"
      },
      "message": "THRIFT-5186: Rewrite address resolution in T{Nonblocking,}ServerSocket\nClient: cpp\nPatch: Max Ulidtko\n\nThis closes #2151\n"
    },
    {
      "commit": "cfbb905034c928f073639af00b30d74951744b61",
      "tree": "39e689e4941568f5b05892fcfbba02c0573eddeb",
      "parents": [
        "e382275bad2bd11fb5df33dd7db520fd7596f4ac"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Jun 09 13:07:38 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jun 09 21:07:38 2020 +0100"
      },
      "message": "THRIFT-5214: Reset read deadline in socketConn\n\nClient: go\r\n\r\nThis is a slightly different, and less error-prone approach from the\r\nfix in e382275b.\r\n\r\nThe previous approach relies on passing the set socket timeout into the\r\nunderlying socketConn from TSocket and TSSLSocket. But since we have so\r\nmany different constructors for TSocket and TSSLSocket, some makes the\r\ninitial connection in the constructor and some does not, there are so\r\nmany different places we would need to remember to pass socketTimeout\r\ninto socketConn. In the future, when we add another constructor to them,\r\nwe could either forget to pass the socket timeout into socketConn, or\r\ntry to pass it while we haven\u0027t constructed socketConn yet (which will\r\ncause panic), both are bad.\r\n\r\nIn this approach we just clear the read deadline in the connectivity\r\ncheck read. Because that\u0027s a non-blocking read, it would work just fine\r\nwithout a read deadline."
    },
    {
      "commit": "e382275bad2bd11fb5df33dd7db520fd7596f4ac",
      "tree": "274cea670a8b8388f62c97b25bd18b5be6933fdb",
      "parents": [
        "c9890cb873f127137abd513a7ebdf0186ee8c88c"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Mon Jun 08 06:06:17 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 14:06:17 2020 +0100"
      },
      "message": "THRIFT-5214: Push read deadline in socketConn\n\nClient: go\r\n\r\nWe added socketConn to go library for connectivity check in\r\nhttps://github.com/apache/thrift/pull/2153, but forgot to push read\r\ndeadline on the socket when doing the connectivity checks. This caused\r\nthe issue of large number of connectivity checks to fail with I/O\r\ntimeout errors."
    },
    {
      "commit": "c9890cb873f127137abd513a7ebdf0186ee8c88c",
      "tree": "ba2ffa394398ea56c21f361d873627264a628c60",
      "parents": [
        "9fd134f269ccadd3a77a198d0c27c0a0d7c9c723"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Mon Jun 08 04:32:21 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 12:32:21 2020 +0100"
      },
      "message": "THRIFT-5214: Partial rewrite of TFramedTransport\n\nClient: go\r\n\r\nWhile debugging the issue in THRIFT-5214, I original thought that was a\r\nbug in TFramedTransport implementation, so I took some time scrutinize\r\nthe TFramedTransport code. Although in the end there\u0027s no bug, the\r\ncurrent implementation of TFramedTransport, especially in the Read\r\nfunction, has some weird handling while at frame boundary, which is both\r\nerror-prone and hard to follow (I did found and fixed one bug there in\r\nhttps://github.com/apache/thrift/pull/1810 before).\r\n\r\nThe new implementation reads the whole frame into a buffer, which would\r\nuse slightly more memory, but it follows the pattern of TFramedTransport\r\nimplementation of other languages (e.g. Java), and also the pattern we\r\nhandle frame in THeaderTransport. It also reduced the complexity and\r\nweirdness of the frame boundary handling in Read implementation.\r\n\r\nThis rewrite also removes the print call from library code."
    },
    {
      "commit": "9fd134f269ccadd3a77a198d0c27c0a0d7c9c723",
      "tree": "620a50a1f1bfb4456a9792fed90b285ccfae8719",
      "parents": [
        "0acf23b7cf39922a2eee9b969e4e73989050f0d6"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Mon Jun 08 04:30:14 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jun 08 12:30:14 2020 +0100"
      },
      "message": "Use io.CopyN to simplify THeaderTransport code\n\nClient: go\r\n\r\nIn THeaderTransport implementation, use io.CopyN instead of\r\nio.Copy+io.LimitReader.\r\n\r\nUnderlying io.CopyN is actually implemented with io.Copy+io.LimitReader\r\n[0], but it also does some extra checks we can take advantage of. It\r\nalso simplifies the code in thrift repo.\r\n\r\n[0]: https://github.com/golang/go/blob/83b181c68bf332ac7948f145f33d128377a09c42/src/io/io.go#L340"
    },
    {
      "commit": "0acf23b7cf39922a2eee9b969e4e73989050f0d6",
      "tree": "56f1d5bcd2df1c52e97e511afcb2ce829a5f9a8f",
      "parents": [
        "b1628cf8bcbe6c87b117004beb3de6316417739c"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed May 13 17:07:37 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 04 21:43:30 2020 +0200"
      },
      "message": "THRIFT-5200 Thrift compiler will generate incorrect code when add \u0027cob_style\u0027 option\nClient: cpp\nPatch: Zezeng Wang\n\nThis closes #2144\n"
    },
    {
      "commit": "b1628cf8bcbe6c87b117004beb3de6316417739c",
      "tree": "472483bb7d5882a5025f514701eed757e698bab5",
      "parents": [
        "bde5cbc0788b936aff516e2c0527ff950cc9b466"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Sun Mar 01 16:27:16 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 04 21:25:58 2020 +0200"
      },
      "message": "THRIFT-5122: Fix memory leak on accept error in thrift_simple_server_serve()\nClient: c_glib\nPatch: wangyunjian\n\nThis closes #2039\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "bde5cbc0788b936aff516e2c0527ff950cc9b466",
      "tree": "dbd75297c718a7ebbf5b36f4dd50f4a73c3ae4a3",
      "parents": [
        "eac4d0c79a5fc550fb61bc18f20d3b5aae8f6e7f"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Tue Jun 02 11:06:59 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jun 04 21:18:01 2020 +0200"
      },
      "message": "Added IsOpen() and GetPort() for netstd transports\nClient: netstd\nPatch: Mario Emmenlauer\n\nThis closes #2166\n"
    },
    {
      "commit": "eac4d0c79a5fc550fb61bc18f20d3b5aae8f6e7f",
      "tree": "df1649a839c3b5ad05c5f4105dfc6ea85e988891",
      "parents": [
        "fa770f61e9fd26af6bd6f0f2f4c3f7815523d0d8"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Thu Feb 20 17:12:29 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Jun 03 23:10:36 2020 +0200"
      },
      "message": "THRIFT-5114 Simplified reallocation of TMemoryBuffer\nClient: cpp\nPatch: Mario Emmenlauer\n\nThis closes #2030\n"
    },
    {
      "commit": "fa770f61e9fd26af6bd6f0f2f4c3f7815523d0d8",
      "tree": "de15459a8e60ffc1291fc982f21a279d9aa4b442",
      "parents": [
        "68f2194dfa3150526445d37afd80ededb7bb4585"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Mon May 11 20:45:42 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Jun 02 13:55:03 2020 +0200"
      },
      "message": "Use correct platform executable suffix for thrift compiler\nPatch: Mario Emmenlauer\n\nThis closes #2139\n"
    },
    {
      "commit": "68f2194dfa3150526445d37afd80ededb7bb4585",
      "tree": "58ba3b062f601eab4f25a64019facd2405b3adde",
      "parents": [
        "36bf0a491e900f09b894b54dbe037262acec73e5"
      ],
      "author": {
        "name": "Anton Filippov",
        "email": "afilippov@ac-sw.com",
        "time": "Tue Mar 31 18:51:16 2020 +0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat May 30 15:07:56 2020 +0200"
      },
      "message": "Fix STRERROR_R_CHAR_P cxx check (remove unused variable warning-\u003eerror)\nClient: cpp\nPatch: Anton Filippov\n\nThis closes #2081\n"
    },
    {
      "commit": "36bf0a491e900f09b894b54dbe037262acec73e5",
      "tree": "1c12389538b52ace31728cfdbe91e71fbfae2b72",
      "parents": [
        "b559359b0b875cd7d4919f3120a0089f6d74e09a"
      ],
      "author": {
        "name": "Nathan Breakwell",
        "email": "nathan.breakwell@sophos.com",
        "time": "Tue Mar 03 12:20:13 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat May 30 14:59:48 2020 +0200"
      },
      "message": "Make named pipe security configurable by security descriptor string\nClient: cpp\nPatch: Nathan Breakwell\n\nThis closes #2083\n"
    },
    {
      "commit": "b559359b0b875cd7d4919f3120a0089f6d74e09a",
      "tree": "afeced29dff527ac6776b9e2a1f36998adba91c6",
      "parents": [
        "98854c48744f20b3f551817273ed502835477f09"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 28 21:27:49 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 28 21:32:34 2020 +0200"
      },
      "message": "THRIFT-5220 DeepCopy() extension methods not generated when the IDL contains no service\nClient: netstd\nPatch: Jens Geyer\n"
    },
    {
      "commit": "98854c48744f20b3f551817273ed502835477f09",
      "tree": "c73d8d2364762e0b20637652d70881b107850cf7",
      "parents": [
        "affea7bee468d4abc751fbbd1c2692ba5c7ac0e4"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 28 16:08:34 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 28 21:32:33 2020 +0200"
      },
      "message": "Updated LICENSE file\n"
    },
    {
      "commit": "affea7bee468d4abc751fbbd1c2692ba5c7ac0e4",
      "tree": "50a4c17061522db262525a4c5f5d105a51716b41",
      "parents": [
        "05023e81b264f249affdacad4ebae788b3ada85c"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 22 17:28:30 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 27 01:32:14 2020 +0200"
      },
      "message": "THRIFT-5216 generate DeepCopy methods\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2155\n"
    },
    {
      "commit": "05023e81b264f249affdacad4ebae788b3ada85c",
      "tree": "4fba9d044a814649779bed8c61b87cbb871b6080",
      "parents": [
        "d28f39fbc7bb9607a150544dd8f73f027c898c9b"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue May 26 15:31:20 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue May 26 23:31:20 2020 +0100"
      },
      "message": "THRIFT-5214: Connectivity check on go\u0027s TSocket\n\nClient: go\r\n\r\nImplement connectivity check on go\u0027s TSocket and TSSLSocket for\r\nnon-Windows systems.\r\n\r\nThe implementation is inspired by\r\nhttps://github.blog/2020-05-20-three-bugs-in-the-go-mysql-driver/"
    },
    {
      "commit": "d28f39fbc7bb9607a150544dd8f73f027c898c9b",
      "tree": "d51b55f7568fc0c78eb992be4bd48f1226841eb7",
      "parents": [
        "0198542201a6bd7e09ebd5a8b1ac14d3cb2b2bb7"
      ],
      "author": {
        "name": "Eric Chen",
        "email": "taiyang.chen@gmail.com",
        "time": "Tue May 19 02:48:43 2020 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue May 26 21:57:13 2020 +0200"
      },
      "message": "THRIFT-5129: Fix swift TSocketTransport on Mac\nClient: Swift\nPatch: Eric Chen\n\nThis closes #2149\n"
    },
    {
      "commit": "0198542201a6bd7e09ebd5a8b1ac14d3cb2b2bb7",
      "tree": "5a4723f611c40488dea543bcb7762fda0a14a20d",
      "parents": [
        "797fe252e0df18a24aa025d00d1d53c288ef2d4f"
      ],
      "author": {
        "name": "Eric Chen",
        "email": "taiyang.chen@gmail.com",
        "time": "Fri May 22 22:05:11 2020 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue May 26 21:52:05 2020 +0200"
      },
      "message": "THRIFT-5195: Handle Thrift union type sending for Swift\nClient: Swift\nPatch: Eric Chen\n\nThis closes #2154\n"
    },
    {
      "commit": "797fe252e0df18a24aa025d00d1d53c288ef2d4f",
      "tree": "ed80962526773a1a4392253dedc3465a3a605040",
      "parents": [
        "e6d7d13c35f5c9fe57889d7e77b0ba63910b1052"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed May 20 15:20:07 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue May 26 21:46:16 2020 +0200"
      },
      "message": "Supplement TNonblockingServer.py testcase\nClient: py\nPatch: Zezeng Wang\n\nThis closes #2150\n"
    },
    {
      "commit": "e6d7d13c35f5c9fe57889d7e77b0ba63910b1052",
      "tree": "f0cb43da0edf1822cb8852db587adc746475a40b",
      "parents": [
        "eb8e8437a59fe7c0ca522be53a69f4e34bedc4f1"
      ],
      "author": {
        "name": "James Lacey",
        "email": "jamlacey@gmail.com",
        "time": "Fri May 22 08:46:26 2020 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue May 26 21:35:19 2020 +0200"
      },
      "message": "THRIFT-5215: Remove portable_endian.h\nClient: cpp\nPatch: James Lacey\n\nThis closes #2152\n"
    },
    {
      "commit": "eb8e8437a59fe7c0ca522be53a69f4e34bedc4f1",
      "tree": "9836655dc1e34f5bb4cc4077c503d79d8fbedbbf",
      "parents": [
        "348790deaf633f368a147c413e0f17eb7373a973"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 22 01:11:11 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 22 01:12:24 2020 +0200"
      },
      "message": "addition to THRIFT-5185: Support for using WebSockets as a server transport\nto satisfy https://www.apache.org/legal/src-headers.html#3party\n"
    },
    {
      "commit": "348790deaf633f368a147c413e0f17eb7373a973",
      "tree": "eef011bb30e506902c2072fbc473b4370b3c1b92",
      "parents": [
        "528c22f59d3a35934f4f4308746a78d833b759e8"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Mon Mar 23 16:48:35 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 21 12:49:57 2020 +0200"
      },
      "message": "THRIFT-5147: Add uninstall function\nPatch: Zezeng Wang\n\nThis closes #2066\n"
    },
    {
      "commit": "528c22f59d3a35934f4f4308746a78d833b759e8",
      "tree": "5a499ac647a82b9db8399d607b0e1d7dcb69a35a",
      "parents": [
        "dd34c5281344d0f1c10b2f7daddfb032bc6e5cb3"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Mon May 11 10:57:00 2020 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 21 12:34:46 2020 +0200"
      },
      "message": "THRIFT-5201: Use Apache Parent Pom for Thrift Maven Plugin\nClient: Java\nPatch: David Mollitor\n\nThis closes #2136\n"
    },
    {
      "commit": "dd34c5281344d0f1c10b2f7daddfb032bc6e5cb3",
      "tree": "ada9361224009ed62d359675a57b959e916d0be5",
      "parents": [
        "f8103c69eaaa23fe7fff4d8413240063b9ec56d2"
      ],
      "author": {
        "name": "rel1ve",
        "email": "rel1ve@hotmail.com",
        "time": "Wed Mar 11 22:17:57 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu May 21 12:32:27 2020 +0200"
      },
      "message": "When I use --with-zlib args for cross-compiling, it failed without \"$(ZLIB_LDFLAGS)\".\nbuild system\nPatch: rel1ve \u003crel1ve@hotmail.com\u003e\n\nThis closes #2056\n"
    },
    {
      "commit": "f8103c69eaaa23fe7fff4d8413240063b9ec56d2",
      "tree": "2ce00fa0913ed94f720b30d132c8949a7afdb7af",
      "parents": [
        "7de1f5d7f394b49624e7278937d7ff665bfc642a"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Wed May 20 09:26:31 2020 -0400"
      },
      "committer": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Wed May 20 09:26:36 2020 -0400"
      },
      "message": "THRIFT-5202: TNonblockingMultiFetchClient Use SLF4J Parameterized Logging\nClient: java\nPatch: David Mollitor\n\nThis closes #2137\n\nUse SLF4J API to log full Exception details.  Use SLF4J parameterized logging instead of String format.\n"
    },
    {
      "commit": "7de1f5d7f394b49624e7278937d7ff665bfc642a",
      "tree": "b46ed79f92b0a44c12cf37932977b95005f7c82e",
      "parents": [
        "4fd001c878e748a09713235725d8ad41de6ea6a1"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 20 00:55:10 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 20 00:55:10 2020 +0200"
      },
      "message": "Added breaking change notice for \"THRIFT-5138 Swift keywords may be used as identifiers if escaped\" because it is labelled as such in JIRA\n"
    },
    {
      "commit": "4fd001c878e748a09713235725d8ad41de6ea6a1",
      "tree": "c037ad37d3bbbc25d4dab1c86517681399b693fa",
      "parents": [
        "a082592d439d6aa578507ff52198038e5e08006d"
      ],
      "author": {
        "name": "Jano Svitok",
        "email": "jsv@whitestein.com",
        "time": "Fri Mar 13 01:28:03 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 20 00:48:35 2020 +0200"
      },
      "message": "THRIFT-5138 Swift keywords may be used as identifiers if escaped\nClient: Swift\nPatch: Jano Svitok\n\nThis closes #2059\n"
    },
    {
      "commit": "a082592d439d6aa578507ff52198038e5e08006d",
      "tree": "d1e033c63aa8ea7d3d57a870a19161b90f5e3ceb",
      "parents": [
        "1edf32926d980573d23a292ae72e96db92ac43c1"
      ],
      "author": {
        "name": "Jano Svitok",
        "email": "jsv@whitestein.com",
        "time": "Fri Mar 06 08:44:10 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 20 00:39:49 2020 +0200"
      },
      "message": "THRIFT-5128 Swift TFramedTransport does not work using present code\nClient: Swift\nPatch: Jano Svitok\n\nThis closes #2047\n"
    },
    {
      "commit": "1edf32926d980573d23a292ae72e96db92ac43c1",
      "tree": "de56b74219dc76ec71c2174448f5086b845ecc1b",
      "parents": [
        "506e311c381677928ab68fd62e441deb24f2f7c3"
      ],
      "author": {
        "name": "Jano Svitok",
        "email": "jsv@whitestein.com",
        "time": "Fri Feb 28 12:44:59 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 20 00:28:58 2020 +0200"
      },
      "message": "THRIFT-5125: Swift server does not work using present code\nClient: Swift\nPatch: Jano Svitok\n\nThis closes #2038\n"
    },
    {
      "commit": "506e311c381677928ab68fd62e441deb24f2f7c3",
      "tree": "c1a11c8d7d5bdcea72be82fe6914056026bdbab2",
      "parents": [
        "1ab096c80af1a2bca73aef78675de914a1834fd9"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun May 17 22:48:51 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue May 19 00:00:29 2020 +0200"
      },
      "message": "FIX: CI error at ./test/py/TestServer.py:178:26: F507 \u0027...\u0027 % ... has 1 placeholder(s) but 6 substitution(s)\nFIX: CI error at ./test/crossrunner/compat.py:11:21: E741 ambiguous variable name \u0027l\u0027\nPatch: Jens Geyer\n\nThis closes #2147\n"
    },
    {
      "commit": "1ab096c80af1a2bca73aef78675de914a1834fd9",
      "tree": "e560d0e5f2fd2f76bee7c94e9e3d16789c34ab31",
      "parents": [
        "dce229911cd61a441961df2219623fb166b5d139"
      ],
      "author": {
        "name": "penenin",
        "email": "penenin@users.noreply.github.com",
        "time": "Mon May 18 12:27:31 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 18 20:27:31 2020 +0100"
      },
      "message": "THRIFT-5185: Support for using WebSockets as a server transport\n\nClient: cpp"
    },
    {
      "commit": "dce229911cd61a441961df2219623fb166b5d139",
      "tree": "c96204f51d0147f4abccd14fe1691280d35698ce",
      "parents": [
        "261de348fe0e83ca2f4c7398f2f03ff28d3eb81e"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat May 16 23:02:27 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun May 17 22:34:10 2020 +0200"
      },
      "message": "THRIFT-5210 further refactoring and performance optimizations\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2146\n"
    },
    {
      "commit": "261de348fe0e83ca2f4c7398f2f03ff28d3eb81e",
      "tree": "b18ac20125391f2023bb5ee5c5b5ce8d708d1ccc",
      "parents": [
        "53239655b7f48e741d9112ae8ca739c622268d7c"
      ],
      "author": {
        "name": "Philipp Hausmann",
        "email": "philipp.hausmann@tiko.energy",
        "time": "Wed Apr 22 16:20:46 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun May 17 14:44:59 2020 +0200"
      },
      "message": "THRIFT-5211 Handle incomplete reads correctly\nClient: Haskell\nPatch: Philipp Hausmann\n\nThis closes #2108\n\nThe read functions for handles promise to return *up* to the requested\nnumber of bytes. This means in case we read less bytes, we should try\nagain to read some more bytes.\n"
    },
    {
      "commit": "53239655b7f48e741d9112ae8ca739c622268d7c",
      "tree": "d5a0a25150419c967e093a76901c6d1246263f35",
      "parents": [
        "ad3e440955c56627da01eb7149a19afe67ce2954"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Fri May 08 15:15:49 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 15 22:22:48 2020 +0200"
      },
      "message": "THRIFT-3622 Fix deprecated uses of std::auto_ptr\nClient: cpp\nPatch: zeshuai007 \u003c51382517@qq.com\u003e\n\nThis closes #2135\n"
    },
    {
      "commit": "ad3e440955c56627da01eb7149a19afe67ce2954",
      "tree": "792d7b4d5c1c46f24422dd0ba65a23c69ce71418",
      "parents": [
        "be3f7321cf0b7cff5d178ac09da02fc68dac6bd5"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Tue Apr 07 22:17:19 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 15 21:59:15 2020 +0200"
      },
      "message": "TSocketTransport.cs: Fixed a problem with initializing IPAddress\nClient: netstd\nPatch: Mario Emmenlauer\n\nThis closes #2140\n"
    },
    {
      "commit": "be3f7321cf0b7cff5d178ac09da02fc68dac6bd5",
      "tree": "24e62ed62f965d23815c9cbb18cf47c5d6168248",
      "parents": [
        "26e6c84cde490a22d39c43ba3903dd94bbb8497f"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Thu May 14 00:28:44 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu May 14 08:28:44 2020 +0100"
      },
      "message": "Make TTransportException unwrappable on Go 1.13+\n\nClient: go\r\n\r\nGo 1.13 introduced a new, optional, hidden interface for error\r\nimplementations to make them unwrappable [1]. We currently already kind\r\nof support that (via TTransportException.Err), so just add a new\r\nfunction to make it Go 1.13+ compatible.\r\n\r\n[1] https://pkg.go.dev/errors@go1.13?tab\u003ddoc#pkg-overview"
    },
    {
      "commit": "26e6c84cde490a22d39c43ba3903dd94bbb8497f",
      "tree": "7e0c022937406cdedd6ab75100cba3a7d51b99a3",
      "parents": [
        "64ac65ea7e0763c32d6dca988a2c779f89bece84"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed May 06 14:37:43 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 13 23:56:08 2020 +0200"
      },
      "message": "Add testcase for compactprotocol(python)\nClient: py\nPatch: zeshuai007 \u003c51382517@qq.com\u003e\n\nThis closes #2129\n"
    },
    {
      "commit": "64ac65ea7e0763c32d6dca988a2c779f89bece84",
      "tree": "15dc223135100c6ec9dc2f64e298cba3fde74ead",
      "parents": [
        "55680af8fa075868abd7830f9e52008585de4adc"
      ],
      "author": {
        "name": "Tim Heilig",
        "email": "theilig@box.com",
        "time": "Thu May 07 23:19:16 2020 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed May 13 23:49:24 2020 +0200"
      },
      "message": "THRIFT-5199: Fix infinite loop writing to closed TSocket in PHP\nClient: php\nPatch: Tim Heilig\n\nThis closes #2134\n"
    },
    {
      "commit": "55680af8fa075868abd7830f9e52008585de4adc",
      "tree": "0f4fac076a1a2519eeade4202792c2f9b109170f",
      "parents": [
        "47e9d8f13e5194e0f69cea3942c00b8e3ea6be9f"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Mon May 11 22:58:48 2020 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon May 11 21:58:48 2020 +0100"
      },
      "message": "Update NodeJS to oldest supported version on Ubuntu Xenial\n\n"
    },
    {
      "commit": "47e9d8f13e5194e0f69cea3942c00b8e3ea6be9f",
      "tree": "85ec1557d510407851979c527b6a5df8dbd88aad",
      "parents": [
        "9b9567b23378c821b460cfe54b70b9d189bf194d"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Mon May 11 10:26:37 2020 -0400"
      },
      "committer": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Mon May 11 10:30:17 2020 -0400"
      },
      "message": "THRIFT-5197: TSSLTransportFactory Do Not Wrap NOT_OPEN Exception Type for Client\nClient: java\nPatch: David Mollitor\n\nThis closes #2131\n\nThe class TSSLTransportFactory is wrapping TTransportExceptions, which have a particular \"type,\"\nin a type-less TTransportException and therefore the Exception type is lost.\n"
    },
    {
      "commit": "9b9567b23378c821b460cfe54b70b9d189bf194d",
      "tree": "f5403a348992e88e8d5240b4fbb88f77dc281f08",
      "parents": [
        "bbc5e06a2e36d788b095fb37a52c90fc4d54b211"
      ],
      "author": {
        "name": "max ulidtko",
        "email": "ulidtko@gmail.com",
        "time": "Mon Apr 27 16:04:27 2020 +0300"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 08 09:23:47 2020 +0200"
      },
      "message": "THRIFT-5186: Don\u0027t pass AI_ADDRCONFIG to getaddrinfo()\nClient: cpp,pas,py\nPatch: Max Ulidtko\n\nThis closes #2124\n\nIf a host doesn\u0027t have assigned IPv4 or IPv6 addresses, thrift communication\nover localhost-only is impossible due to thrift library bug. It happens\nwhen making getaddrinfo syscall with AI_ADDRCONFIG flag.\n\nFrom man getaddrinfo(3):\nIf  hints.ai_flags  includes  the  AI_ADDRCONFIG  flag,  then  IPv4  addresses\nare returned in the list pointed to by res only if the local system has at least\none IPv4 address configured, and IPv6 addresses are returned only if the local\nsystem has at least one IPv6 address configured.  The loopback address is not\nconsidered for this case as valid as a configured address.\n\nUpstream bug with AI_ADDRCONFIG ai_flags was fixed for cpp library and win32\nplatform only. See https://issues.apache.org/jira/browse/THRIFT-2539\n\nPatch based on Thrift 0.13.0, commit cecee50308fc7e6f77f55b3fd906c1c6c471fa2f.\n"
    },
    {
      "commit": "bbc5e06a2e36d788b095fb37a52c90fc4d54b211",
      "tree": "844251f7c5958b6629e48d9b3298934fcc70d628",
      "parents": [
        "abc2ec60964538558fd99f72a4d4c16820e8bfb4"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Thu May 07 17:10:32 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 08 09:18:46 2020 +0200"
      },
      "message": "Supplement TZlibTransport.py testcase\nClient: py\nPatch: zeshuai007 \u003c51382517@qq.com\u003e\n\nThis closes #2132\n"
    },
    {
      "commit": "abc2ec60964538558fd99f72a4d4c16820e8bfb4",
      "tree": "0bb24f6919a8f36168b69d46f77389ca896a9c47",
      "parents": [
        "0c173bf9e02ee218ee7427aa0521845f674a3dd3"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 08 00:55:34 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri May 08 09:14:26 2020 +0200"
      },
      "message": "THRIFT-5198 Fix certain Visual Studio hints in generated netstd code\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2133\n"
    },
    {
      "commit": "0c173bf9e02ee218ee7427aa0521845f674a3dd3",
      "tree": "a0d1b165a5ca116907acf4f224c08b7b1558ba75",
      "parents": [
        "48730688fbf00b03f0dcdf3eb44963ad894bd98e"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Thu Apr 30 23:49:29 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri May 01 07:49:29 2020 +0100"
      },
      "message": "THRIFT-5164: Small cleanup on example code\n\nClient: go\r\n\r\nGodoc requires at least one other exported type/function to render the\r\nwhole example file in the example, so export\r\nsimpleProcessorLoggingMiddleware to make the example of\r\nProcessorMiddleware more helpful.\r\n\r\nCurrently it\u0027s rendered in a not very helpful way:\r\nhttps://pkg.go.dev/github.com/apache/thrift@v0.13.1-0.20200430141240-5cffef964a08/lib/go/thrift?tab\u003ddoc#example-ProcessorMiddleware\r\n\r\nCompare to the client middleware example rendering:\r\nhttps://pkg.go.dev/github.com/apache/thrift@v0.13.1-0.20200430141240-5cffef964a08/lib/go/thrift?tab\u003ddoc#example-ClientMiddleware\r\n\r\nWhile I\u0027m here, also update CHANGES.md to mention ClientMiddleware.\r\n\r\n[skip ci]"
    },
    {
      "commit": "48730688fbf00b03f0dcdf3eb44963ad894bd98e",
      "tree": "bb0ea48441201c593e8e5b9ed4c6d241a866b259",
      "parents": [
        "5cffef964a081314df70b76f8650bd17bfdd55e6"
      ],
      "author": {
        "name": "Duru Can Celasun",
        "email": "dcelasun@apache.org",
        "time": "Thu Apr 30 17:00:24 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 17:00:24 2020 +0100"
      },
      "message": "Update PR template\n\nClarify that [skip ci] needs to be in the commit message, not the PR text."
    },
    {
      "commit": "5cffef964a081314df70b76f8650bd17bfdd55e6",
      "tree": "e9c4393372fb97723d8e467b4f8aaf7221509940",
      "parents": [
        "9c757973462d5db9ad7eaabc41d9f1a531ed32d2"
      ],
      "author": {
        "name": "Andrew Boyle",
        "email": "pacejackson@users.noreply.github.com",
        "time": "Thu Apr 30 07:12:40 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 30 15:12:40 2020 +0100"
      },
      "message": "THRIFT-5164: Add middleware framework for Go clients\n\nThis commit adds a simple middleware framework for Go clients.\r\n\r\nIt provides:\r\n\r\n * A `ClientMiddleware` function interface used to define the actual middleware\r\n * `WrapClient`, the function that you use to wrap a `TClient` in a list of middleware\r\n * A helper `WrappedTClient` struct to help with developing middleware\r\n\r\nClient: go"
    },
    {
      "commit": "9c757973462d5db9ad7eaabc41d9f1a531ed32d2",
      "tree": "357a7eb909cd42368a153cbd7412e85e456e98ea",
      "parents": [
        "809403d544a83b308f0c8f219719e44ba1ace4c0"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Apr 28 22:42:55 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Apr 28 22:42:55 2020 +0200"
      },
      "message": "Configure Gitbox: It\u0027s notifications, not github [skip ci]\n"
    },
    {
      "commit": "809403d544a83b308f0c8f219719e44ba1ace4c0",
      "tree": "0456398b6511fe26e0b5ed0a3e98aed685a92fb5",
      "parents": [
        "39381695eb456349b02e68d9167181ae41656b73"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Apr 28 22:35:16 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Apr 28 22:36:36 2020 +0200"
      },
      "message": "Configure Gitbox [skip ci]\n"
    },
    {
      "commit": "39381695eb456349b02e68d9167181ae41656b73",
      "tree": "4dd236706cf4e65468cedf3ee3bb144fa6a4abec",
      "parents": [
        "371d92f159d4e518f1de81519b3a9de629ba8970"
      ],
      "author": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Tue Apr 28 14:24:58 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 07:24:58 2020 +0100"
      },
      "message": "Add file and memory buffer tests for Python\n\nClient: py"
    },
    {
      "commit": "371d92f159d4e518f1de81519b3a9de629ba8970",
      "tree": "6b8145ed28390af78f2d6ffc6269db55f18ec6b7",
      "parents": [
        "87462913428f9463c537223f2d23bbbf56cddb43"
      ],
      "author": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Tue Apr 28 14:23:15 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 28 07:23:15 2020 +0100"
      },
      "message": "THRIFT-5179: Fix generated code for struct\u0027s named \"a\" or \"b\"\n\nClient: cpp"
    },
    {
      "commit": "87462913428f9463c537223f2d23bbbf56cddb43",
      "tree": "6851251b0e51f073901c305933086a140ce2f9bf",
      "parents": [
        "00c039adeb551b297276fcb88131f1cfe82be1cd"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Apr 27 20:36:34 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Mon Apr 27 22:56:21 2020 +0200"
      },
      "message": "THRIFT-5188 Occasional ERROR_INSUFFICIENT_BUFFER at WinHttpQueryHeaders()\nClient: Delphi\nPatch: Jens Geyer\n"
    },
    {
      "commit": "00c039adeb551b297276fcb88131f1cfe82be1cd",
      "tree": "0c47005559fb05eb2663da67e030c6e45c521ecb",
      "parents": [
        "52655cec793a5f2d276942e79de219e299436535"
      ],
      "author": {
        "name": "Andrew Boyle",
        "email": "pacejackson@users.noreply.github.com",
        "time": "Mon Apr 27 11:32:24 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 19:32:24 2020 +0100"
      },
      "message": "THRIFT-5164: Add middleware framework for Go servers\n\nThis commit adds a simple middleware framework for Go servers.\r\n\r\nIt provides:\r\n\r\n * A `ProcessorMiddleware` function interface used to define the actual middleware\r\n * `WrapProcessor`, the function that you use to wrap a `TProcessor` in a list of middleware\r\n * A helper `WrappedTProcessorFunction` struct to help with developing middleware\r\n\r\nThis is a breaking change for any custom implementations of the `TProcessor`\r\ninterface, but does not effect the code generated by compiling Thrift files. It\r\nadds two functions to the interface that are a part of the generated `TProcessor`\r\ncode, but were not defined in the interface explicitly.\r\n"
    },
    {
      "commit": "52655cec793a5f2d276942e79de219e299436535",
      "tree": "84c56a406b19acbf388918edd27b3d63a713f462",
      "parents": [
        "7c4bdf9914fcba6c89e0f69ae48b9675578f084a"
      ],
      "author": {
        "name": "penenin",
        "email": "penenin@users.noreply.github.com",
        "time": "Mon Apr 27 08:19:55 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 16:19:55 2020 +0100"
      },
      "message": "THRIFT-5159: Fix runtime ReferenceError in generated code\n\nClient: nodejs"
    },
    {
      "commit": "7c4bdf9914fcba6c89e0f69ae48b9675578f084a",
      "tree": "2309efb79421d20cbb18876736dcac54a5bba1d3",
      "parents": [
        "c3728122d2ddb2e0236b1e08bdb5e24b8baae9dd"
      ],
      "author": {
        "name": "penenin",
        "email": "penenin@users.noreply.github.com",
        "time": "Mon Apr 27 01:11:47 2020 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 27 09:11:47 2020 +0100"
      },
      "message": "THRIFT-5184: Fix header check for WebSocket connections\n\nWhen establishing a WebSocket connection, Firefox sends Connection: keep-alive, Upgrade instead of just Connection: Upgrade. Check to see if Upgrade is in the header instead of checking to see if it is the entire header value.\r\n\r\nClient: d"
    }
  ],
  "next": "c3728122d2ddb2e0236b1e08bdb5e24b8baae9dd"
}
