https://pinot.apache.org/ logo
#troubleshooting
Title
# troubleshooting
k

Kamal Chavda

03/29/2022, 5:50 PM
Is anyone using Tableau with Pinot? Getting this error when trying to connect to hosted instance:
x

Xiang Fu

03/29/2022, 6:55 PM
I think you might need to drop the jars to the class path? cc: @User
k

Kenny Bastani

03/29/2022, 7:12 PM
k

Kamal Chavda

03/29/2022, 7:14 PM
Hi @User, I actually followed that guide
@User, thanks for looking into this. I followed the link Kenny shared already and have the jar files in the appropriate folders.
k

Kenny Bastani

03/29/2022, 9:08 PM
Which version of Pinot are you using?
Can you provide the output of
ls ~/Library/Tableau/Drivers
k

Kamal Chavda

03/29/2022, 9:11 PM
0.10.0-SNAPSHOT
async-http-client-1.9.40.jar		pinot-java-client-0.10.0-SNAPSHOT.jar	pinot-jdbc-client-0.10.0-SNAPSHOT.jar
k

Kenny Bastani

03/29/2022, 9:12 PM
Can you provide the output of
tail -n 50 ~/Documents/My\ Tableau\ Repository/Logs/jprotocolserver.log
Can you also verify the output of
curl -i localhost:8000
or if you are not running the Pinot broker locally, please replace the URL of the broker in that command
Okay, I think that the async http client has been upgraded to a newer version in 0.10.0
Run the command
cp ~/.m2/repository/com/ning/async-http-client/2.12.3/async-http-client-2.12.3.jar .
To your Tableau driver directory
Then
rm ~/Library/Tableau/Drivers/async-http-client-1.9.21.jar
k

Kamal Chavda

03/29/2022, 9:20 PM
The curl command timed out
It's hitting the startree.cloud since we are on on it.
k

Kenny Bastani

03/29/2022, 9:21 PM
Okay, so the issue you're having right now is the
async-http-client
version, so fix that first
Then we will likely see an issue connecting to the broker
k

Kamal Chavda

