)]}'
{
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fbaf35dffc8b1808bf60b31df5aa0eab10b848f8",
      "old_mode": 33188,
      "old_path": "CHANGES.md",
      "new_id": "ceb8f8b6f89fcbac00f2a3a5cbe527daa8e199d0",
      "new_mode": 33188,
      "new_path": "CHANGES.md"
    },
    {
      "type": "modify",
      "old_id": "4f871515991696d07de28c7bfeb7319195df2cd1",
      "old_mode": 33188,
      "old_path": "compiler/cpp/src/thrift/generate/t_go_generator.cc",
      "new_id": "b89052b5e03f3ebbd2be6d8b8b123306e1c14479",
      "new_mode": 33188,
      "new_path": "compiler/cpp/src/thrift/generate/t_go_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "fdec4ea57f2d643aa97e4f699fdf5b82b9e55480",
      "old_mode": 33188,
      "old_path": "lib/go/test/tests/client_error_test.go",
      "new_id": "a064163651ff58f1c2d02b59b71c67a66be82fbd",
      "new_mode": 33188,
      "new_path": "lib/go/test/tests/client_error_test.go"
    },
    {
      "type": "modify",
      "old_id": "34ad6605a47143c1998f781f57912e76310f1b27",
      "old_mode": 33188,
      "old_path": "lib/go/test/tests/optional_fields_test.go",
      "new_id": "7e240e6e2978854cc57487d52e7dea9502c74ebf",
      "new_mode": 33188,
      "new_path": "lib/go/test/tests/optional_fields_test.go"
    },
    {
      "type": "modify",
      "old_id": "51d7a02ff7bf113405f72dbd8ac6d3a2d02cec56",
      "old_mode": 33188,
      "old_path": "lib/go/test/tests/protocol_mock.go",
      "new_id": "793e4e1c0fd9be9a48a08aede5af959dfb15db93",
      "new_mode": 33188,
      "new_path": "lib/go/test/tests/protocol_mock.go"
    },
    {
      "type": "modify",
      "old_id": "3fa414ad82a7a6bea940eb7f786fe802ebd02677",
      "old_mode": 33188,
      "old_path": "lib/go/test/tests/required_fields_test.go",
      "new_id": "06e8560e524358c755f7b125c044b695d5d381e1",
      "new_mode": 33188,
      "new_path": "lib/go/test/tests/required_fields_test.go"
    },
    {
      "type": "modify",
      "old_id": "0023c57cf1e0d381ad892a344baa867cf06086ed",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/application_exception.go",
      "new_id": "6de37ee73f705bce423efc7a191c587b2f9ed221",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/application_exception.go"
    },
    {
      "type": "modify",
      "old_id": "93ae898cf5e78953110352a2daf431b57a74f625",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/binary_protocol.go",
      "new_id": "c87d23a1bb152858e62025ade67fe39c620b86e4",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/binary_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "b073a952d920f242d72d0c1f5c2b78f6d8c94088",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/client.go",
      "new_id": "1c5705d5522fe68c3a9cd8eafc40c971b15fcf24",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/client.go"
    },
    {
      "type": "modify",
      "old_id": "1900d50c3b169c77a618ac8d9c560b1825e7aa6c",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/compact_protocol.go",
      "new_id": "468935781de7eb28c0a34dfda3e08cfa47b4bf72",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/compact_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "c33fba879ad9413d56ddf19213421535e91e4c7c",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/debug_protocol.go",
      "new_id": "a0920031a65733177b3b813a31eb36f753d761fd",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/debug_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "2ab82145ec01cf6a7c5e2ad199393179461d2c88",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/deserializer.go",
      "new_id": "e1203a868e1b78dd68e75ab49604f1d93d4a8571",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/deserializer.go"
    },
    {
      "type": "modify",
      "old_id": "99deaf7dcffe0b8da13be721989908dd22455b9b",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/header_protocol.go",
      "new_id": "428b26148156f37ae92acd11867bbb7144974212",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/header_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "85d296d6b4c9f09abd92d3a69d97692d6b219ba4",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/header_transport.go",
      "new_id": "c622c0e4f6c499ac0bea78aeea3c7d96081096bd",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/header_transport.go"
    },
    {
      "type": "modify",
      "old_id": "e3ae41b02d862a89766be6dae398794fa8e5a57a",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/header_transport_test.go",
      "new_id": "cee1cadc37040d366f9e037b36256823457b80ff",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/header_transport_test.go"
    },
    {
      "type": "modify",
      "old_id": "800ac22c7bc18540b59debe917b24f7800bba2d1",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/json_protocol.go",
      "new_id": "9a9328dc7dcfba0565cac361f8db66a2915be4d4",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/json_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "59c4d64a26070939c6b1782826451f9fdcbbfca9",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/json_protocol_test.go",
      "new_id": "07afa9683b786459a81d7ce2f41c093ff96c644f",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/json_protocol_test.go"
    },
    {
      "type": "modify",
      "old_id": "9db59c4c91c010bd46489960c5293be780a10176",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/multiplexed_protocol.go",
      "new_id": "2f7997e7795cf5122d059cba4795e9cfd1eef5cd",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/multiplexed_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "2e6bc4b1619da48d758c7c94e9d0a122dc4e6d4f",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/protocol.go",
      "new_id": "0a69bd4162d3fc977cdc1ea8c03adbd2891ae126",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/protocol.go"
    },
    {
      "type": "modify",
      "old_id": "944055c0b4ac37f81ed9d0ddc8cce6464b783f4b",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/protocol_test.go",
      "new_id": "c1c67e8ca08654f7378228f2132765c515b48203",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/protocol_test.go"
    },
    {
      "type": "modify",
      "old_id": "d85d2049de76b6ecae784a458a9f21001adc4769",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/serializer.go",
      "new_id": "b1b8061d6291118ea37a07c2bf42173b035452bb",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/serializer.go"
    },
    {
      "type": "modify",
      "old_id": "52ebdca890b02d89968cb43a20be1bea5e363e29",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/serializer_test.go",
      "new_id": "2e37ea2b19591f3555b44b61afa22fb524adc789",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/serializer_test.go"
    },
    {
      "type": "modify",
      "old_id": "e5472bbffc3460698ecd18e8e639720360dfe53d",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/serializer_types_test.go",
      "new_id": "4d1e992ae427f348f0cb27337d48ce8170305883",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/serializer_types_test.go"
    },
    {
      "type": "modify",
      "old_id": "f5e0c05d1898d9206ef9fbd5fdf4e545cf5d5d74",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/simple_json_protocol.go",
      "new_id": "d101b993c1757933fb1b0610af0e0e282d3c97d4",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/simple_json_protocol.go"
    },
    {
      "type": "modify",
      "old_id": "0126da0a8e402dcafa70b6473847177fe4552a8a",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/simple_json_protocol_test.go",
      "new_id": "951389a60d209b39e9397d02185589cf41649ff6",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/simple_json_protocol_test.go"
    },
    {
      "type": "modify",
      "old_id": "5a9c9c9e12735a7504d54db705a5cf2e5bb2b23d",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/simple_server.go",
      "new_id": "85baa4ee1a4dd50ff2c7586a1a1313c2b29c8368",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/simple_server.go"
    },
    {
      "type": "modify",
      "old_id": "d2283ea2e5c7a783f75261fe6d23dacb7a38e0ae",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/transport_exception.go",
      "new_id": "16193ee866156ad839fcc96ff58e3cce55cd6f59",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/transport_exception.go"
    },
    {
      "type": "modify",
      "old_id": "cf26258d92c55bac9ee63609c73ef82bf8b8b6e6",
      "old_mode": 33188,
      "old_path": "lib/go/thrift/transport_exception_test.go",
      "new_id": "fb1dc2602aa35fee518716ceb2e5dd54646a1dca",
      "new_mode": 33188,
      "new_path": "lib/go/thrift/transport_exception_test.go"
    }
  ]
}
