{"action":"created","issue":{"url":"https://api.github.com/repos/envoyproxy/envoy/issues/3668","repository_url":"https://api.github.com/repos/envoyproxy/envoy","labels_url":"https://api.github.com/repos/envoyproxy/envoy/issues/3668/labels{/name}","comments_url":"https://api.github.com/repos/envoyproxy/envoy/issues/3668/comments","events_url":"https://api.github.com/repos/envoyproxy/envoy/issues/3668/events","html_url":"https://github.com/envoyproxy/envoy/pull/3668","id":333704749,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk1ODUzMTgw","number":3668,"title":"proxy_protocol: add support for HAProxy Proxy Protocol v2 (binary)","user":{"login":"donbowman","id":5131923,"node_id":"MDQ6VXNlcjUxMzE5MjM=","avatar_url":"https://avatars0.githubusercontent.com/u/5131923?v=4","gravatar_id":"","url":"https://api.github.com/users/donbowman","html_url":"https://github.com/donbowman","followers_url":"https://api.github.com/users/donbowman/followers","following_url":"https://api.github.com/users/donbowman/following{/other_user}","gists_url":"https://api.github.com/users/donbowman/gists{/gist_id}","starred_url":"https://api.github.com/users/donbowman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donbowman/subscriptions","organizations_url":"https://api.github.com/users/donbowman/orgs","repos_url":"https://api.github.com/users/donbowman/repos","events_url":"https://api.github.com/users/donbowman/events{/privacy}","received_events_url":"https://api.github.com/users/donbowman/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"danielhochman","id":4712430,"node_id":"MDQ6VXNlcjQ3MTI0MzA=","avatar_url":"https://avatars3.githubusercontent.com/u/4712430?v=4","gravatar_id":"","url":"https://api.github.com/users/danielhochman","html_url":"https://github.com/danielhochman","followers_url":"https://api.github.com/users/danielhochman/followers","following_url":"https://api.github.com/users/danielhochman/following{/other_user}","gists_url":"https://api.github.com/users/danielhochman/gists{/gist_id}","starred_url":"https://api.github.com/users/danielhochman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielhochman/subscriptions","organizations_url":"https://api.github.com/users/danielhochman/orgs","repos_url":"https://api.github.com/users/danielhochman/repos","events_url":"https://api.github.com/users/danielhochman/events{/privacy}","received_events_url":"https://api.github.com/users/danielhochman/received_events","type":"User","site_admin":false},"assignees":[{"login":"danielhochman","id":4712430,"node_id":"MDQ6VXNlcjQ3MTI0MzA=","avatar_url":"https://avatars3.githubusercontent.com/u/4712430?v=4","gravatar_id":"","url":"https://api.github.com/users/danielhochman","html_url":"https://github.com/danielhochman","followers_url":"https://api.github.com/users/danielhochman/followers","following_url":"https://api.github.com/users/danielhochman/following{/other_user}","gists_url":"https://api.github.com/users/danielhochman/gists{/gist_id}","starred_url":"https://api.github.com/users/danielhochman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/danielhochman/subscriptions","organizations_url":"https://api.github.com/users/danielhochman/orgs","repos_url":"https://api.github.com/users/danielhochman/repos","events_url":"https://api.github.com/users/danielhochman/events{/privacy}","received_events_url":"https://api.github.com/users/danielhochman/received_events","type":"User","site_admin":false}],"milestone":null,"comments":7,"created_at":"2018-06-19T14:44:59Z","updated_at":"2018-06-22T13:52:39Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/envoyproxy/envoy/pulls/3668","html_url":"https://github.com/envoyproxy/envoy/pull/3668","diff_url":"https://github.com/envoyproxy/envoy/pull/3668.diff","patch_url":"https://github.com/envoyproxy/envoy/pull/3668.patch"},"body":"*title*: proxy_protocol: add support for HAProxy Proxy Protocol v2 (binary)\r\n\r\n*Description*:\r\nHAProxy proxy protocol has two modes: ascii (v1) and binary (v2).\r\nFormerly we supported v1, this adds support for v2 as defined in\r\nhttp://www.haproxy.org/download/1.9/doc/proxy-protocol.txt\r\n\r\n*Risk Level*: Medium \r\n\r\n*Testing*:\r\nManual test with HAproxy as an initiator. Added unit test\r\n\r\n*Docs Changes*:\r\nAdded documentation on proxy_protocol\r\n\r\n*Release Notes*:\r\nN/A\r\n"},"comment":{"url":"https://api.github.com/repos/envoyproxy/envoy/issues/comments/399449818","html_url":"https://github.com/envoyproxy/envoy/pull/3668#issuecomment-399449818","issue_url":"https://api.github.com/repos/envoyproxy/envoy/issues/3668","id":399449818,"node_id":"MDEyOklzc3VlQ29tbWVudDM5OTQ0OTgxOA==","user":{"login":"donbowman","id":5131923,"node_id":"MDQ6VXNlcjUxMzE5MjM=","avatar_url":"https://avatars0.githubusercontent.com/u/5131923?v=4","gravatar_id":"","url":"https://api.github.com/users/donbowman","html_url":"https://github.com/donbowman","followers_url":"https://api.github.com/users/donbowman/followers","following_url":"https://api.github.com/users/donbowman/following{/other_user}","gists_url":"https://api.github.com/users/donbowman/gists{/gist_id}","starred_url":"https://api.github.com/users/donbowman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/donbowman/subscriptions","organizations_url":"https://api.github.com/users/donbowman/orgs","repos_url":"https://api.github.com/users/donbowman/repos","events_url":"https://api.github.com/users/donbowman/events{/privacy}","received_events_url":"https://api.github.com/users/donbowman/received_events","type":"User","site_admin":false},"created_at":"2018-06-22T13:52:39Z","updated_at":"2018-06-22T13:52:39Z","author_association":"NONE","body":"So the problem occurs on master [e.g. w/o my changes].\r\nbazel test --runs_per_test=10000 --cache_test_results=no --test_output=streamed //test/integration:proxy_proto_integration_test     -c dbg\r\n\r\nThe trace when it occurs is something like below. I'm not too clear on how this works yet.\r\nIf I attach the debugger, and then continue, it sometimes unhangs and moves on (passing).\r\n\r\nWill continue looking, but any suggestions welcomed.\r\n\r\n```\r\n#0  0x00007f5f2a772839 in ?? ()\r\n#1  0x00000000011d521f in absl::synchronization_internal::Futex::WaitUntil (v=0x7f5f29bc0150, val=0, t=...)\r\n    at external/com_google_absl/absl/synchronization/internal/waiter.cc:95\r\n#2  0x00000000011d4d9e in absl::synchronization_internal::Waiter::Wait (this=0x7f5f29bc0150, t=...)\r\n    at external/com_google_absl/absl/synchronization/internal/waiter.cc:139\r\n#3  0x00000000011d4520 in AbslInternalPerThreadSemWait (t=...) at external/com_google_absl/absl/synchronization/internal/per_thread_sem.cc:87\r\n#4  0x00000000011d15fd in absl::synchronization_internal::PerThreadSem::Wait (t=...)\r\n    at external/com_google_absl/absl/synchronization/internal/per_thread_sem.h:105\r\n#5  0x00000000011d0f13 in absl::Mutex::DecrementSynchSem (mu=0x2a3fca8, w=0x7f5f29bc0100, t=...)\r\n    at external/com_google_absl/absl/synchronization/mutex.cc:541\r\n#6  0x00000000011cd01d in absl::CondVar::WaitCommon (this=0x2a3fcb8, mutex=0x2a3fca8, t=...)\r\n    at external/com_google_absl/absl/synchronization/mutex.cc:2498\r\n#7  0x00000000011cd200 in absl::CondVar::WaitWithDeadline (this=0x2a3fcb8, mu=0x2a3fca8, deadline=...)\r\n    at external/com_google_absl/absl/synchronization/mutex.cc:2529\r\n#8  0x00000000011cd193 in absl::CondVar::WaitWithTimeout (this=0x2a3fcb8, mu=0x2a3fca8, timeout=...)\r\n    at external/com_google_absl/absl/synchronization/mutex.cc:2525\r\n#9  0x00000000005a26a2 in Envoy::Thread::CondVar::waitFor<long, std::ratio<1l, 1000l> > (this=0x2a3fcb8, mutex=..., duration=...)\r\n    at bazel-out/k8-dbg/bin/source/common/common/_virtual_includes/thread_lib/common/common/thread.h:93\r\n#10 0x000000000059e7e2 in Envoy::FakeUpstream::waitForHttpConnection (this=0x2a3fb00, client_dispatcher=...) at test/integration/fake_upstream.cc:338\r\n#11 0x000000000050ed81 in Envoy::HttpIntegrationTest::waitForNextUpstreamRequest (this=0x2a7e800, upstream_index=0)\r\n    at test/integration/http_integration.cc:229\r\n#12 0x000000000050ec5f in Envoy::HttpIntegrationTest::sendRequestAndWaitForResponse (this=0x2a7e800, request_headers=..., request_body_size=1024, \r\n    response_headers=..., response_size=512) at test/integration/http_integration.cc:203\r\n#13 0x000000000050f48c in Envoy::HttpIntegrationTest::testRouterRequestAndResponseWithBody(unsigned long, unsigned long, bool, std::function<std::unique_ptr<Envoy::Network::ClientConnection, std::default_delete<Envoy::Network::ClientConnection> > ()>*) (this=0x2a7e800, request_size=1024, \r\n    response_size=512, big_header=false, create_connection=0x7ffe784af3e8) at test/integration/http_integration.cc:249\r\n#14 0x00000000004da749 in Envoy::ProxyProtoIntegrationTest_RouterProxyUnknownRequestAndResponseWithBodyNoBuffer_Test::TestBody (this=0x2a7e800)\r\n    at test/integration/proxy_proto_integration_test.cc:78\r\n#15 0x000000000151b07e in testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void> (object=0x2a7ebe8, \r\n    method=&virtual testing::Test::TestBody(), location=0x161fc19 \"the test body\") at external/com_google_googletest/googletest/src/gtest.cc:2401\r\n#16 0x000000000150cebe in testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void> (object=0x2a7ebe8, \r\n    method=&virtual testing::Test::TestBody(), location=0x161fc19 \"the test body\") at external/com_google_googletest/googletest/src/gtest.cc:2437\r\n#17 0x00000000014fd7e6 in testing::Test::Run (this=0x2a7ebe8) at external/com_google_googletest/googletest/src/gtest.cc:2473\r\n#18 0x00000000014fe3f3 in testing::TestInfo::Run (this=0x2a66d80) at external/com_google_googletest/googletest/src/gtest.cc:2655\r\n#19 0x00000000014feabc in testing::TestCase::Run (this=0x2a62000) at external/com_google_googletest/googletest/src/gtest.cc:2773\r\n#20 0x000000000150670c in testing::internal::UnitTestImpl::RunAllTests (this=0x2a26000) at external/com_google_googletest/googletest/src/gtest.cc:4673\r\n#21 0x000000000151ddbe in testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> (object=0x2a26000, \r\n    method=(bool (testing::internal::UnitTestImpl::*)(testing::internal::UnitTestImpl * const)) 0x15063b0 <testing::internal::UnitTestImpl::RunAllTests()>, location=0x1620349 \"auxiliary test code (environments or event listeners)\") at external/com_google_googletest/googletest/src/gtest.cc:2401\r\n#22 0x000000000150f184 in testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> (object=0x2a26000, \r\n    method=(bool (testing::internal::UnitTestImpl::*)(testing::internal::UnitTestImpl * const)) 0x15063b0 <testing::internal::UnitTestImpl::RunAllTests()>, location=0x1620349 \"auxiliary test code (environments or event listeners)\") at external/com_google_googletest/googletest/src/gtest.cc:2437\r\n#23 0x0000000001506363 in testing::UnitTest::Run (this=0x1f45188 <testing::UnitTest::GetInstance()::instance>)\r\n    at external/com_google_googletest/googletest/src/gtest.cc:4281\r\n#24 0x0000000000e0e5f1 in RUN_ALL_TESTS () at external/com_google_googletest/googletest/include/gtest/gtest.h:2237\r\n#25 0x0000000000e0e3a4 in Envoy::TestRunner::RunTests (argc=1, argv=0x7ffe784b00e8) at ./test/test_runner.h:45\r\n#26 0x0000000000e0da38 in main (argc=2, argv=0x7ffe784b00e8) at test/main.cc:35\r\n```"}}
{"actor":{"display_login":"donbowman"}}