{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc/issues/6597","repository_url":"https://api.github.com/repos/grpc/grpc","labels_url":"https://api.github.com/repos/grpc/grpc/issues/6597/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc/issues/6597/comments","events_url":"https://api.github.com/repos/grpc/grpc/issues/6597/events","html_url":"https://github.com/grpc/grpc/issues/6597","id":154861939,"number":6597,"title":"Investigate server shutdown semantics in Cython code and possibly below","user":{"login":"nathanielmanistaatgoogle","id":10131044,"avatar_url":"https://avatars.githubusercontent.com/u/10131044?v=3","gravatar_id":"","url":"https://api.github.com/users/nathanielmanistaatgoogle","html_url":"https://github.com/nathanielmanistaatgoogle","followers_url":"https://api.github.com/users/nathanielmanistaatgoogle/followers","following_url":"https://api.github.com/users/nathanielmanistaatgoogle/following{/other_user}","gists_url":"https://api.github.com/users/nathanielmanistaatgoogle/gists{/gist_id}","starred_url":"https://api.github.com/users/nathanielmanistaatgoogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathanielmanistaatgoogle/subscriptions","organizations_url":"https://api.github.com/users/nathanielmanistaatgoogle/orgs","repos_url":"https://api.github.com/users/nathanielmanistaatgoogle/repos","events_url":"https://api.github.com/users/nathanielmanistaatgoogle/events{/privacy}","received_events_url":"https://api.github.com/users/nathanielmanistaatgoogle/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/grpc/grpc/labels/P2","name":"P2","color":"f9d0c4"},{"url":"https://api.github.com/repos/grpc/grpc/labels/python","name":"python","color":"2619ff"},{"url":"https://api.github.com/repos/grpc/grpc/labels/question","name":"question","color":"800080"}],"state":"open","locked":false,"assignee":{"login":"ctiller","id":10120821,"avatar_url":"https://avatars.githubusercontent.com/u/10120821?v=3","gravatar_id":"","url":"https://api.github.com/users/ctiller","html_url":"https://github.com/ctiller","followers_url":"https://api.github.com/users/ctiller/followers","following_url":"https://api.github.com/users/ctiller/following{/other_user}","gists_url":"https://api.github.com/users/ctiller/gists{/gist_id}","starred_url":"https://api.github.com/users/ctiller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ctiller/subscriptions","organizations_url":"https://api.github.com/users/ctiller/orgs","repos_url":"https://api.github.com/users/ctiller/repos","events_url":"https://api.github.com/users/ctiller/events{/privacy}","received_events_url":"https://api.github.com/users/ctiller/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/grpc/grpc/milestones/42","html_url":"https://github.com/grpc/grpc/milestones/Someday...","labels_url":"https://api.github.com/repos/grpc/grpc/milestones/42/labels","id":1730527,"number":42,"title":"Someday...","description":"We might get to it but it's not scheduled to happen by any fixed date.","creator":{"login":"nathanielmanistaatgoogle","id":10131044,"avatar_url":"https://avatars.githubusercontent.com/u/10131044?v=3","gravatar_id":"","url":"https://api.github.com/users/nathanielmanistaatgoogle","html_url":"https://github.com/nathanielmanistaatgoogle","followers_url":"https://api.github.com/users/nathanielmanistaatgoogle/followers","following_url":"https://api.github.com/users/nathanielmanistaatgoogle/following{/other_user}","gists_url":"https://api.github.com/users/nathanielmanistaatgoogle/gists{/gist_id}","starred_url":"https://api.github.com/users/nathanielmanistaatgoogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathanielmanistaatgoogle/subscriptions","organizations_url":"https://api.github.com/users/nathanielmanistaatgoogle/orgs","repos_url":"https://api.github.com/users/nathanielmanistaatgoogle/repos","events_url":"https://api.github.com/users/nathanielmanistaatgoogle/events{/privacy}","received_events_url":"https://api.github.com/users/nathanielmanistaatgoogle/received_events","type":"User","site_admin":false},"open_issues":44,"closed_issues":8,"state":"open","created_at":"2016-04-25T20:54:48Z","updated_at":"2016-06-07T21:11:11Z","due_on":null,"closed_at":null},"comments":9,"created_at":"2016-05-14T16:15:39Z","updated_at":"2016-06-07T21:11:57Z","closed_at":null,"body":"`grpc_server_shutdown_and_notify` reads [\"Send a GRPC_OP_COMPLETE event when there are no more calls being serviced.\"](https://github.com/grpc/grpc/blob/1ba1bba66a18b6b7986a1cfa52c6f1ac4a14a029/include/grpc/grpc.h#L349)\r\n\r\nDoes [this test](https://github.com/nathanielmanistaatgoogle/grpc/blob/fc5795fd2d66f1d162146731d3f1d52f47f581b0/src/python/grpcio/tests/unit/_needs_investimagation_test.py) show a violation of that guarantee in its flaky failures (it flakes around 2.5% for me)? Or is there something wrong in the test, or in our Cython code?\r\n\r\nThe gRPC Python beta server [keeps track of active RPCs and which events are due](https://github.com/grpc/grpc/blob/1ba1bba66a18b6b7986a1cfa52c6f1ac4a14a029/src/python/grpcio/grpc/_links/service.py#L296); I'm trying to shed that bookkeeping and rely on semantics of \"[the server thread should just keep polling the server completion queue until it sees the shutdown tag, at which point it should break out of its loop and complete](https://github.com/nathanielmanistaatgoogle/grpc/blob/40a201e11255a4546d368197bba1db41a7fa5da3/src/python/grpcio/grpc/_server.py#L517)\". That's supposed to work, right?"},"comment":{"url":"https://api.github.com/repos/grpc/grpc/issues/comments/224415844","html_url":"https://github.com/grpc/grpc/issues/6597#issuecomment-224415844","issue_url":"https://api.github.com/repos/grpc/grpc/issues/6597","id":224415844,"user":{"login":"nathanielmanistaatgoogle","id":10131044,"avatar_url":"https://avatars.githubusercontent.com/u/10131044?v=3","gravatar_id":"","url":"https://api.github.com/users/nathanielmanistaatgoogle","html_url":"https://github.com/nathanielmanistaatgoogle","followers_url":"https://api.github.com/users/nathanielmanistaatgoogle/followers","following_url":"https://api.github.com/users/nathanielmanistaatgoogle/following{/other_user}","gists_url":"https://api.github.com/users/nathanielmanistaatgoogle/gists{/gist_id}","starred_url":"https://api.github.com/users/nathanielmanistaatgoogle/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nathanielmanistaatgoogle/subscriptions","organizations_url":"https://api.github.com/users/nathanielmanistaatgoogle/orgs","repos_url":"https://api.github.com/users/nathanielmanistaatgoogle/repos","events_url":"https://api.github.com/users/nathanielmanistaatgoogle/events{/privacy}","received_events_url":"https://api.github.com/users/nathanielmanistaatgoogle/received_events","type":"User","site_admin":false},"created_at":"2016-06-07T21:11:57Z","updated_at":"2016-06-07T21:11:57Z","body":"Reprioritized and remilestoned - we've worked around this for now; it's no longer a must-answer-and-act-before-GA."}}
{"actor":{"display_login":"nathanielmanistaatgoogle"}}