Nigel Kilmer created BEAM-2321:
----------------------------------

             Summary: gRPC configuration failure using DataflowRunner and 
Bigtable
                 Key: BEAM-2321
                 URL: https://issues.apache.org/jira/browse/BEAM-2321
             Project: Beam
          Issue Type: Bug
          Components: runner-dataflow
    Affects Versions: 2.0.0
            Reporter: Nigel Kilmer
            Assignee: Daniel Halperin


I'm attempting to run a pipeline that uses the DataflowRunner and writes to 
Bigtable (v0.9.6.2). This exception is thrown (looks like it's when the 
BigtableSession is being created):

java.lang.IllegalArgumentException: Jetty ALPN/NPN has not been properly 
configured.
        at 
io.grpc.netty.GrpcSslContexts.selectApplicationProtocolConfig(GrpcSslContexts.java:174)
        at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:151)
        at io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:139)
        at io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:109)
        at 
com.google.cloud.bigtable.grpc.BigtableSession.createSslContext(BigtableSession.java:124)
        at 
com.google.cloud.bigtable.grpc.BigtableSession.access$000(BigtableSession.java:81)
        at 
com.google.cloud.bigtable.grpc.BigtableSession$2.run(BigtableSession.java:151)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)

I can run the same pipeline without issue using the DirectRunner instead, and 
it was also working for me using the 0.7.0 snapshot of Beam last week. I've 
already checked with the cloud-bigtable-client project; they said that it 
should be working since I have a dependency on netty_tcnative configured. The 
fact that the same pipeline works with the DirectRunner and not with the 
DataflowRunner makes me think it's a DataflowRunner bug.

My pipeline is pretty simple; it looks like this:

Pipeline p = Pipeline.create(gcpOptions);
p.apply(PubsubIO.readProtos(TestProto.class)
    .fromSubscription(pubsubSubscription))
  .apply(ParDo.of(new BigtableMutationTransform()))
  
.apply(BigtableIO.write().withBigtableOptions(bigtableOptionsBuilder).withTableId("table_id"));
p.run();

Let me know if you need more context.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to