Is anyone using Tableau with Pinot? Getting this e...
# troubleshooting
k
Is anyone using Tableau with Pinot? Getting this error when trying to connect to hosted instance:
x
I think you might need to drop the jars to the class path? cc: @User
k
k
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
Which version of Pinot are you using?
Can you provide the output of
ls ~/Library/Tableau/Drivers
k
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
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
The curl command timed out
It's hitting the startree.cloud since we are on on it.
k
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
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
This is the latest snapshot or from release?
Looks like someone broke the build
k
it pulled master I believe
k
k
Trying now
k
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
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
I've seen this happen really weirdly when your JDK version isn't set to baseline
k
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
Oh yeah let's get that down to 11-14
Try
/usr/libexec/java_home -V
Let me know the output
k
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
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.13.jdk/Contents/Home
and rebuild
k
That did it. Moving along!
k
Sweet 🙂
k
Btw, between flink and spark streaming, which one do you suggest?
k
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
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
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
processing request...
k
I assume this will be the timeout issue
k
yeah, it's sitting there
k
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
Does the platform currently not support it?
k
I'm checking now
k
Thanks.
k
Adding @Mayank to thread
k
Thanks. I can create a support ticket if needed
👍 1
k
That would be a good idea
y
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
cc: @Kartik Khare
k
@Young Seok (Tony) Kim The classpath error in the logs still says that its due to missing reactive-streams classes?
y
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
in tableau you can check the jprotocol log file. It is in the
My Tableau Repository
directory generally
y
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
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
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
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