payload: {"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/5649","repository_url":"https://api.github.com/repos/grpc/grpc-java","labels_url":"https://api.github.com/repos/grpc/grpc-java/issues/5649/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc-java/issues/5649/comments","events_url":"https://api.github.com/repos/grpc/grpc-java/issues/5649/events","html_url":"https://github.com/grpc/grpc-java/issues/5649","id":438586941,"node_id":"MDU6SXNzdWU0Mzg1ODY5NDE=","number":5649,"title":"Rely on ChannelFactory in NettyServer instead of dynamic classes","user":{"login":"perezd","id":20598,"node_id":"MDQ6VXNlcjIwNTk4","avatar_url":"https://avatars2.githubusercontent.com/u/20598?v=4","gravatar_id":"","url":"https://api.github.com/users/perezd","html_url":"https://github.com/perezd","followers_url":"https://api.github.com/users/perezd/followers","following_url":"https://api.github.com/users/perezd/following{/other_user}","gists_url":"https://api.github.com/users/perezd/gists{/gist_id}","starred_url":"https://api.github.com/users/perezd/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/perezd/subscriptions","organizations_url":"https://api.github.com/users/perezd/orgs","repos_url":"https://api.github.com/users/perezd/repos","events_url":"https://api.github.com/users/perezd/events{/privacy}","received_events_url":"https://api.github.com/users/perezd/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/grpc/grpc-java/milestones/12","html_url":"https://github.com/grpc/grpc-java/milestone/12","labels_url":"https://api.github.com/repos/grpc/grpc-java/milestones/12/labels","id":1932796,"node_id":"MDk6TWlsZXN0b25lMTkzMjc5Ng==","number":12,"title":"Next","description":"","creator":{"login":"ejona86","id":2811396,"node_id":"MDQ6VXNlcjI4MTEzOTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"open_issues":177,"closed_issues":8,"state":"open","created_at":"2016-08-09T16:41:11Z","updated_at":"2019-05-02T21:49:19Z","due_on":null,"closed_at":null},"comments":8,"created_at":"2019-04-30T03:08:46Z","updated_at":"2019-05-02T22:09:32Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"Reading up on what it takes to support Graal native image compilation for gRPC, most of the incompatibilities are in the Netty tier (not the responsibility of this repo), but here's a low hanging fruit item:\r\n\r\nThey suggest using a ChannelFactory when working with ServerBootstrap to prevent unecessary reflective instantiation, something like this:\r\nhttps://gist.github.com/cstancu/ee36a5b4911775e8eafb240c8db36942#file-netty-svm-httpserver-httphelloworldserver-java\r\n\r\nI spotted #5460 as well which talks about Netty things, but the article I'm including also shows that this sort of thing can be sideloaded/managed externally from this repo. The change I am suggesting however would impact the ServerBuilder API a bit, but I think it might be a good one long term anyhow, WDYT?\r\n\r\nMore info @ this article:\r\nhttps://medium.com/graalvm/instant-netty-startup-using-graalvm-native-image-generation-ed6f14ff7692\r\n"},"comment":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/comments/488850254","html_url":"https://github.com/grpc/grpc-java/issues/5649#issuecomment-488850254","issue_url":"https://api.github.com/repos/grpc/grpc-java/issues/5649","id":488850254,"node_id":"MDEyOklzc3VlQ29tbWVudDQ4ODg1MDI1NA==","user":{"login":"ejona86","id":2811396,"node_id":"MDQ6VXNlcjI4MTEzOTY=","avatar_url":"https://avatars2.githubusercontent.com/u/2811396?v=4","gravatar_id":"","url":"https://api.github.com/users/ejona86","html_url":"https://github.com/ejona86","followers_url":"https://api.github.com/users/ejona86/followers","following_url":"https://api.github.com/users/ejona86/following{/other_user}","gists_url":"https://api.github.com/users/ejona86/gists{/gist_id}","starred_url":"https://api.github.com/users/ejona86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ejona86/subscriptions","organizations_url":"https://api.github.com/users/ejona86/orgs","repos_url":"https://api.github.com/users/ejona86/repos","events_url":"https://api.github.com/users/ejona86/events{/privacy}","received_events_url":"https://api.github.com/users/ejona86/received_events","type":"User","site_admin":false},"created_at":"2019-05-02T22:09:32Z","updated_at":"2019-05-02T22:09:32Z","author_association":"MEMBER","body":"@perezd, we'd be happy to accept a PR for this. With f4fb7b40c it should now be pretty easy. In `NettyServerBuilder` pass a `channelFactory` to `NettyServer` instead `channelType` (which we do in `NettyChannelBuilder` already). Updating tests will probably be most annoying.\r\n\r\nNettyChannelBuilder.DEFAULT_CHANNEL_FACTORY should probably also be updated, and that's still not hard, but starts touching some epoll reflection goo."}}
other: {"actor":{"display_login":"ejona86"}}