)]}'
{
  "log": [
    {
      "commit": "13f9e9e86471b45189eb40ca00fdb5a2a7fa0f26",
      "tree": "01e94340d7a3a9e1a8ab9eb84bda67ede3f348a3",
      "parents": [
        "e89b3e11eed32ac7aa34d566ee1a8f45710a270b"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Feb 24 20:39:24 2021 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Feb 24 20:40:45 2021 +0100"
      },
      "message": "fix nullptr exception in publishing.gradle\n"
    },
    {
      "commit": "bb8fec7930a3a6789d0b9602412ee57a56ad551c",
      "tree": "56d9c29b339113981dbcfdbd4d1340bbdf524ea0",
      "parents": [
        "abb8fa8c44caaa0e46038f7a0840e559cd3b51be"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Thu Feb 18 09:09:20 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Mon Feb 22 10:02:58 2021 -0800"
      },
      "message": "Move ConflictingNamesTest to lib/go/test\n\nClient: go\n\nAlso add missing copyright header for files added in\nhttps://github.com/apache/thrift/pull/2307.\n"
    },
    {
      "commit": "cee3ddb0e0a18d0aa1a1f5b06e643604c5c4ee86",
      "tree": "91c2707280b3f147e1fac76e497d0d23e524bb94",
      "parents": [
        "2c0f932301231c8d9996dc21c183c586e0a80d08"
      ],
      "author": {
        "name": "Neil Williams",
        "email": "neil@reddit.com",
        "time": "Tue Feb 16 15:12:15 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Mon Feb 22 10:02:58 2021 -0800"
      },
      "message": "THRIFT-5352: Fix construction of Py exceptions with no fields\n\nClient: py\n\nWhen no fields are present, we don\u0027t get the special constructor that\nuses __setattr__ to avoid these checks. So the default constructor sets\nmessage normally and triggers the anti-mutation tripwires.\n"
    },
    {
      "commit": "d446f0248f68216ec1ef9bfcc23e634d15cc6e38",
      "tree": "f0b5a0e3303e7f80f2203478c866768c81aa2adb",
      "parents": [
        "8411e189b0af09e5baad34031555870cf692c1ad"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Feb 13 12:17:02 2021 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sat Feb 13 12:22:06 2021 +0100"
      },
      "message": "Added nuget package info to csproj, needed to publish the nuget package\n"
    },
    {
      "commit": "8411e189b0af09e5baad34031555870cf692c1ad",
      "tree": "0c7b4f7da7b28f3d7fb4f4a1c5c6dc931bc73012",
      "parents": [
        "0be1b7d7580f90cfdc3206f7fd7cf4306dcf5817"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Feb 04 22:41:50 2021 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Feb 05 00:13:59 2021 +0100"
      },
      "message": "Version 0.14.0\n"
    },
    {
      "commit": "ebfa771a26e406da947f72ae8d87602c892435cc",
      "tree": "057fa405165d395fefbabe9e7f505a25bbcdfcb9",
      "parents": [
        "518163afbd7c4f6733d12fa6f2de3db612fda947"
      ],
      "author": {
        "name": "Christopher Tubbs",
        "email": "ctubbsii@apache.org",
        "time": "Thu Feb 04 14:13:24 2021 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Feb 04 22:10:30 2021 +0100"
      },
      "message": "THRIFT-5274: Enforce Java 8 compatibility\nClient: Java\nPatch: Christopher Tubbs\n\nThis closes #2325\n\n* Enforce Java 8 compatibility using the new `--release` flag introduced\n  in JDK9, so that all generated bytecode follows Java 8 strict\n  compatibility, even when building with newer JDK versions (9 or later)\n  (this fixes NoSuchMethodError with ByteBuffer, and other potential\n  incompatibilities in bytecode generation that would make the code\n  unable to run on a Java 8 JRE)\n* Also strictly enforce the JDK version used to build the project by\n  ensuring it is at least version 1.8, and will fail fast when building\n  the Java libraries if this condition is not met.\n"
    },
    {
      "commit": "7ae1ec3f1eb3218f8b623232436bc986e3f1f5c8",
      "tree": "d055f1007d098444d839f588811922d6b7b6c92f",
      "parents": [
        "ebc2ab558dce946b2a3134028b08ed59d49cd1e3"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Fri Oct 23 19:11:10 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Feb 04 16:39:48 2021 +0100"
      },
      "message": "THRIFT-5297: Improve TThreadPoolServer Handling of Incoming Connections\nClient: Java\nPatch: David Mollitor\n\nThis closes #2266\n"
    },
    {
      "commit": "ebc2ab558dce946b2a3134028b08ed59d49cd1e3",
      "tree": "9d4cb03da8ad3135eb7301d357f1dd9e364ee85c",
      "parents": [
        "55016bff2b19f2c5d3c85ae9985c49527ffffabb"
      ],
      "author": {
        "name": "belugabehr",
        "email": "12578579+belugabehr@users.noreply.github.com",
        "time": "Thu Feb 04 09:14:11 2021 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 04 09:14:11 2021 -0500"
      },
      "message": "THRIFT-5345: Allow the ServerContext to be Unwrapped Programmatically\n\nClient: Java\r\nPatch: David Mollitor"
    },
    {
      "commit": "55016bff2b19f2c5d3c85ae9985c49527ffffabb",
      "tree": "8d77f17199db6d226b6f8174ae732e701e258827",
      "parents": [
        "4aaef75819aea3f79ec812393dbe13bb62bd6c45"
      ],
      "author": {
        "name": "James Lacey",
        "email": "jamlacey@gmail.com",
        "time": "Tue Feb 02 15:14:55 2021 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Feb 04 10:21:36 2021 +0100"
      },
      "message": "THRIFT-5343: TTlsSocketTransport does not resolve IPv4 addresses or validate hostnames correctly\nClient: netstd\nPatch: James Lacey\n\nThis closes #2322\n"
    },
    {
      "commit": "4aaef75819aea3f79ec812393dbe13bb62bd6c45",
      "tree": "01b30b368276430fa01763df92e6eb2f6cc945cb",
      "parents": [
        "93d20993f911795b4bcfbcb8143397dad77267bc"
      ],
      "author": {
        "name": "wangtieju",
        "email": "wangtieju@bytedance.com",
        "time": "Thu Feb 04 11:26:44 2021 +0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Wed Feb 03 21:05:22 2021 -0800"
      },
      "message": "THRIFT-5337 Go set fields write improvement\n\nClient: go\n\nThere is a duplicate elements check for set in writeFields* function,\nand it compares elements using reflect.DeepEqual which is expensive.\n\nIt\u0027s much faster that generates a *Equals* function for set elements and\ncall it in duplicate elements check, especially for nested struct\nelement.\n\nCloses #2307.\n"
    },
    {
      "commit": "1f73455940c440cd9b4226c92e01ae0f0378705c",
      "tree": "68315a0737e3bd6bc68c04d296a6a6b7d9155721",
      "parents": [
        "0f21e39c9ba1b20a50d035f01c14836885678d08"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Jan 28 08:48:24 2021 +0100"
      },
      "committer": {
        "name": "Mario Emmenlauer",
        "email": "memmenlauer@biodataanalysis.de",
        "time": "Wed Feb 03 13:35:36 2021 +0100"
      },
      "message": "THRIFT-5237 Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class (cpp)\nClient: cpp\nPatch: Jens Geyer\n\nFixes an issue introduced with that ticket\n"
    },
    {
      "commit": "0f21e39c9ba1b20a50d035f01c14836885678d08",
      "tree": "60023ec4365d16f326f5d6eb89fd3e37cd5857fb",
      "parents": [
        "bee96a1ff02d682c955707406f21164cd8d66552"
      ],
      "author": {
        "name": "vladimir.panivko",
        "email": "vladimir.panivko@together.com",
        "time": "Tue Jan 19 10:04:11 2021 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Jan 24 12:33:48 2021 +0100"
      },
      "message": "THRIFT-5336 Add possibility to setup connection timeout in TCurlClient\nPatch: Vladimir Panivko\nClient: php\n\nThis closes #2306\n"
    },
    {
      "commit": "c2ddaf0766499ab522cb7c0ca011d579707fcb5f",
      "tree": "c05776669d220308884aa1fde25980035de056ad",
      "parents": [
        "8dd04f4adfaea08699b1745c79f122bf9cbd6f07"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Fri Jan 22 09:37:18 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Fri Jan 22 20:50:27 2021 -0800"
      },
      "message": "THRIFT-4914: Make TClient.Call to return the response meta\n\nClient: go\n\nMake a breaking change so that TClient.Call returns the response\nmeta, currently only contains headers but could be expanded in the\nfuture, and make a compiler change to compiler generated clients to take\nadvantage of that and provide access to response metadata to users.\n"
    },
    {
      "commit": "8dd04f4adfaea08699b1745c79f122bf9cbd6f07",
      "tree": "8edc3a6eb3ff75b1eab7809429ab12aa39d59c2c",
      "parents": [
        "d9fcdd3dbafbe1a8296018d0d6c55d972f607a42"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Fri Jan 22 15:41:41 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Fri Jan 22 20:49:57 2021 -0800"
      },
      "message": "THRIFT-5322: THeaderTransport protocol id fix\n\nClient: go\n\nThis fixes a bug introduced in\nhttps://github.com/apache/thrift/pull/2296, that we mixed the preferred\nproto id and the detected proto id, which was a bad idea.\n\nThis change separates them, so when we propagate TConfiguration, we only\nchange the preferred one, which will only be used for new connections,\nand leave the detected one from existing connections untouched.\n\nAlso add a test for it.\n"
    },
    {
      "commit": "d9fcdd3dbafbe1a8296018d0d6c55d972f607a42",
      "tree": "e361ade98c00d9084a25603374b9919ebed6c0c5",
      "parents": [
        "e27e82c46ba4d46c2c3267701191cdc26614f739"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Wed Jan 20 09:17:04 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Jan 20 11:49:24 2021 -0800"
      },
      "message": "THRIFT-5338: Remove lib/go/thrift/go.mod\n\nClient: go\n\nHaving it under a subdirectory has some unexpected consequences, so\nremove it for now. Another PR will be open up later to add it back to\nthe root directory.\n"
    },
    {
      "commit": "e27e82c46ba4d46c2c3267701191cdc26614f739",
      "tree": "e2e8dbeb43f706360b2ccd77ae00aeeebdc9ae02",
      "parents": [
        "0e68e8c51b2924d211a47978c80c6753f45e8af3"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Jan 19 11:07:58 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Jan 20 09:11:02 2021 -0800"
      },
      "message": "THRIFT-5338: Raise minimal supported go version to 1.14.14\n\nClient: go\n\n- Update Dockerfiles used by travis\n- Add go.mod file\n- Modify error handling code to take advantage of errors package updates\n  in go1.13\n"
    },
    {
      "commit": "0e68e8c51b2924d211a47978c80c6753f45e8af3",
      "tree": "e8f76271ef82adb794f56446ab397ec7c8b07f2b",
      "parents": [
        "7f9abb1cc0f4b2793a48f45ddfcf0d2b287cc50c"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Jan 19 09:14:36 2021 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Tue Jan 19 10:46:29 2021 -0800"
      },
      "message": "THRIFT-5326: Make PrependError more unwrap-able\n\nClient: go\n\nAs a follow up to https://github.com/apache/thrift/pull/2298, make the\nerror returned by PrependError unwrap-able in certain cases.\n"
    },
    {
      "commit": "d831230929bb332189c9509d07102e4be9e7f681",
      "tree": "c1989efa6dc2dd66f0ba7afdf9682b9e764145c4",
      "parents": [
        "c4d1c0d80067986dbee124887bcb402ee1c6538e"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Dec 22 09:53:58 2020 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Sun Jan 17 15:19:44 2021 -0800"
      },
      "message": "THRIFT-5326: Expand TException interface in go library\n\nClient: go\n\nAdd TExceptionType enum type, and add\n\n    TExceptionType() TExceptionType\n\nfunction to TException definition.\n\nAlso make TProtocolException unwrap-able.\n"
    },
    {
      "commit": "c4d1c0d80067986dbee124887bcb402ee1c6538e",
      "tree": "60d2edf616dfd2f1ba9906bd10c9321ff349b4ae",
      "parents": [
        "c4e899a6d64aa97430ec9f7608d38db2095f6159"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Wed Dec 16 17:10:48 2020 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Sun Jan 17 12:24:13 2021 -0800"
      },
      "message": "THRIFT-5322: Implement TConfiguration in Go library\n\nClient: go\n\nDefine TConfiguration following the spec, and also move the following\nconfigurations scattered around different TTransport/TProtocol into it:\n\n- connect and socket timeouts for TSocket and TSSLSocket\n- tls config for TSSLSocket\n- max frame size for TFramedTransport\n- strict read and strict write for TBinaryProtocol\n- proto id for THeaderTransport\n\nAlso add TConfiguration support for the following and their factories:\n\n- THeaderTransport and THeaderProtocol\n- TBinaryProtocol\n- TCompactProtocol\n- TFramedTransport\n- TSocket\n- TSSLSocket\n\nAlso define TConfigurationSetter interface for easier TConfiguration\npropagation between wrapped TTransports/TProtocols , and add\nimplementations to the following for propagation\n(they don\u0027t use anything from TConfiguration themselves):\n\n- StreamTransport\n- TBufferedTransport\n- TDebugProtocol\n- TJSONProtocol\n- TSimpleJSONProtocol\n- TZlibTransport\n\nTConfigurationSetter are not implemented by the factories of the\n\"propagation only\" TTransports/TProtocols, if they have a factory. For\nthose use cases, TTransportFactoryConf and TProtocolFactoryConf are\nprovided to wrap a factory with the ability to propagate TConfiguration.\n\nAlso add simple sanity check for TBinaryProtocol and TCompactProtocol\u0027s\nReadString and ReadBinary functions. Currently it only report error if\nthe header length is larger than MaxMessageSize configured in\nTConfiguration, for simplicity.\n"
    },
    {
      "commit": "1c35d6ba954bc441e9e603599965e0121eb5132d",
      "tree": "09a9e94393edf88461c72f3c49ac4843594ea5cf",
      "parents": [
        "13662dd7be9aa3ffdbbc49bd1c3b77c4549569bd"
      ],
      "author": {
        "name": "Neil Williams",
        "email": "spladug@users.noreply.github.com",
        "time": "Mon Jan 04 11:27:01 2021 -0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jan 04 11:27:01 2021 -0800"
      },
      "message": "THRIFT-5331: Py: make THeader subprotocol configurable (#2302)\n\nClient: py\r\n\r\nThis allows clients to choose which subprotocol (TBinary/TCompact) to frame with headers. The server will already accept either protocol and reply correctly."
    },
    {
      "commit": "13662dd7be9aa3ffdbbc49bd1c3b77c4549569bd",
      "tree": "ad5565068a8d4299afd885ef727bba30e67d6103",
      "parents": [
        "3b9259d88b6ceb13bb6b8c6afe676fed707dcd4e"
      ],
      "author": {
        "name": "Jeffrey Han",
        "email": "jeffreyhan@fb.com",
        "time": "Thu Dec 17 13:12:10 2020 -0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Dec 22 02:11:09 2020 +0100"
      },
      "message": "THRIFT-5325: Fix Lua library writeStructEnd() in TCompactProtocol\nClient: lua\nPatch: Jeffrey Han\n\nThis closes #2297\n"
    },
    {
      "commit": "3b9259d88b6ceb13bb6b8c6afe676fed707dcd4e",
      "tree": "a16382bf613e70340fb7b82d45e82f5d9be95af7",
      "parents": [
        "37c2ceb737cb40377346c63a05f407da1c119ba0"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "memmenlauer@biodataanalysis.de",
        "time": "Thu Nov 19 10:24:25 2020 +0100"
      },
      "committer": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Sat Dec 19 14:22:13 2020 +0800"
      },
      "message": "TServerSocket.cpp::isOpen(): Check that a domain socket file already exists\n"
    },
    {
      "commit": "37c2ceb737cb40377346c63a05f407da1c119ba0",
      "tree": "69efd7065e81348fd22f8fbc07ec475846e8a111",
      "parents": [
        "dda80547b10d698784713eb62a04f6f42eae107b"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Thu Dec 10 14:42:37 2020 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Dec 16 09:31:18 2020 -0800"
      },
      "message": "THRIFT-5322: Guard against large string/binary lengths in Go\n\nClient: go\n\nIn TBinaryProtocol.ReadString, TBinaryProtocol.ReadBinary,\nTCompactProtocol.ReadString, and TCompactProtocol.ReadBinary, use\nsafeReadBytes to prevent from large allocation on malformed sizes.\n\n    $ go test -bench\u003dSafeReadBytes -benchmem\n    BenchmarkSafeReadBytes/normal-12                  625057              1789 ns/op            2176 B/op          5 allocs/op\n    BenchmarkSafeReadBytes/max-askedSize-12           545271              2236 ns/op           14464 B/op          7 allocs/op\n    PASS\n"
    },
    {
      "commit": "dda80547b10d698784713eb62a04f6f42eae107b",
      "tree": "26d8684bbd15944fbf41e3c89c67436611952477",
      "parents": [
        "1e243a76b186142f551a3cb8419131a468ff54ff"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Dec 15 17:56:15 2020 -0800"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Dec 16 09:27:25 2020 -0800"
      },
      "message": "THRIFT-5324: Create new req buffer for every http request\n\nClient: go\n\nThe fix in https://github.com/apache/thrift/pull/2293 doesn\u0027t work for\ngo1.10.8 due to the possibility of data races. This exposes a bigger,\nunderlying issue regarding the ownership of the request buffer in\nTHttpClient between THttpClient itself and the http request it creates.\nInstead of reset and reuse the same buffer, always give up the ownership\nof it and create a new buffer after each Flush call.\n"
    },
    {
      "commit": "e872b350ab0cfd2402340b8ca82b02dc299db69e",
      "tree": "baf318426a321e15f46cc72949f512d54193fc11",
      "parents": [
        "4461728f18542eba5d211f9fc412557aab61c491"
      ],
      "author": {
        "name": "Jeffrey Han",
        "email": "jeffreyhan@fb.com",
        "time": "Thu Sep 24 10:41:12 2020 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Dec 15 21:04:14 2020 +0100"
      },
      "message": "THRIFT-5282: Add IPv6 client support to Lua library\nClient: lua\nPatch: Jeffrey Han\n\nThis closes #2243\n"
    },
    {
      "commit": "4461728f18542eba5d211f9fc412557aab61c491",
      "tree": "7b37ce33ae85dd4a16e215e5a098bd2603bee421",
      "parents": [
        "70792f2191e5e7345bf08f766638e166d5937f32"
      ],
      "author": {
        "name": "Morozov",
        "email": "weugek@gmail.com",
        "time": "Tue Dec 15 10:35:57 2020 +0300"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 15 07:35:57 2020 +0000"
      },
      "message": "THRIFT-5324: reset http client buffer after flush\n\nTHttpClient did not reset its internal buffer when HTTP client returned\r\nan error, leaving the whole or partially read message in the buffer.\r\nNow we reset the buffer in defer.\r\n\r\nClient: go"
    },
    {
      "commit": "70792f2191e5e7345bf08f766638e166d5937f32",
      "tree": "6641f16b54e5b7dae6fb12e85ad4cfed2c36b172",
      "parents": [
        "494a845dd972fc0e68f6937e27ae74efd444b848"
      ],
      "author": {
        "name": "Dirkjan Ochtman",
        "email": "dirkjan@ochtman.nl",
        "time": "Tue Dec 08 13:46:28 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Wed Dec 09 22:12:14 2020 +0100"
      },
      "message": "Add useful links in Rust client\u0027s metadata\nClient: Rust\nPatch: Dirkjan Ochtman\n\nThis closes #2291\n"
    },
    {
      "commit": "10f2556733b8ee34f2c3695f09c1dff717fdafc8",
      "tree": "5c6f83b0f216a167961b787940a35455ce506dcb",
      "parents": [
        "fb4b5aa17b0542f6f75d9744ecfe904f57431331"
      ],
      "author": {
        "name": "rglarix",
        "email": "rglarix@users.noreply.github.com",
        "time": "Wed Oct 07 18:34:51 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Dec 08 22:19:33 2020 +0100"
      },
      "message": "THRIFT-5295 makeThread and ThreadFactory extensible\nClient: cpp\nPatch: Riccardo Ghetta\n\nThis closes #2260\n\nSigned-off-by: rglarix \u003crglarix@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "fb4b5aa17b0542f6f75d9744ecfe904f57431331",
      "tree": "c2ede8484d3c6c83d5a99be0f183e2e1f84d3f16",
      "parents": [
        "12f6c31c8df739ccff271c8b81345d9a630c8921"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Sat Oct 31 14:39:13 2020 +0800"
      },
      "committer": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Sat Dec 05 14:36:43 2020 +0800"
      },
      "message": "Fix Missed check in c_glib for frame max message size check\n"
    },
    {
      "commit": "12f6c31c8df739ccff271c8b81345d9a630c8921",
      "tree": "7801912379a3c675460763b4da4142f3215b29b2",
      "parents": [
        "66777ad21551d5d2f213fe06b53336988fe29136"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Dec 04 01:18:54 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Dec 04 21:05:43 2020 +0100"
      },
      "message": "THRIFT-5320: Usage of \"Task\" as IDL identifier generates uncompileable code\nClient: netstd\nPatch: Jens Geyer\n\nThis closes #2289\n"
    },
    {
      "commit": "66777ad21551d5d2f213fe06b53336988fe29136",
      "tree": "c479439274c28ec2d290a01ba181da49ef82db15",
      "parents": [
        "c0619235bdaaaf16941abbf8ba77a84a06708178"
      ],
      "author": {
        "name": "Sergey Yelin",
        "email": "elinsn@gmail.com",
        "time": "Fri Dec 04 13:17:00 2020 +0300"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Dec 04 21:03:01 2020 +0100"
      },
      "message": "Fix Erlang CI: Add gen-erl into test\u0027s path\nClient: erl\nPatch: Sergey Yelin\n\nThis closes #2290\n"
    },
    {
      "commit": "c0619235bdaaaf16941abbf8ba77a84a06708178",
      "tree": "cff42d044e5cc0505e90548e3d1d714c10fb4c86",
      "parents": [
        "c981cf8891cab7277ddb083282c27549da5a9dda"
      ],
      "author": {
        "name": "Mario Emmenlauer",
        "email": "mario@emmenlauer.de",
        "time": "Wed Apr 08 14:39:58 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Dec 03 23:01:53 2020 +0100"
      },
      "message": "Make ~TException() virtual\nClient: cpp\nPatch: Mario Emmenlauer\n\nThis closes #2281\n"
    },
    {
      "commit": "6e6bb84be9d8ace4be9744d5637fbb59f58db463",
      "tree": "4bc659965da5d206e8d6326ed43d22225a75ddc5",
      "parents": [
        "47e4923a9967b6ba3bbb5377809075c1940ecfc1"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Fri Oct 02 21:10:50 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Nov 19 22:35:37 2020 +0100"
      },
      "message": "THRIFT-5288: Move Support for ByteBuffer into TTransport\nClient: Java\nPatch: David Mollitor\n\nThis closes #2254\n"
    },
    {
      "commit": "6cd5366b5fe10940d28baff9c7067e3045c3c019",
      "tree": "56c56cfae429c112e07f580eba590517ff38a279",
      "parents": [
        "20205b85fa4541a4276328fc31b1cd2ff8310d42",
        "7ddbcc07ec98349da59bb023d0fed8db37097c18"
      ],
      "author": {
        "name": "Allen George",
        "email": "allengeorge@apache.org",
        "time": "Wed Nov 18 10:24:41 2020 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 18 10:24:41 2020 -0500"
      },
      "message": "Merge pull request #2273 from allengeorge/allen/clippy_clean\n\nTHRIFT-5306: Rust code and generated code no longer has clippy warnings (Rust 1.40)"
    },
    {
      "commit": "7ddbcc07ec98349da59bb023d0fed8db37097c18",
      "tree": "80a46fb7f940e8626bfd8f38346f0b85cce368a7",
      "parents": [
        "22671db01f5c349f2fa54b393581cb4d61bdd895"
      ],
      "author": {
        "name": "Allen George",
        "email": "allengeorge@apache.org",
        "time": "Sun Nov 08 09:51:19 2020 -0500"
      },
      "committer": {
        "name": "Allen George",
        "email": "allengeorge@apache.org",
        "time": "Thu Nov 12 08:47:42 2020 -0500"
      },
      "message": "THRIFT-5306: Rust code and generated code no longer has clippy warnings (Rust 1.40)\n\nClient: rs\n\nNOTE: Also properly update the min/max supported Rust versions\n"
    },
    {
      "commit": "05bb55148608b4324a8c91c21cf9a6a0dff282fa",
      "tree": "187c6dcc7e81638746d9e15850ce441adaf290b7",
      "parents": [
        "196254ba393a7e70e91fcf3c35026c82fb64f7fa"
      ],
      "author": {
        "name": "stiga-huang",
        "email": "huangquanlong@gmail.com",
        "time": "Fri Oct 30 20:07:31 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Nov 01 18:17:18 2020 +0100"
      },
      "message": "THRIFT-5303 Fix missing error handling in using PyUnicode_DecodeUTF8\nClient: py\nPatch: stiga-huang\n\nThis closes #2269\n"
    },
    {
      "commit": "997e2d42db27e606bd67be6c91af5e6ef11434aa",
      "tree": "61af23190f684ad687493d15f0730ac5657572ec",
      "parents": [
        "6762cad25cad7997d09931ba942212d2d0ef61f1"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Tue Sep 29 14:43:18 2020 +0800"
      },
      "committer": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Sat Oct 31 09:13:37 2020 +0800"
      },
      "message": "fix warning in c_glib from add max_message_size code\n"
    },
    {
      "commit": "6762cad25cad7997d09931ba942212d2d0ef61f1",
      "tree": "e8e9e87f4f6e37ced40e4d674ad6102058a6b157",
      "parents": [
        "22671db01f5c349f2fa54b393581cb4d61bdd895"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Oct 30 17:15:18 2020 +0100"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Oct 30 18:26:21 2020 +0100"
      },
      "message": "THRIFT-5304 TWinHTTPClientImpl may incorrectly report that the message size is reached\nClient: Delphi\nPatch: Jens Geyer\n"
    },
    {
      "commit": "22671db01f5c349f2fa54b393581cb4d61bdd895",
      "tree": "e634d0a95bf676263ce58bf4a2dac5c89221d407",
      "parents": [
        "2676327f6ea7851459081047c21138e192b0de65"
      ],
      "author": {
        "name": "Mark Raynsford",
        "email": "code@io7m.com",
        "time": "Wed Oct 21 20:01:40 2020 +0000"
      },
      "committer": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Sat Oct 24 10:55:27 2020 +0800"
      },
      "message": "Add an Automatic-Module-Name entry\n\nThis adds an Automatic-Module-Name entry to the Thrift jar manifest\nin order to provide Thrift with a stable module name when used in a\nJPMS modular context. The name chosen here is \"org.apache.thrift\",\nwhich matches the symbolic name used for OSGi.\n\nSee: http://branchandbound.net/blog/java/2017/12/automatic-module-name/\n"
    },
    {
      "commit": "2676327f6ea7851459081047c21138e192b0de65",
      "tree": "df548a884cb831a4020b7fa57f5fe35261d0f115",
      "parents": [
        "64c2a4b87ab356e05033045492e51f1ad73a795b"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Wed Oct 14 11:16:09 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Mon Oct 19 14:21:44 2020 -0700"
      },
      "message": "Add DuplicateTo protocol to go\u0027s TDebugProtocol\n\nThis also comes from the discussion of\nhttps://github.com/apache/thrift/pull/1992#issuecomment-705903922.\nI think TDebugProtocol is a better fit for this feature than creating a\nnew TProtocol implementation.\n\nThe DuplicateTo field is not added to TDebugProtocolFactory because I\ndon\u0027t think it makes sense from the factory setup. In vast majority\ncases users would need direct access to the underlying TMemoryBuffer to\nmake it useful, which is easier this way than an additional\nTTransportFactory plus TProtocolFactory to make TDebugProtocolFactory\nway too complicated.\n"
    },
    {
      "commit": "64c2a4b87ab356e05033045492e51f1ad73a795b",
      "tree": "926e9f08771156659c8cf3aa2c086d7592241300",
      "parents": [
        "daf620915714b76fce517b376b963440d1f34089"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Sat Oct 10 18:39:32 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Oct 14 10:14:03 2020 -0700"
      },
      "message": "THRIFT-5294: Fix panic in go TSimpleJSONProtocol\n\nClient: go\n\nIn go library\u0027s TSimpleJSONProtocol and TJSONProtocol implementations,\nwe use slices as stacks for context info, but didn\u0027t do proper boundary\ncheck when peeking/popping, result in it might panic with using -1 as\nslice index in certain cases of calling Write*End without matching\nWrite*Begin before.\n\nRefactor the code to properly implement the stack, and return a\nTProtocolException instead on those cases.\n\nAlso add unit tests for all protocols. The unit tests shown that\nTCompactProtocol.[Read|Write]StructEnd would also panic with unmatched\nBegin calls, so fix them as well.\n"
    },
    {
      "commit": "daf620915714b76fce517b376b963440d1f34089",
      "tree": "ac053a27de9d04da48c6dd2093945c6cb1931cbd",
      "parents": [
        "6d570260caa550741f4da9615cae1b14f328a553"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Wed Oct 07 16:28:38 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Oct 07 22:25:19 2020 -0700"
      },
      "message": "THRIFT-5240: Tweak the default go server connectivity check interval\n\nClient: go\n\nThis is a follow up to 4db7a0af13ac9614e3e9758d42b2791040f4dc7e.\n\nBecause of the Go runtime bug [1], the previous default value of 1ms is\nnot a great default as it could cause excessive cpu usage. Use 5ms\ninstead as a balance between being useful and not causing too much cpu\noverhead.\n\nIt\u0027s still configurable.\n\n[1]: https://github.com/golang/go/issues/27707\n"
    },
    {
      "commit": "6d570260caa550741f4da9615cae1b14f328a553",
      "tree": "6f2c1740409b80ce5d69fdefbcf8e6f64150e280",
      "parents": [
        "d89b427d19a07d556c8a6193e81bd1ed948ac5b5"
      ],
      "author": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Oct 01 21:48:07 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Tue Oct 06 22:17:42 2020 +0200"
      },
      "message": "THRIFT-5290 Adjusting cpp *.cproj options according to LEGAL-538\nClient: cpp\nPatch: Jens Geyer\n\nThis closes #2250\n"
    },
    {
      "commit": "d89b427d19a07d556c8a6193e81bd1ed948ac5b5",
      "tree": "e2a40526680a4085368ad5719830e9a75e067b00",
      "parents": [
        "5751ddf2ac8df7845c88154a9cc498c46402730d"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Fri Oct 02 11:44:59 2020 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Oct 04 22:18:13 2020 +0200"
      },
      "message": "THRIFT-5287: Log When Client Connections are Dropped\nClient: java\nPatch: David Mollitor\n\nThis closes #2253\n"
    },
    {
      "commit": "5751ddf2ac8df7845c88154a9cc498c46402730d",
      "tree": "54f3b1490a17e841a0e9fdcd3b3d364d56884fc4",
      "parents": [
        "330482b02e14955b7a760c59214de3e1b6d03dce"
      ],
      "author": {
        "name": "Jeffrey Han",
        "email": "jeffreyhan@fb.com",
        "time": "Thu Oct 01 16:17:17 2020 -0700"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Fri Oct 02 22:02:56 2020 +0200"
      },
      "message": "THRIFT-5286: Fix Lua library readBool() in TCompactProtocol\nClient: Lua\nPatch: Jeffrey Han\n\nThis closes #2252\n"
    },
    {
      "commit": "44b0b5d3c9b2bcaae43470bfe98721d0281958e5",
      "tree": "449ba6477286a35b847b33e009d99c568afa7e37",
      "parents": [
        "fa22f34e7466d0654dd207ab2e593c5337a1eac5"
      ],
      "author": {
        "name": "Stoyan Markov",
        "email": "stoyan.markov@modix.eu",
        "time": "Fri Sep 04 12:49:38 2020 +0200"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Oct 01 23:02:51 2020 +0200"
      },
      "message": "THRIFT-5103: Fix for PHP7.4 deprecated syntax\nClient: php\nPatch: Stoyan Markov\n\nThis closes #2230\n"
    },
    {
      "commit": "fa22f34e7466d0654dd207ab2e593c5337a1eac5",
      "tree": "02155522cdb8cddfa201fd903df83fa2c5b8346f",
      "parents": [
        "03f01fba18979128cc80cfc03ccdb0f4ffece47b"
      ],
      "author": {
        "name": "wangyunjian",
        "email": "wangyunjian@huawei.com",
        "time": "Sun Jul 26 23:13:56 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Oct 01 23:00:11 2020 +0200"
      },
      "message": "THRIFT-5256: Fix some compile warnings\nClient: c_glib\nPatch: wangyunjian\n\nThis closes #2207\n\nSigned-off-by: wangyunjian \u003cwangyunjian@huawei.com\u003e\n"
    },
    {
      "commit": "03f01fba18979128cc80cfc03ccdb0f4ffece47b",
      "tree": "c7108a9a7078a7a7d4fe92f3a72a26a686a0a2bc",
      "parents": [
        "b1a5cd6542f4591563d39ed2021be9fc4690528f"
      ],
      "author": {
        "name": "Christopher Chavez",
        "email": "chrischavez@gmx.us",
        "time": "Thu Oct 01 11:53:41 2020 -0500"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Oct 01 22:43:54 2020 +0200"
      },
      "message": "Fix c_glib implicit function declarations\nClient: c_glib\nPatch: Christopher Chavez\n\nThis closes #2249\n"
    },
    {
      "commit": "077b5fce825e79d84592fff893639b92b637eec7",
      "tree": "71b623e3085c1d77d53a6189a0658f86a9b5e7ed",
      "parents": [
        "062521f3b6f578d2b78f0ba189cf5d7968074cb1"
      ],
      "author": {
        "name": "Duru Can Celasun",
        "email": "dcelasun@apache.org",
        "time": "Wed Sep 30 07:25:51 2020 +0100"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Sep 30 07:25:51 2020 +0100"
      },
      "message": "go: Use sync.Pool for gzip in HTTP transport\n\nb67cad4 introduced transparent gzip support for the HTTP transport but\r\ncalling gzip.NewWriter() with every request causes a large number of\r\nmemory allocations [1] and can create GC pressure.\r\n\r\nAvoid this by using a sync.Pool for gzip writers.\r\n\r\n[1] https://old.reddit.com/r/golang/comments/9uejp4/usage_of_syncpool_for_gzipwriter_in_http_handlers/e94jh8c/"
    },
    {
      "commit": "062521f3b6f578d2b78f0ba189cf5d7968074cb1",
      "tree": "5e31fc257454214b75590dd636170e4aa100a543",
      "parents": [
        "6fd830d69024435290ff0e92936b89ebc9603678"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Tue Sep 22 11:33:52 2020 +0800"
      },
      "committer": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Mon Sep 28 14:31:07 2020 +0800"
      },
      "message": "add the test case into cmake\n"
    },
    {
      "commit": "6dcd64ee5c0886697b38278956335ae4e945341b",
      "tree": "38986b372d8a2d806d11ec6c0f96593c8e3f0e8c",
      "parents": [
        "a2c44665b416522477cffa6752c2f323768d0507"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Tue Sep 22 15:03:57 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Wed Sep 23 09:16:42 2020 -0700"
      },
      "message": "THRIFT-5279: Go serializer/deserializer cleanups\n\nClient: go\n\nCleanup the default NewTSerializer and NewTDeserializer implementations\nto save an unnecessary allocation, and provide\nNewTSerializerPoolSizeFactory and NewTDeserializerPoolSizeFactory for\neasier non-default pool usages.\n"
    },
    {
      "commit": "a2c44665b416522477cffa6752c2f323768d0507",
      "tree": "9942f7d24637c0ee3b4e51b8c8e26e6b3f56c640",
      "parents": [
        "03f4729f7c19abb206fae439e27c1dda7250fdcd"
      ],
      "author": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "yuxuan.wang@reddit.com",
        "time": "Mon Sep 21 12:33:26 2020 -0700"
      },
      "committer": {
        "name": "Yuxuan \u0027fishy\u0027 Wang",
        "email": "fishywang@gmail.com",
        "time": "Tue Sep 22 16:48:38 2020 -0700"
      },
      "message": "THRIFT-5278: Allow set protoID in go THeader transport/protocol\n\nClient: go\n\nIn Go library code, allow setting the underlying protoID to a\nnon-default (TCompactProtocol) one for THeaderTransport/THeaderProtocol.\n"
    },
    {
      "commit": "03f4729f7c19abb206fae439e27c1dda7250fdcd",
      "tree": "c68efb374b900052d7a4e4e9a43bc3d491982180",
      "parents": [
        "e29c39f921a45ecb87d0f628e2a9babbbc5adbf2",
        "4750f361c88a8e7d2fc204d139684b5547ee0425"
      ],
      "author": {
        "name": "Zezeng Wang",
        "email": "zeshuai007@apache.org",
        "time": "Tue Sep 22 09:35:39 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Sep 22 09:35:39 2020 +0800"
      },
      "message": "Merge pull request #2235 from deiv/fix-abstract-unix-socket-name\n\nFix abstract unix socket name"
    },
    {
      "commit": "4750f361c88a8e7d2fc204d139684b5547ee0425",
      "tree": "9737a89de551a1ab3c070b1d7e9ae4c5a5e407ad",
      "parents": [
        "b0d14133d5071370905a1b54b37a1a7c86d50e6d"
      ],
      "author": {
        "name": "David Suárez",
        "email": "david.sephirot@gmail.com",
        "time": "Wed Sep 09 15:49:37 2020 +0200"
      },
      "committer": {
        "name": "David Suárez",
        "email": "david.sephirot@gmail.com",
        "time": "Mon Sep 21 11:36:36 2020 +0200"
      },
      "message": "Fix abstract unix socket name\n\nFor the abstract unix socket address type, the string in the\n\u0027sun_path\u0027 field of the \u0027sockaddr_un\u0027 struct, is a not null-terminated\nstring (see unix(7)).\n\nFix the lentgh calculation of the \u0027sun_path\u0027 field to not add\nthe termination null byte.\n"
    },
    {
      "commit": "e29c39f921a45ecb87d0f628e2a9babbbc5adbf2",
      "tree": "cb1599526ffd62f369af60a4557b5d811bc048ac",
      "parents": [
        "25f8d5385f4f972fc125273c05e92592116c4606"
      ],
      "author": {
        "name": "David Mollitor",
        "email": "dmollitor@apache.org",
        "time": "Mon May 11 15:50:32 2020 -0400"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Sun Sep 20 19:11:39 2020 +0200"
      },
      "message": "THRIFT-5203: Remove Unused toString Method in TSerializer\nClient: cpp\nPatch: David Mollitor\n\nThis closes #2138\n"
    },
    {
      "commit": "d5e5fd0c54891e9225a2ce5becd8d8b683f32f06",
      "tree": "00e71d3b0fd20f6c78ab4d8ecdbdb74ffff68d7f",
      "parents": [
        "119030848c4296ddef43d66ffa0cca1354fb357b",
        "e6d97c0f66118c43f43bb71644c18d330a3ae522"
      ],
      "author": {
        "name": "Zezeng Wang",
        "email": "zeshuai007@apache.org",
        "time": "Sat Sep 19 11:59:11 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Sep 19 11:59:11 2020 +0800"
      },
      "message": "Merge pull request #2221 from zeshuai007/THRIFT-5249\n\nTHRIFT-5249 Fix Failed to run FastbinaryTest.py"
    },
    {
      "commit": "e6d97c0f66118c43f43bb71644c18d330a3ae522",
      "tree": "89ba0b08df62eba0edd4f0e5727ed8a1a4dc3e07",
      "parents": [
        "c80b8bbe703f593d1aa47941bd6b61f7726068bd"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Tue Aug 25 09:53:39 2020 +0800"
      },
      "committer": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Sat Sep 19 09:23:58 2020 +0800"
      },
      "message": "test ci fix\n"
    },
    {
      "commit": "119030848c4296ddef43d66ffa0cca1354fb357b",
      "tree": "5861c617491cf94b83b48f9f4412dd7a1aa6622f",
      "parents": [
        "c77941c60da01f466827ff619d571055ff76351f",
        "63213c17ad3fece91fdaaca8f59165ca3f41c5c1"
      ],
      "author": {
        "name": "Zezeng Wang",
        "email": "51382517@qq.com",
        "time": "Fri Sep 18 16:05:44 2020 +0800"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Sep 18 16:05:44 2020 +0800"
      },
      "message": "Merge pull request #2191 from zeshuai007/Implements_TConfig\n\nTHRIFT-5237 Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class(JAVA)"
    },
    {
      "commit": "0d6a2d36ea02839313e63421fb1ba4a9de2604ea",
      "tree": "75d5b73814ba8ec292e836180851d97df28bd16b",
      "parents": [
        "dbc4fbf4fe43ba8effd8e4d7cc5c993625cb1d11"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Tue Mar 24 18:31:37 2020 +0800"
      },
      "committer": {
        "name": "Jens Geyer",
        "email": "jensg@apache.org",
        "time": "Thu Sep 17 11:30:32 2020 +0200"
      },
      "message": "THRIFT-4272: warnings in glibc library\nClient: c_glib\nPatch: Zezeng Wang\n\nThis closes #2067\n"
    },
    {
      "commit": "63213c17ad3fece91fdaaca8f59165ca3f41c5c1",
      "tree": "bbc363ae873a334e643ff9bb64863b5d76311b92",
      "parents": [
        "dd6c8c1069d74f47e81f47dc89285edf906a464e"
      ],
      "author": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed Sep 16 16:56:51 2020 +0800"
      },
      "committer": {
        "name": "zeshuai007",
        "email": "51382517@qq.com",
        "time": "Wed Sep 16 18:37:40 2020 +0800"
      },
      "message": "Implements TConfiguration for java\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "b1628cf8bcbe6c87b117004beb3de6316417739c"
}
