{"action":"created","issue":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/2015","repository_url":"https://api.github.com/repos/grpc/grpc-java","labels_url":"https://api.github.com/repos/grpc/grpc-java/issues/2015/labels{/name}","comments_url":"https://api.github.com/repos/grpc/grpc-java/issues/2015/comments","events_url":"https://api.github.com/repos/grpc/grpc-java/issues/2015/events","html_url":"https://github.com/grpc/grpc-java/issues/2015","id":163492678,"number":2015,"title":"Race on NettyClientTransport.start","user":{"login":"carl-mastrangelo","id":8943572,"avatar_url":"https://avatars.githubusercontent.com/u/8943572?v=3","gravatar_id":"","url":"https://api.github.com/users/carl-mastrangelo","html_url":"https://github.com/carl-mastrangelo","followers_url":"https://api.github.com/users/carl-mastrangelo/followers","following_url":"https://api.github.com/users/carl-mastrangelo/following{/other_user}","gists_url":"https://api.github.com/users/carl-mastrangelo/gists{/gist_id}","starred_url":"https://api.github.com/users/carl-mastrangelo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/carl-mastrangelo/subscriptions","organizations_url":"https://api.github.com/users/carl-mastrangelo/orgs","repos_url":"https://api.github.com/users/carl-mastrangelo/repos","events_url":"https://api.github.com/users/carl-mastrangelo/events{/privacy}","received_events_url":"https://api.github.com/users/carl-mastrangelo/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":{"login":"buchgr","id":1388179,"avatar_url":"https://avatars.githubusercontent.com/u/1388179?v=3","gravatar_id":"","url":"https://api.github.com/users/buchgr","html_url":"https://github.com/buchgr","followers_url":"https://api.github.com/users/buchgr/followers","following_url":"https://api.github.com/users/buchgr/following{/other_user}","gists_url":"https://api.github.com/users/buchgr/gists{/gist_id}","starred_url":"https://api.github.com/users/buchgr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/buchgr/subscriptions","organizations_url":"https://api.github.com/users/buchgr/orgs","repos_url":"https://api.github.com/users/buchgr/repos","events_url":"https://api.github.com/users/buchgr/events{/privacy}","received_events_url":"https://api.github.com/users/buchgr/received_events","type":"User","site_admin":false},"assignees":[{"login":"buchgr","id":1388179,"avatar_url":"https://avatars.githubusercontent.com/u/1388179?v=3","gravatar_id":"","url":"https://api.github.com/users/buchgr","html_url":"https://github.com/buchgr","followers_url":"https://api.github.com/users/buchgr/followers","following_url":"https://api.github.com/users/buchgr/following{/other_user}","gists_url":"https://api.github.com/users/buchgr/gists{/gist_id}","starred_url":"https://api.github.com/users/buchgr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/buchgr/subscriptions","organizations_url":"https://api.github.com/users/buchgr/orgs","repos_url":"https://api.github.com/users/buchgr/repos","events_url":"https://api.github.com/users/buchgr/events{/privacy}","received_events_url":"https://api.github.com/users/buchgr/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/grpc/grpc-java/milestones/6","html_url":"https://github.com/grpc/grpc-java/milestones/1.0","labels_url":"https://api.github.com/repos/grpc/grpc-java/milestones/6/labels","id":1396697,"number":6,"title":"1.0","description":"GA release for gRPC Java","creator":{"login":"hsaliak","id":150108,"avatar_url":"https://avatars.githubusercontent.com/u/150108?v=3","gravatar_id":"","url":"https://api.github.com/users/hsaliak","html_url":"https://github.com/hsaliak","followers_url":"https://api.github.com/users/hsaliak/followers","following_url":"https://api.github.com/users/hsaliak/following{/other_user}","gists_url":"https://api.github.com/users/hsaliak/gists{/gist_id}","starred_url":"https://api.github.com/users/hsaliak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hsaliak/subscriptions","organizations_url":"https://api.github.com/users/hsaliak/orgs","repos_url":"https://api.github.com/users/hsaliak/repos","events_url":"https://api.github.com/users/hsaliak/events{/privacy}","received_events_url":"https://api.github.com/users/hsaliak/received_events","type":"User","site_admin":false},"open_issues":4,"closed_issues":11,"state":"open","created_at":"2015-11-05T23:43:39Z","updated_at":"2016-07-18T17:22:15Z","due_on":null,"closed_at":null},"comments":7,"created_at":"2016-07-02T00:17:29Z","updated_at":"2016-07-18T17:22:15Z","closed_at":"2016-07-18T17:22:15Z","body":"Bootstrap.connect seems to add a listener to a ChannelFuture that is concurrently modified by the NioEventLoop and the client provided executor in ConcurrencyTest\r\n\r\n\r\nConflicting accesses:\r\n```\r\nWARNING: ThreadSanitizer: data race (pid=734706)\r\n  Write of size 8 at 0x7f4e49d10538 by thread T86 (mutexes: write M70410, write M82043):\r\n    #0 io.netty.util.concurrent.DefaultPromise.addListener0(Lio/netty/util/concurrent/GenericFutureListener;)V (DefaultPromise.java:526)  \r\n    #1 io.netty.util.concurrent.DefaultPromise.addListener(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/util/concurrent/Promise; (DefaultPromise.java:163)  \r\n    #2 io.netty.channel.DefaultChannelPromise.addListener(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelPromise; (DefaultChannelPromise.java:93)  \r\n    #3 io.netty.channel.DefaultChannelPromise.addListener(Lio/netty/util/concurrent/GenericFutureListener;)Lio/netty/channel/ChannelFuture; (DefaultChannelPromise.java:28)  \r\n    #4 io.netty.bootstrap.Bootstrap.doResolveAndConnect(Ljava/net/SocketAddress;Ljava/net/SocketAddress;)Lio/netty/channel/ChannelFuture; (Bootstrap.java:173)  \r\n    #5 io.netty.bootstrap.Bootstrap.connect(Ljava/net/SocketAddress;)Lio/netty/channel/ChannelFuture; (Bootstrap.java:144)  \r\n    #6 io.grpc.netty.NettyClientTransport.start(Lio/grpc/internal/ManagedClientTransport$Listener;)V (NettyClientTransport.java:156)  \r\n    #7 io.grpc.internal.ForwardingConnectionClientTransport.start(Lio/grpc/internal/ManagedClientTransport$Listener;)V (ForwardingConnectionClientTransport.java:45)  \r\n    #8 io.grpc.internal.TransportSet.startNewTransport(Lio/grpc/internal/DelayedClientTransport;)V (TransportSet.java:206)  \r\n    #9 io.grpc.internal.TransportSet.obtainActiveTransport()Lio/grpc/internal/ClientTransport; (TransportSet.java:179)  \r\n    #10 io.grpc.internal.ManagedChannelImpl$3.getTransport(Lio/grpc/EquivalentAddressGroup;)Lio/grpc/internal/ClientTransport; (ManagedChannelImpl.java:476)  \r\n    #11 io.grpc.internal.ManagedChannelImpl$3.getTransport(Lio/grpc/EquivalentAddressGroup;)Ljava/lang/Object; (ManagedChannelImpl.java:432)  \r\n    #12 io.grpc.DummyLoadBalancerFactory$DummyLoadBalancer.pickTransport(Lio/grpc/Attributes;)Ljava/lang/Object; (DummyLoadBalancerFactory.java:105)  \r\n    #13 io.grpc.internal.ManagedChannelImpl$1.get(Lio/grpc/CallOptions;)Lio/grpc/internal/ClientTransport; (ManagedChannelImpl.java:149)  \r\n    #14 io.grpc.internal.ClientCallImpl.start(Lio/grpc/ClientCall$Listener;Lio/grpc/Metadata;)V (ClientCallImpl.java:201)  \r\n    #15 io.grpc.stub.ClientCalls.startCall(Lio/grpc/ClientCall;Lio/grpc/ClientCall$Listener;Z)V (ClientCalls.java:248)  \r\n    #16 io.grpc.stub.ClientCalls.asyncUnaryRequestCall(Lio/grpc/ClientCall;Ljava/lang/Object;Lio/grpc/ClientCall$Listener;Z)V (ClientCalls.java:227)  \r\n    #17 io.grpc.stub.ClientCalls.asyncUnaryRequestCall(Lio/grpc/ClientCall;Ljava/lang/Object;Lio/grpc/stub/StreamObserver;Z)V (ClientCalls.java:215)  \r\n    #18 io.grpc.stub.ClientCalls.asyncServerStreamingCall(Lio/grpc/ClientCall;Ljava/lang/Object;Lio/grpc/stub/StreamObserver;)V (ClientCalls.java:87)  \r\n    #19 io.grpc.testing.integration.TestServiceGrpc$TestServiceStub.streamingOutputCall(Lio/grpc/testing/integration/Messages$StreamingOutputCallRequest;Lio/grpc/stub/StreamObserver;)V (TestServiceGrpc.java:311)  \r\n    #20 io.grpc.testing.integration.ConcurrencyTest$ClientWorker.run()V (ConcurrencyTest.java:138)  \r\n    #21 java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (ThreadPoolExecutor.java:1142)  \r\n    #22 java.util.concurrent.ThreadPoolExecutor$Worker.run()V (ThreadPoolExecutor.java:617)  \r\n    #23 java.lang.Thread.run()V (Thread.java:745)  \r\n    #24 (Generated Stub)  \r\n\r\n  Previous read of size 8 at 0x7f4e49d10538 by thread T142:\r\n    #0 io.netty.util.concurrent.DefaultPromise.notifyListeners()V (DefaultPromise.java:417)  \r\n    #1 io.netty.util.concurrent.DefaultPromise.trySuccess(Ljava/lang/Object;)Z (DefaultPromise.java:108)  \r\n    #2 io.netty.channel.DefaultChannelPromise.trySuccess()Z (DefaultChannelPromise.java:82)  \r\n    #3 io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(Lio/netty/channel/ChannelPromise;)V (AbstractChannel.java:884)  \r\n    #4 io.netty.channel.AbstractChannel$AbstractUnsafe.register0(Lio/netty/channel/ChannelPromise;)V (AbstractChannel.java:497)  \r\n    #5 io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(Lio/netty/channel/AbstractChannel$AbstractUnsafe;Lio/netty/channel/ChannelPromise;)V (AbstractChannel.java:412)  \r\n    #6 io.netty.channel.AbstractChannel$AbstractUnsafe$1.run()V (AbstractChannel.java:471)  \r\n    #7 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(J)Z (SingleThreadEventExecutor.java:339)  \r\n    #8 io.netty.channel.nio.NioEventLoop.run()V (NioEventLoop.java:393)  \r\n    #9 io.netty.util.concurrent.SingleThreadEventExecutor$5.run()V (SingleThreadEventExecutor.java:742)  \r\n    #10 io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run()V (DefaultThreadFactory.java:145)  \r\n    #11 java.lang.Thread.run()V (Thread.java:745)  \r\n    #12 (Generated Stub)  \r\n```"},"comment":{"url":"https://api.github.com/repos/grpc/grpc-java/issues/comments/233396727","html_url":"https://github.com/grpc/grpc-java/issues/2015#issuecomment-233396727","issue_url":"https://api.github.com/repos/grpc/grpc-java/issues/2015","id":233396727,"user":{"login":"buchgr","id":1388179,"avatar_url":"https://avatars.githubusercontent.com/u/1388179?v=3","gravatar_id":"","url":"https://api.github.com/users/buchgr","html_url":"https://github.com/buchgr","followers_url":"https://api.github.com/users/buchgr/followers","following_url":"https://api.github.com/users/buchgr/following{/other_user}","gists_url":"https://api.github.com/users/buchgr/gists{/gist_id}","starred_url":"https://api.github.com/users/buchgr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/buchgr/subscriptions","organizations_url":"https://api.github.com/users/buchgr/orgs","repos_url":"https://api.github.com/users/buchgr/repos","events_url":"https://api.github.com/users/buchgr/events{/privacy}","received_events_url":"https://api.github.com/users/buchgr/received_events","type":"User","site_admin":false},"created_at":"2016-07-18T17:22:15Z","updated_at":"2016-07-18T17:22:15Z","body":"fixed by 0ad5948  "}}
{"actor":{"display_login":"buchgr"}}