{"push_id":2434871951,"size":8,"distinct_size":6,"ref":"refs/heads/eliza/wrapping-counters","head":"8b1bf1f25efa4cf33bad67de5d89773fb6857dfe","before":"ac909e31c0c7c3fc44a9605f0f117c4096804952","commits":[{"sha":"7247ffeee37f5b444855a5973c2975cf55079251","author":{"name":"Brian Smith","email":"1d28577c3a34c1ac08d512237ad32156e7267b61@briansmith.org"},"message":"Proxy: Clarify destination test support code queue handling (#617)\n\nUse `VecDeqeue` to make the queue structure clear. Follow good practice\r\nby minimizing the amount of time the lock is held. Clarify how\r\ndefaulting logic works.\r\n\r\nSigned-off-by: Brian Smith <brian@briansmith.org>","distinct":false,"url":"https://api.github.com/repos/runconduit/conduit/commits/7247ffeee37f5b444855a5973c2975cf55079251"},{"sha":"bdcdfa8874f29eeb68b76094ae8aae919e003408","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"Actually skip flaky tests on CI and in Docker (#626)\n\nFlaky proxy tests were not actually being ignored properly. This is due to our use of a Cargo workspace; as it turns out that Cargo doesn't propagate feature flags from the workspace to the crates in the workspace (see rust-lang/cargo#4753). \r\n\r\nIf I run `cargo test --no-default-features` in the root directory, the `flaky_tests` feature is still passed, and the flaky tests still run:\r\n```\r\n➜ cargo test --no-default-features\r\n    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs\r\n     Running target/debug/deps/conduit_proxy-0e0ab2829c6b743f\r\n\r\nrunning 13 tests\r\ntest fully_qualified_authority::tests::test_normalized_authority ... ok\r\ntest ctx::transport::tests::same_addr_ip6_compat_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ip6_mapped_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ipv6 ... ok\r\ntest telemetry::tap::match_::tests::http_from_proto ... ok\r\ntest inbound::tests::recognize_default_no_ctx ... ok\r\ntest telemetry::tap::match_::tests::tcp_from_proto ... ok\r\ntest telemetry::tap::match_::tests::tcp_matches ... ok\r\ntest inbound::tests::recognize_default_no_loop ... ok\r\ntest transparency::tcp::tests::duplex_doesnt_hang_when_one_half_finishes ... ok\r\ntest inbound::tests::recognize_default_no_orig_dst ... ok\r\ntest inbound::tests::recognize_orig_dst ... ok\r\n\r\ntest result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/conduit_proxy-74584a35ef749a60\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/discovery-73cd0b65bd7a45ae\r\n\r\nrunning 16 tests\r\ntest http1::absolute_uris::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http1::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http1::absolute_uris::outbound_uses_orig_dst_if_not_local_svc ... ok\r\ntest http1::outbound_asks_controller_without_orig_dst ... ok\r\ntest http1::absolute_uris::outbound_asks_controller_api ... ok\r\ntest http1::outbound_asks_controller_api ... ok\r\ntest http1::absolute_uris::outbound_asks_controller_without_orig_dst ... ok\r\ntest http2::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http2::outbound_asks_controller_api ... ok\r\ntest http2::outbound_asks_controller_without_orig_dst ... ok\r\ntest http1::outbound_uses_orig_dst_if_not_local_svc ... ok\r\nserver h1 error: invalid HTTP version specified\r\ntest http2::outbound_uses_orig_dst_if_not_local_svc ... ok\r\nERROR 2018-03-26T20:54:09Z: conduit_proxy: turning Error caused by underlying HTTP/2 error: protocol error: frame with invalid size into 500\r\ntest outbound_updates_newer_services ... ok\r\nERROR 2018-03-26T20:54:09Z: conduit_proxy: turning operation timed out after Duration { secs: 0, nanos: 100000000 } into 500\r\ntest http1::absolute_uris::outbound_times_out ... ok\r\nERROR 2018-03-26T20:54:09Z: conduit_proxy: turning operation timed out after Duration { secs: 0, nanos: 100000000 } into 500\r\ntest http2::outbound_times_out ... ok\r\nERROR 2018-03-26T20:54:09Z: conduit_proxy: turning operation timed out after Duration { secs: 0, nanos: 100000000 } into 500\r\ntest http1::outbound_times_out ... ok\r\n\r\ntest result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/telemetry-cb5bee2d2b94332c\r\n\r\nrunning 12 tests\r\ntest metrics_endpoint_inbound_request_count ... ok\r\ntest metrics_endpoint_inbound_request_duration ... ok\r\ntest metrics_endpoint_outbound_request_count ... ok\r\ntest records_latency_statistics ... ignored\r\ntest telemetry_report_errors_are_ignored ... ok\r\ntest metrics_endpoint_outbound_request_duration ... ok\r\ntest metrics_have_no_double_commas ... ok\r\ntest http1_inbound_sends_telemetry ... ok\r\ntest inbound_sends_telemetry ... ok\r\ntest inbound_aggregates_telemetry_over_several_requests ... ok\r\ntest metrics_endpoint_inbound_response_latency ... ok\r\ntest metrics_endpoint_outbound_response_latency ... ok\r\n\r\ntest result: ok. 11 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/transparency-9d14bf92d8ba3700\r\n\r\nrunning 19 tests\r\nERROR 2018-03-26T20:54:10Z: conduit_proxy: turning Error caused by underlying HTTP/2 error: protocol error: unexpected internal error encountered into 500\r\ntest http11_upgrade_not_supported ... ok\r\ntest http11_absolute_uri_differs_from_host ... ok\r\ntest http10_without_host ... ok\r\ntest http1_head_responses ... ok\r\ntest http10_with_host ... ok\r\ntest http1_connect_not_supported ... ok\r\ntest http1_bodyless_responses ... ok\r\ntest http1_content_length_zero_is_preserved ... ok\r\ntest http1_removes_connection_headers ... ok\r\ntest http1_one_connection_per_host ... ok\r\ntest inbound_http1 ... ok\r\ntest inbound_tcp ... ok\r\ntest http1_requests_without_body_doesnt_add_transfer_encoding ... ok\r\ntest http1_response_end_of_file ... ok\r\ntest http1_requests_without_host_have_unique_connections ... ok\r\ntest outbound_tcp ... ok\r\ntest tcp_with_no_orig_dst ... ok\r\ntest tcp_connections_close_if_client_closes ... ok\r\ntest outbound_http1 ... ok\r\n\r\ntest result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/conduit_proxy_controller_grpc-7fdac3528475b1dc\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/conduit_proxy_router-024926cac5d328ee\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/convert-ae9bd3b8fee21c85\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/futures_mpsc_lossy-4afd31454ff77b40\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests conduit-proxy\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests conduit-proxy-controller-grpc\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests convert\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests conduit-proxy-router\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests futures-mpsc-lossy\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n```\r\n\r\nThis also happens if the `-p` flag is used to run tests only in the `conduit-proxy` crate:\r\n\r\n```\r\n➜ cargo test -p conduit-proxy --no-default-features\r\n   Compiling conduit-proxy v0.3.0 (file:///Users/eliza/Code/go/src/github.com/runconduit/conduit/proxy)\r\n    Finished dev [unoptimized + debuginfo] target(s) in 17.27 secs\r\n     Running target/debug/deps/conduit_proxy-0e0ab2829c6b743f\r\n\r\nrunning 13 tests\r\ntest fully_qualified_authority::tests::test_normalized_authority ... ok\r\ntest ctx::transport::tests::same_addr_ip6_mapped_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ipv6 ... ok\r\ntest ctx::transport::tests::same_addr_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ip6_compat_ipv4 ... ok\r\ntest inbound::tests::recognize_default_no_loop ... ok\r\ntest telemetry::tap::match_::tests::http_from_proto ... ok\r\ntest inbound::tests::recognize_default_no_orig_dst ... ok\r\ntest inbound::tests::recognize_default_no_ctx ... ok\r\ntest transparency::tcp::tests::duplex_doesnt_hang_when_one_half_finishes ... ok\r\ntest telemetry::tap::match_::tests::tcp_from_proto ... ok\r\ntest inbound::tests::recognize_orig_dst ... ok\r\ntest telemetry::tap::match_::tests::tcp_matches ... ok\r\n\r\ntest result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/conduit_proxy-74584a35ef749a60\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/discovery-73cd0b65bd7a45ae\r\n\r\nrunning 16 tests\r\ntest http1::absolute_uris::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http1::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http1::absolute_uris::outbound_asks_controller_without_orig_dst ... ok\r\ntest http1::absolute_uris::outbound_uses_orig_dst_if_not_local_svc ... ok\r\ntest http1::outbound_asks_controller_without_orig_dst ... ok\r\ntest http1::absolute_uris::outbound_asks_controller_api ... ok\r\ntest http1::outbound_asks_controller_api ... ok\r\ntest http1::outbound_uses_orig_dst_if_not_local_svc ... ok\r\ntest http2::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http2::outbound_asks_controller_without_orig_dst ... ok\r\ntest http2::outbound_asks_controller_api ... ok\r\ntest http2::outbound_uses_orig_dst_if_not_local_svc ... ok\r\nserver h1 error: invalid HTTP version specified\r\nERROR 2018-03-26T20:56:50Z: conduit_proxy: turning Error caused by underlying HTTP/2 error: protocol error: frame with invalid size into 500\r\ntest outbound_updates_newer_services ... ok\r\nERROR 2018-03-26T20:56:50Z: conduit_proxy: turning operation timed out after Duration { secs: 0, nanos: 100000000 } into 500\r\ntest http1::absolute_uris::outbound_times_out ... ok\r\nERROR 2018-03-26T20:56:50Z: conduit_proxy: turning operation timed out after Duration { secs: 0, nanos: 100000000 } into 500\r\ntest http1::outbound_times_out ... ok\r\nERROR 2018-03-26T20:56:50Z: conduit_proxy: turning operation timed out after Duration { secs: 0, nanos: 100000000 } into 500\r\ntest http2::outbound_times_out ... ok\r\n\r\ntest result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/telemetry-cb5bee2d2b94332c\r\n\r\nrunning 12 tests\r\ntest metrics_endpoint_inbound_request_duration ... ok\r\ntest metrics_endpoint_inbound_request_count ... ok\r\ntest metrics_endpoint_outbound_request_count ... ok\r\ntest metrics_endpoint_outbound_request_duration ... ok\r\ntest telemetry_report_errors_are_ignored ... ok\r\ntest metrics_have_no_double_commas ... ok\r\ntest inbound_sends_telemetry ... ok\r\ntest http1_inbound_sends_telemetry ... ok\r\ntest inbound_aggregates_telemetry_over_several_requests ... ok\r\ntest metrics_endpoint_inbound_response_latency ... ok\r\ntest metrics_endpoint_outbound_response_latency ... ok\r\ntest records_latency_statistics ... ok\r\n\r\ntest result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running target/debug/deps/transparency-9d14bf92d8ba3700\r\n\r\nrunning 19 tests\r\nERROR 2018-03-26T20:56:55Z: conduit_proxy: turning Error caused by underlying HTTP/2 error: protocol error: unexpected internal error encountered into 500\r\ntest http1_connect_not_supported ... ok\r\ntest http11_upgrade_not_supported ... ok\r\ntest http10_without_host ... ok\r\ntest http11_absolute_uri_differs_from_host ... ok\r\ntest http1_head_responses ... ok\r\ntest http10_with_host ... ok\r\ntest http1_bodyless_responses ... ok\r\ntest http1_content_length_zero_is_preserved ... ok\r\ntest http1_removes_connection_headers ... ok\r\ntest http1_one_connection_per_host ... ok\r\ntest http1_response_end_of_file ... ok\r\ntest http1_requests_without_host_have_unique_connections ... ok\r\ntest inbound_http1 ... ok\r\ntest inbound_tcp ... ok\r\ntest http1_requests_without_body_doesnt_add_transfer_encoding ... ok\r\ntest outbound_tcp ... ok\r\ntest tcp_with_no_orig_dst ... ok\r\ntest tcp_connections_close_if_client_closes ... ok\r\ntest outbound_http1 ... ok\r\n\r\ntest result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests conduit-proxy\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n```\r\n\r\nHowever, if I `cd` into the `proxy` directory (so that Cargo treats the `conduit-proxy` crate as the root project, rather than the workspace) and pass the `--no-default-features` flag, the flaky tests are skipped as expected:\r\n\r\n```\r\n➜ (cd proxy && exec cargo test --no-default-features)\r\n    Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs\r\n     Running /Users/eliza/Code/go/src/github.com/runconduit/conduit/target/debug/deps/conduit_proxy-ac198a96228a056e\r\n\r\nrunning 13 tests\r\ntest fully_qualified_authority::tests::test_normalized_authority ... ok\r\ntest ctx::transport::tests::same_addr_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ip6_compat_ipv4 ... ok\r\ntest ctx::transport::tests::same_addr_ipv6 ... ok\r\ntest ctx::transport::tests::same_addr_ip6_mapped_ipv4 ... ok\r\ntest telemetry::tap::match_::tests::tcp_from_proto ... ok\r\ntest telemetry::tap::match_::tests::http_from_proto ... ok\r\ntest transparency::tcp::tests::duplex_doesnt_hang_when_one_half_finishes ... ok\r\ntest telemetry::tap::match_::tests::tcp_matches ... ok\r\ntest inbound::tests::recognize_default_no_ctx ... ok\r\ntest inbound::tests::recognize_default_no_loop ... ok\r\ntest inbound::tests::recognize_default_no_orig_dst ... ok\r\ntest inbound::tests::recognize_orig_dst ... ok\r\n\r\ntest result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running /Users/eliza/Code/go/src/github.com/runconduit/conduit/target/debug/deps/conduit_proxy-41e0f900f97e194b\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n     Running /Users/eliza/Code/go/src/github.com/runconduit/conduit/target/debug/deps/discovery-7ba7fe16345a347a\r\n\r\nrunning 16 tests\r\ntest http1::absolute_uris::outbound_times_out ... ignored\r\ntest http1::outbound_times_out ... ignored\r\ntest http1::absolute_uris::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http1::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http1::absolute_uris::outbound_uses_orig_dst_if_not_local_svc ... ok\r\ntest http1::outbound_uses_orig_dst_if_not_local_svc ... ok\r\ntest http1::absolute_uris::outbound_asks_controller_without_orig_dst ... ok\r\ntest http1::outbound_asks_controller_without_orig_dst ... ok\r\ntest http1::outbound_asks_controller_api ... ok\r\ntest http1::absolute_uris::outbound_asks_controller_api ... ok\r\ntest http2::outbound_times_out ... ignored\r\nserver h1 error: invalid HTTP version specified\r\nERROR 2018-03-26T21:48:32Z: conduit_proxy: turning Error caused by underlying HTTP/2 error: protocol error: frame with invalid size into 500\r\ntest http2::outbound_reconnects_if_controller_stream_ends ... ok\r\ntest http2::outbound_uses_orig_dst_if_not_local_svc ... ok\r\ntest http2::outbound_asks_controller_api ... ok\r\ntest http2::outbound_asks_controller_without_orig_dst ... ok\r\ntest outbound_updates_newer_services ... ok\r\n\r\ntest result: ok. 13 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out\r\n\r\n     Running /Users/eliza/Code/go/src/github.com/runconduit/conduit/target/debug/deps/telemetry-b0763b64edd8fc68\r\n\r\nrunning 12 tests\r\ntest metrics_endpoint_inbound_request_count ... ignored\r\ntest metrics_endpoint_inbound_request_duration ... ignored\r\ntest metrics_endpoint_inbound_response_latency ... ignored\r\ntest metrics_endpoint_outbound_request_count ... ignored\r\ntest metrics_endpoint_outbound_request_duration ... ignored\r\ntest metrics_endpoint_outbound_response_latency ... ignored\r\ntest records_latency_statistics ... ignored\r\ntest telemetry_report_errors_are_ignored ... ok\r\ntest metrics_have_no_double_commas ... ok\r\ntest http1_inbound_sends_telemetry ... ok\r\ntest inbound_sends_telemetry ... ok\r\ntest inbound_aggregates_telemetry_over_several_requests ... ok\r\n\r\ntest result: ok. 5 passed; 0 failed; 7 ignored; 0 measured; 0 filtered out\r\n\r\n     Running /Users/eliza/Code/go/src/github.com/runconduit/conduit/target/debug/deps/transparency-300fd801daa85ccf\r\n\r\nrunning 19 tests\r\nERROR 2018-03-26T21:48:32Z: conduit_proxy: turning Error caused by underlying HTTP/2 error: protocol error: unexpected internal error encountered into 500\r\ntest http1_connect_not_supported ... ok\r\ntest http11_upgrade_not_supported ... ok\r\ntest http10_without_host ... ok\r\ntest http10_with_host ... ok\r\ntest http11_absolute_uri_differs_from_host ... ok\r\ntest http1_head_responses ... ok\r\ntest http1_bodyless_responses ... ok\r\ntest http1_removes_connection_headers ... ok\r\ntest http1_content_length_zero_is_preserved ... ok\r\ntest http1_one_connection_per_host ... ok\r\ntest http1_response_end_of_file ... ok\r\ntest http1_requests_without_body_doesnt_add_transfer_encoding ... ok\r\ntest inbound_tcp ... ok\r\ntest inbound_http1 ... ok\r\ntest http1_requests_without_host_have_unique_connections ... ok\r\ntest outbound_tcp ... ok\r\ntest tcp_connections_close_if_client_closes ... ok\r\ntest tcp_with_no_orig_dst ... ok\r\ntest outbound_http1 ... ok\r\n\r\ntest result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n   Doc-tests conduit-proxy\r\n\r\nrunning 0 tests\r\n\r\ntest result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out\r\n\r\n```\r\n\r\nI'm wrapping the `cd` and `cargo test` command in a subshell so that the CWD on Travis is still in the repo root when the command exits, but the return value from `cargo test` is  propagated.\r\n\r\nCloses #625","distinct":false,"url":"https://api.github.com/repos/runconduit/conduit/commits/bdcdfa8874f29eeb68b76094ae8aae919e003408"},{"sha":"28ec3f01e2c85194e0895868b2b432d9c598850a","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"All counters wrap on overflow\n\nCloses #602.\n\nSigned-off-by: Eliza Weisman <eliza@buoyant.io>","distinct":true,"url":"https://api.github.com/repos/runconduit/conduit/commits/28ec3f01e2c85194e0895868b2b432d9c598850a"},{"sha":"c9700805f2c5f5743c3993907904ef86a359486e","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"Limit Counter API surface","distinct":true,"url":"https://api.github.com/repos/runconduit/conduit/commits/c9700805f2c5f5743c3993907904ef86a359486e"},{"sha":"d5b8b1269858b4c083e8fe690caf89223d75e023","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"Use prometheus::Counter in histograms as well","distinct":true,"url":"https://api.github.com/repos/runconduit/conduit/commits/d5b8b1269858b4c083e8fe690caf89223d75e023"},{"sha":"7c53f38931cc999fcdd4d8ccb93e0ff4756acd2a","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"Review feedback\n\nMoved potentially lossy truncation to push metrics module.","distinct":true,"url":"https://api.github.com/repos/runconduit/conduit/commits/7c53f38931cc999fcdd4d8ccb93e0ff4756acd2a"},{"sha":"fc26e3f44f975ce1136f8c178c2a1aa9d4bcd460","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"Remove unnecessary whitespace","distinct":true,"url":"https://api.github.com/repos/runconduit/conduit/commits/fc26e3f44f975ce1136f8c178c2a1aa9d4bcd460"},{"sha":"8b1bf1f25efa4cf33bad67de5d89773fb6857dfe","author":{"name":"Eliza Weisman","email":"6c62bab17e02ee8acb8120389a6f8184a9b8174f@buoyant.io"},"message":"Review feedback","distinct":true,"url":"https://api.github.com/repos/runconduit/conduit/commits/8b1bf1f25efa4cf33bad67de5d89773fb6857dfe"}]}
{"actor":{"display_login":"hawkw"}}