03/29/2022, 9:23 PM
So I was getting an error when I tried building Pinot locally.
Copy code
Mar 28, 2022 1:56:51 PM com.diffplug.spotless.FormatExceptionPolicyLegacy error
SEVERE: Step 'removeUnusedImports' found problem in 'src/test/java/org/apache/pinot/spi/ingestion/batch/IngestionJobLauncherTest.java':
null
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.diffplug.spotless.java.GoogleJavaFormatStep$State.lambda$constructRemoveUnusedFunction$3(GoogleJavaFormatStep.java:190)
	at com.diffplug.spotless.java.GoogleJavaFormatStep$State.lambda$createRemoveUnusedImportsOnly$1(GoogleJavaFormatStep.java:167)
	at com.diffplug.spotless.FormatterFunc.apply(FormatterFunc.java:32)
	at com.diffplug.spotless.FormatterStepImpl$Standard.format(FormatterStepImpl.java:78)
	at com.diffplug.spotless.FormatterStep$Strict.format(FormatterStep.java:76)
	at com.diffplug.spotless.Formatter.compute(Formatter.java:230)
	at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:201)
	at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:188)
	at com.diffplug.spotless.maven.SpotlessCheckMojo.process(SpotlessCheckMojo.java:52)
	at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute(AbstractSpotlessMojo.java:146)
	at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute(AbstractSpotlessMojo.java:137)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:301)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:211)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:165)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:157)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:121)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:127)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:294)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.IllegalAccessError: class com.google.googlejavaformat.java.RemoveUnusedImports (in unnamed module @0x718198db) cannot access class com.sun.tools.javac.util.Context (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x718198db
	at com.google.googlejavaformat.java.RemoveUnusedImports.removeUnusedImports(RemoveUnusedImports.java:187)
	... 38 more

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Pinot 0.10.0-SNAPSHOT:
[INFO]
[INFO] Pinot .............................................. SUCCESS [01:26 min]
[INFO] Pinot Service Provider Interface ................... FAILURE [ 23.216 s]
[INFO] Pinot Segment Service Provider Interface ........... SKIPPED
[INFO] Pinot Plugins ...................................... SKIPPED
[INFO] Pinot Metrics ...................................... SKIPPED
[INFO] Pinot Yammer Metrics ............................... SKIPPED
[INFO] Pinot Common ....................................... SKIPPED
[INFO] Pinot Input Format ................................. SKIPPED
[INFO] Pinot Avro Base .................................... SKIPPED
[INFO] Pinot Avro ......................................... SKIPPED
[INFO] Pinot Csv .......................................... SKIPPED
[INFO] Pinot JSON ......................................... SKIPPED
[INFO] Pinot local segment implementations ................ SKIPPED
[INFO] Pinot Core ......................................... SKIPPED
[INFO] Pinot Server ....................................... SKIPPED
[INFO] Pinot Segment Uploader ............................. SKIPPED
[INFO] Pinot Segment Uploader Default ..................... SKIPPED
[INFO] Pinot Controller ................................... SKIPPED
[INFO] Pinot Broker ....................................... SKIPPED
[INFO] Pinot Clients ...................................... SKIPPED
[INFO] Pinot Java Client .................................. SKIPPED
[INFO] Pinot JDBC Client .................................. SKIPPED
[INFO] Pinot Batch Ingestion .............................. SKIPPED
[INFO] Pinot Batch Ingestion Common ....................... SKIPPED
[INFO] Pinot Minion ....................................... SKIPPED
[INFO] Pinot Confluent Avro ............................... SKIPPED
[INFO] Pinot ORC .......................................... SKIPPED
[INFO] Pinot Parquet ...................................... SKIPPED
[INFO] Pinot Thrift ....................................... SKIPPED
[INFO] Pinot Protocol Buffers ............................. SKIPPED
[INFO] Pluggable Pinot file system ........................ SKIPPED
[INFO] Pinot Azure Data Lake Storage ...................... SKIPPED
[INFO] Pinot Hadoop Filesystem ............................ SKIPPED
[INFO] Pinot Google Cloud Storage ......................... SKIPPED
[INFO] Pinot Amazon S3 .................................... SKIPPED
[INFO] Pinot Batch Ingestion for Spark .................... SKIPPED
[INFO] Pinot Batch Ingestion for Hadoop ................... SKIPPED
[INFO] Pinot Batch Ingestion Standalone ................... SKIPPED
[INFO] Pinot Batch Ingestion .............................. SKIPPED
[INFO] Pinot Ingestion Common ............................. SKIPPED
[INFO] Pinot Hadoop ....................................... SKIPPED
[INFO] Pinot Spark ........................................ SKIPPED
[INFO] Pinot Stream Ingestion ............................. SKIPPED
[INFO] Pinot Kafka Base ................................... SKIPPED
[INFO] Pinot Kafka 0.9 .................................... SKIPPED
[INFO] Pinot Kafka 2.x .................................... SKIPPED
[INFO] Pinot Kinesis ...................................... SKIPPED
[INFO] Pinot Pulsar ....................................... SKIPPED
[INFO] Pinot Minion Tasks ................................. SKIPPED
[INFO] Pinot Minion Built-In Tasks ........................ SKIPPED
[INFO] Pinot Dropwizard Metrics ........................... SKIPPED
[INFO] Pinot Segment Writer ............................... SKIPPED
[INFO] Pinot Segment Writer File Based .................... SKIPPED
[INFO] Pluggable Pinot Environment Provider ............... SKIPPED
[INFO] Pinot Azure Environment ............................ SKIPPED
[INFO] Pinot Tools ........................................ SKIPPED
[INFO] Pinot Test Utils ................................... SKIPPED
[INFO] Pinot Integration Tests ............................ SKIPPED
[INFO] Pinot Perf ......................................... SKIPPED
[INFO] Pinot Distribution ................................. SKIPPED
[INFO] Pinot Connectors ................................... SKIPPED
[INFO] Pinot Spark Connector .............................. SKIPPED
[INFO] Pinot Flink Connector .............................. SKIPPED
[INFO] Pinot Compatibility Verifier ....................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:54 min
[INFO] Finished at: 2022-03-28T13:56:51-04:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.diffplug.spotless:spotless-maven-plugin:2.9.0:check (default) on project pinot-spi: Execution default of goal com.diffplug.spotless:spotless-maven-plugin:2.9.0:check failed: java.lang.reflect.InvocationTargetException: class com.google.googlejavaformat.java.RemoveUnusedImports (in unnamed module @0x718198db) cannot access class com.sun.tools.javac.util.Context (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x718198db -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] <http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException>
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :pinot-spi
k

Kenny Bastani

03/29/2022, 9:23 PM
This is the latest snapshot or from release?
Looks like someone broke the build
k

Kamal Chavda

03/29/2022, 9:24 PM
it pulled master I believe
k

Kenny Bastani

03/29/2022, 9:25 PM
k

Kamal Chavda

03/29/2022, 9:32 PM
Trying now
k

Kenny Bastani

03/29/2022, 9:34 PM
That
cp
command is actually this one:
cp ~/.m2/repository/org/asynchttpclient/async-http-client/2.12.3/async-http-client-2.12.3.jar ~/Library/Tableau/Drivers*/*
I'll get the docs updated to the latest release
k

Kamal Chavda

03/29/2022, 9:35 PM
ah, that explains why noting was there in the
ning
directory
👍 1
Not sure why but I keep on getting this error when I try to build
mvn clean install -DskipTests -Pbin-dist
Copy code
com.diffplug.spotless.FormatExceptionPolicyLegacy error
SEVERE: Step 'removeUnusedImports' found problem in 'src/test/java/org/apache/pinot/spi/ingestion/batch/IngestionJobLauncherTest.java':
null
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at com.diffplug.spotless.java.GoogleJavaFormatStep$State.lambda$constructRemoveUnusedFunction$3(GoogleJavaFormatStep.java:190)
	at com.diffplug.spotless.java.GoogleJavaFormatStep$State.lambda$createRemoveUnusedImportsOnly$1(GoogleJavaFormatStep.java:167)
	at com.diffplug.spotless.FormatterFunc.apply(FormatterFunc.java:32)
	at com.diffplug.spotless.FormatterStepImpl$Standard.format(FormatterStepImpl.java:78)
	at com.diffplug.spotless.FormatterStep$Strict.format(FormatterStep.java:76)
	at com.diffplug.spotless.Formatter.compute(Formatter.java:230)
	at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:201)
	at com.diffplug.spotless.PaddedCell.calculateDirtyState(PaddedCell.java:188)
	at com.diffplug.spotless.maven.SpotlessCheckMojo.process(SpotlessCheckMojo.java:52)
	at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute(AbstractSpotlessMojo.java:146)
	at com.diffplug.spotless.maven.AbstractSpotlessMojo.execute(AbstractSpotlessMojo.java:137)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:972)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: java.lang.IllegalAccessError: class com.google.googlejavaformat.java.RemoveUnusedImports (in unnamed module @0x30d3f583) cannot access class com.sun.tools.javac.util.Context (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.util to unnamed module @0x30d3f583
	at com.google.googlejavaformat.java.RemoveUnusedImports.removeUnusedImports(RemoveUnusedImports.java:187)
	... 37 more
k

Kenny Bastani

03/29/2022, 9:45 PM
I've seen this happen really weirdly when your JDK version isn't set to baseline
k

Kamal Chavda

03/29/2022, 9:45 PM
I had to use create a jvm.config file for maven to get it to build successfully
Copy code
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
k

Kenny Bastani

03/29/2022, 9:45 PM
Oh yeah let's get that down to 11-14
Try
/usr/libexec/java_home -V
Let me know the output
k

Kamal Chavda

03/29/2022, 9:46 PM
Copy code
Matching Java Virtual Machines (2):
    17, x86_64:	"Java SE 17"	/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
    11.0.13, x86_64:	"Java SE 11.0.13"	/Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
k

Kenny Bastani

03/29/2022, 9:47 PM
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home
and rebuild
k

Kamal Chavda

03/29/2022, 9:48 PM
That did it. Moving along!
k

Kenny Bastani

03/29/2022, 9:48 PM
Sweet 🙂
k

Kamal Chavda

03/29/2022, 9:52 PM
Btw, between flink and spark streaming, which one do you suggest?
k

Kenny Bastani

03/29/2022, 9:54 PM
I'm probably not the best person to answer that. I would prefer Spark because I'm old school, but Flink has a lot more community uptake and affinity.
👍 1
k

Kamal Chavda

03/29/2022, 10:04 PM
Build success! Copied over the jar files and trying Tableau again 🤞
message has been deleted
different error
reactivestreams
Copy code
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
	at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.net.FactoryURLClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	... 27 more
2022-03-29 18:05:35.158 -0400 (,,,,4,7) grpc-default-executor-1 : INFO  com.tableau.connect.grpc.GrpcProtocolService - End local request 7 /constructProtocol.
2022-03-29 18:06:13.267 -0400 (,,,,5,9) grpc-default-executor-1 : INFO  com.tableau.connect.grpc.GrpcProtocolService - Start local request 9 /constructProtocol.
2022-03-29 18:06:13.267 -0400 (,,,,5,9) grpc-default-executor-1 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Get driver from isolatedDrivers.
2022-03-29 18:06:13.268 -0400 (,,,,5,9) grpc-default-executor-1 : INFO  com.tableausoftware.jdbc.JDBCProtocolImpl - Connecting to jdbc:<pinot://pinot.internal.poc.roadie.startree.cloud>
2022-03-29 18:06:13.268 -0400 (,,,,5,9) grpc-default-executor-1 : INFO  com.tableausoftware.jdbc.JDBCProtocolImpl - Connection properties {password=*******, user=}
2022-03-29 18:06:13.268 -0400 (,,,,5,9) grpc-default-executor-1 : INFO  org.apache.pinot.client.PinotDriver - Initiating connection to database for url: jdbc:<pinot://pinot.internal.poc.roadie.startree.cloud>
2022-03-29 18:06:13.270 -0400 (,,,,5,9) grpc-default-executor-1 : ERROR com.tableau.connect.util.GrpcServiceHelper - Failed in constructProtocol.
java.lang.NoClassDefFoundError: org/reactivestreams/Publisher
	at org.asynchttpclient.netty.channel.ChannelManager.configureBootstraps(ChannelManager.java:212) ~[?:?]
	at org.asynchttpclient.DefaultAsyncHttpClient.<init>(DefaultAsyncHttpClient.java:94) ~[?:?]
	at org.asynchttpclient.Dsl.asyncHttpClient(Dsl.java:36) ~[?:?]
	at org.apache.pinot.client.JsonAsyncHttpPinotClientTransport.<init>(JsonAsyncHttpPinotClientTransport.java:80) ~[?:?]
	at org.apache.pinot.client.JsonAsyncHttpPinotClientTransportFactory.buildTransport(JsonAsyncHttpPinotClientTransportFactory.java:37) ~[?:?]
	at org.apache.pinot.client.PinotDriver.connect(PinotDriver.java:69) ~[?:?]
	at com.tableausoftware.jdbc.JDBCDriverManager.getConnection(JDBCDriverManager.java:271) ~[jdbcserver.jar:20214.0.17]
	at com.tableausoftware.jdbc.JDBCProtocolImpl.getConnection(JDBCProtocolImpl.java:325) ~[jdbcserver.jar:20214.0.17]
	at com.tableausoftware.jdbc.JDBCProtocolImpl.<init>(JDBCProtocolImpl.java:118) ~[jdbcserver.jar:20214.0.17]
	at com.tableau.connect.service.ProtocolPool.constructProtocol(ProtocolPool.java:48) ~[jdbcserver.jar:20214.0.17]
	at com.tableau.connect.service.ProtocolService.constructProtocol(ProtocolService.java:59) ~[jdbcserver.jar:20214.0.17]
	at com.tableau.connect.grpc.GrpcProtocolService.lambda$constructProtocol$0(GrpcProtocolService.java:63) ~[jdbcserver.jar:20214.0.17]
	at com.tableau.connect.grpc.GrpcProtocolService.wrap(GrpcProtocolService.java:289) ~[jdbcserver.jar:20214.0.17]
	at com.tableau.connect.grpc.GrpcProtocolService.constructProtocol(GrpcProtocolService.java:62) ~[jdbcserver.jar:20214.0.17]
	at com.tableau.connect.generated.ProtocolServiceGrpc$MethodHandlers.invoke(ProtocolServiceGrpc.java:1492) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:180) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:331) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:814) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) ~[jdbcserver.jar:20214.0.17]
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123) ~[jdbcserver.jar:20214.0.17]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
	at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.net.FactoryURLClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	... 27 more
2022-03-29 18:06:13.270 -0400 (,,,,5,9) grpc-default-executor-1 : INFO  com.tableau.connect.grpc.GrpcProtocolService - End local request 9 /constructProtocol.
k

Kenny Bastani

03/29/2022, 10:08 PM
Looks like we added another transitive dependency
Let me see
cp ~/.m2/repository/org/reactivestreams/reactive-streams/1.0.3/reactive-streams-1.0.3.jar ~/Library/Tableau/Drivers/
k

Kamal Chavda

03/29/2022, 10:13 PM
processing request...
k

Kenny Bastani

03/29/2022, 10:13 PM
I assume this will be the timeout issue
k

Kamal Chavda

03/29/2022, 10:13 PM
yeah, it's sitting there
k

Kenny Bastani

03/29/2022, 10:14 PM
We'll need to figure out how to get you a connection to the broker from the desktop. Whether it is a VPN or some other kind of proxy we build into the platform for Tableau users.
k

Kamal Chavda

03/29/2022, 10:16 PM
Does the platform currently not support it?
k

Kenny Bastani

03/29/2022, 10:16 PM
I'm checking now
k

Kamal Chavda

03/29/2022, 10:16 PM
Thanks.
k

Kenny Bastani

03/29/2022, 10:17 PM
Adding @Mayank to thread
k

Kamal Chavda

03/29/2022, 10:18 PM
Thanks. I can create a support ticket if needed
👍 1
k

Kenny Bastani

03/29/2022, 10:20 PM
That would be a good idea
y

Young Seok (Tony) Kim

06/17/2022, 4:23 AM
Hi I’m trying to connect Pinot to Tableau and I followed the instructions in the official guide, and the error message occurred. I also found this thread which was the exact same issue, and it seems that I need to install
reactive-streams-1.0.3.jar
and
async-http-client-2.12.3.jar
(instead of old
1.9.21
version) according to this thread. (In addition to the official guide) I’ve followed through the instructions here, each time having the same error message. (Due to missing dependencies) Finally, after Tableau tries to connect, Tableau error message said “Deadline Exceeded”, probably timing out of the connection. How can I fix this?
m

Mayank

06/17/2022, 5:46 AM
cc: @Kartik Khare
k

Kartik Khare

06/17/2022, 5:50 AM
@Young Seok (Tony) Kim The classpath error in the logs still says that its due to missing reactive-streams classes?
y

Young Seok (Tony) Kim

06/17/2022, 3:13 PM
How do I check the logs? I believe I resolved the reactive-streams class issue and Tableau is doing “processing request…” and it’s timing out.
k

Kartik Khare

06/17/2022, 3:16 PM
in tableau you can check the jprotocol log file. It is in the
My Tableau Repository
directory generally
y

Young Seok (Tony) Kim

06/17/2022, 3:30 PM
Thanks a lot! In the log file, I found following logs that timed out.
Copy code
2022-06-17 08:27:35.044 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Loading drivers from classpath.
2022-06-17 08:27:35.044 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Loading isolated drivers from :/Users/tonykim/Library/Tableau/Drivers/pinot-java-client-0.10.0-SNAPSHOT.jar:/Users/tonykim/Library/Tableau/Drivers/reactive-streams-1.0.3.jar:/Users/tonykim/Library/Tableau/Drivers/trino-jdbc-385.jar:/Users/tonykim/Library/Tableau/Drivers/async-http-client-2.12.3.jar:/Users/tonykim/Library/Tableau/Drivers/pinot-jdbc-client-0.10.0-SNAPSHOT.jar
2022-06-17 08:27:35.046 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Created classloader for file:/Users/tonykim/Library/Tableau/Drivers/pinot-java-client-0.10.0-SNAPSHOT.jar:file:/Users/tonykim/Library/Tableau/Drivers/reactive-streams-1.0.3.jar:file:/Users/tonykim/Library/Tableau/Drivers/trino-jdbc-385.jar:file:/Users/tonykim/Library/Tableau/Drivers/async-http-client-2.12.3.jar:file:/Users/tonykim/Library/Tableau/Drivers/pinot-jdbc-client-0.10.0-SNAPSHOT.jar
2022-06-17 08:27:35.117 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Loaded io.trino.jdbc.TrinoDriver from file:/Users/tonykim/Library/Tableau/Drivers/trino-jdbc-385.jar
2022-06-17 08:27:35.122 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Loaded org.apache.pinot.client.PinotDriver from file:/Users/tonykim/Library/Tableau/Drivers/pinot-jdbc-client-0.10.0-SNAPSHOT.jar
2022-06-17 08:27:35.125 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.StubDriver - Registered StubDriver.
2022-06-17 08:27:35.138 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Get driver from isolatedDrivers.
2022-06-17 08:27:35.141 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCProtocolImpl - Connecting to jdbc:<pinot://localhost:9000>
2022-06-17 08:27:35.141 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  com.tableausoftware.jdbc.JDBCProtocolImpl - Connection properties {password=*******, user=}
2022-06-17 08:27:35.143 -0700 (,,,,1,1) grpc-default-executor-0 : INFO  org.apache.pinot.client.PinotDriver - Initiating connection to database for url: jdbc:<pinot://localhost:9000>
2022-06-17 08:28:35.473 -0700 (,,,,,) AsyncHttpClient-timer-6-1 : WARN  io.netty.util.HashedWheelTimer - An exception was thrown by TimerTask.
java.lang.NoClassDefFoundError: com/typesafe/netty/HandlerPublisher
	at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
	at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:?]
	at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:?]
	at java.net.URLClassLoader.defineClass(Unknown Source) ~[?:?]
	at java.net.URLClassLoader$1.run(Unknown Source) ~[?:?]
	at java.net.URLClassLoader$1.run(Unknown Source) ~[?:?]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.net.FactoryURLClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at org.asynchttpclient.netty.request.NettyRequestSender.abort(NettyRequestSender.java:474) ~[?:?]
	at org.asynchttpclient.netty.timeout.TimeoutTimerTask.expire(TimeoutTimerTask.java:43) ~[?:?]
	at org.asynchttpclient.netty.timeout.RequestTimeoutTimerTask.run(RequestTimeoutTimerTask.java:50) ~[?:?]
	at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:672) ~[jdbcserver.jar:20221.0.26]
	at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:747) ~[jdbcserver.jar:20221.0.26]
	at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:472) ~[jdbcserver.jar:20221.0.26]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[jdbcserver.jar:20221.0.26]
	at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.ClassNotFoundException: com.typesafe.netty.HandlerPublisher
	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.net.FactoryURLClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	... 19 more
k

Kartik Khare

06/17/2022, 4:21 PM
seems like it is due to
reactive-streams-1.0.3.jar
can you remove this and try or upgrade this jar version to 2.0.4
y

Young Seok (Tony) Kim

06/17/2022, 4:25 PM
Oh! I see. I can try that.
I’m not sure but it seems highest
reactive-streams
version is 1.0.4 in the mvn repository. I instead tried
netty-reactive-streams-http-2.0.4.jar
and
netty-reactive-streams-2.0.4.jar
but both did not work. (Having a reactive-streams error on Tableau) Here is the log. Maybe I cannot find a proper
reactive-streams
2.0.4 jar. Do you have a built jar somewhere?
Copy code
2022-06-17 09:33:45.965 -0700 (,,,,2,3) grpc-default-executor-1 : INFO  com.tableau.connect.grpc.GrpcProtocolService - Start local request 3 /constructProtocol.
2022-06-17 09:33:45.966 -0700 (,,,,2,3) grpc-default-executor-1 : INFO  com.tableausoftware.jdbc.JDBCDriverManager - Get driver from isolatedDrivers.
2022-06-17 09:33:45.966 -0700 (,,,,2,3) grpc-default-executor-1 : INFO  com.tableausoftware.jdbc.JDBCProtocolImpl - Connecting to jdbc:<pinot://localhost:9000>
2022-06-17 09:33:45.966 -0700 (,,,,2,3) grpc-default-executor-1 : INFO  com.tableausoftware.jdbc.JDBCProtocolImpl - Connection properties {password=*******, user=}
2022-06-17 09:33:45.966 -0700 (,,,,2,3) grpc-default-executor-1 : INFO  org.apache.pinot.client.PinotDriver - Initiating connection to database for url: jdbc:<pinot://localhost:9000>
2022-06-17 09:33:45.968 -0700 (,,,,2,3) grpc-default-executor-1 : ERROR com.tableau.connect.util.GrpcServiceHelper - Failed in constructProtocol.
java.lang.NoClassDefFoundError: org/reactivestreams/Publisher
	at org.asynchttpclient.netty.channel.ChannelManager.configureBootstraps(ChannelManager.java:212) ~[?:?]
	at org.asynchttpclient.DefaultAsyncHttpClient.<init>(DefaultAsyncHttpClient.java:94) ~[?:?]
	at org.asynchttpclient.Dsl.asyncHttpClient(Dsl.java:36) ~[?:?]
	at org.apache.pinot.client.JsonAsyncHttpPinotClientTransport.<init>(JsonAsyncHttpPinotClientTransport.java:80) ~[?:?]
	at org.apache.pinot.client.JsonAsyncHttpPinotClientTransportFactory.buildTransport(JsonAsyncHttpPinotClientTransportFactory.java:37) ~[?:?]
	at org.apache.pinot.client.PinotDriver.connect(PinotDriver.java:69) ~[?:?]
	at com.tableausoftware.jdbc.JDBCDriverManager.getConnection(JDBCDriverManager.java:271) ~[jdbcserver.jar:20221.0.26]
	at com.tableausoftware.jdbc.JDBCProtocolImpl.getConnection(JDBCProtocolImpl.java:325) ~[jdbcserver.jar:20221.0.26]
	at com.tableausoftware.jdbc.JDBCProtocolImpl.<init>(JDBCProtocolImpl.java:118) ~[jdbcserver.jar:20221.0.26]
	at com.tableau.connect.service.ProtocolPool.constructProtocol(ProtocolPool.java:48) ~[jdbcserver.jar:20221.0.26]
	at com.tableau.connect.service.ProtocolService.constructProtocol(ProtocolService.java:59) ~[jdbcserver.jar:20221.0.26]
	at com.tableau.connect.grpc.GrpcProtocolService.lambda$constructProtocol$0(GrpcProtocolService.java:63) ~[jdbcserver.jar:20221.0.26]
	at com.tableau.connect.grpc.GrpcProtocolService.wrap(GrpcProtocolService.java:289) ~[jdbcserver.jar:20221.0.26]
	at com.tableau.connect.grpc.GrpcProtocolService.constructProtocol(GrpcProtocolService.java:62) ~[jdbcserver.jar:20221.0.26]
	at com.tableau.connect.generated.ProtocolServiceGrpc$MethodHandlers.invoke(ProtocolServiceGrpc.java:1492) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:180) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:331) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:814) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) ~[jdbcserver.jar:20221.0.26]
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123) ~[jdbcserver.jar:20221.0.26]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
	at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.lang.ClassNotFoundException: org.reactivestreams.Publisher
	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.net.FactoryURLClassLoader.loadClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	... 27 more
2022-06-17 09:33:45.968 -0700 (,,,,2,3) grpc-default-executor-1 : INFO  com.tableau.connect.grpc.GrpcProtocolService - End local request 3 /constructProtocol.
+ I’m not sure if this information is useful, but when I build pinot from main Github branch as of yesterday, the
~/.m2/repository/org/reactivestreams/reactive-streams/
only had version 1.0.3.
k

Kartik Khare

06/17/2022, 4:43 PM
No that should not be an issue. I got confused between netty-reactive-stream and reactive-streams. The class that was causing error is present in netty-reactive-stream 2.0.4 so not sure why it is causing error