Hey guys. Seeing an issue with dynamic table queri...
# troubleshooting
l
Hey guys. Seeing an issue with dynamic table queries through the Pinot connector for Trino version 379. When doing a query with a WHERE clause on the partition key without using a dynamic table query where there is no data for that key, 0 rows are returned (as expected). But when doing a dynamic table query of the same kind, the Pinot Trino connector hangs for a long time, and then returns
Copy code
Query 20220920_202500_00441_6rt9p failed: Only 0 out of 0 servers responded for query select
This seems like a bug in the connector to me, any ideas?
Copy code
Query 20220920_202500_00441_6rt9p failed: Only 0 out of 0 servers responded for query select "field1", "field2", "field3", "field4", "field5", "time", "field6", "time2", "field7", "primaryKey", "field8", "field9" from table where ("primaryKey") = 'primary-key-which-does-not-exist' limit 10 with query .......
This is a result of doing
Copy code
SELECT * FROM pinot.default."dynamic query with where clause here";
doing the query outside works as expected
In the Trino UI it shows up as
Copy code
EXTERNAL ERROR — PINOT_INSUFFICIENT_SERVER_RESPONSE
Copy code
at io.trino.plugin.pinot.client.PinotClient.lambda$submitBrokerQueryJson$6(PinotClient.java:551)
	at io.trino.plugin.pinot.client.PinotClient.doWithRetries(PinotClient.java:616)
	at io.trino.plugin.pinot.client.PinotClient.submitBrokerQueryJson(PinotClient.java:532)
	at io.trino.plugin.pinot.client.PinotClient.createResultIterator(PinotClient.java:573)
	at io.trino.plugin.pinot.PinotBrokerPageSource.getNextPage(PinotBrokerPageSource.java:112)
	at io.trino.operator.ScanFilterAndProjectOperator$ConnectorPageSourceToPages.process(ScanFilterAndProjectOperator.java:392)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
	at io.trino.operator.WorkProcessorUtils$YieldingProcess.process(WorkProcessorUtils.java:182)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils.lambda$flatten$7(WorkProcessorUtils.java:296)
	at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:338)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils$3.process(WorkProcessorUtils.java:325)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
	at io.trino.operator.WorkProcessorUtils.lambda$processStateMonitor$3(WorkProcessorUtils.java:219)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorUtils.getNextState(WorkProcessorUtils.java:240)
	at io.trino.operator.WorkProcessorUtils.lambda$finishWhen$4(WorkProcessorUtils.java:234)
	at io.trino.operator.WorkProcessorUtils$ProcessWorkProcessor.process(WorkProcessorUtils.java:391)
	at io.trino.operator.WorkProcessorSourceOperatorAdapter.getOutput(WorkProcessorSourceOperatorAdapter.java:150)
	at io.trino.operator.Driver.processInternal(Driver.java:388)
	at io.trino.operator.Driver.lambda$processFor$9(Driver.java:292)
	at io.trino.operator.Driver.tryWithLock(Driver.java:693)
	at io.trino.operator.Driver.processFor(Driver.java:285)
	at io.trino.execution.SqlTaskExecution$DriverSplitRunner.processFor(SqlTaskExecution.java:1092)
	at io.trino.execution.executor.PrioritizedSplitRunner.process(PrioritizedSplitRunner.java:163)
	at io.trino.execution.executor.TaskExecutor$TaskRunner.run(TaskExecutor.java:488)
	at io.trino.$gen.Trino_379____20220920_201245_2.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:829)
Any work-around greatly appreciated.
In the pinot broker itself I can see these messages
Copy code
No server found for request 99: select.....
This only seems to break if the specified primary key does not exist, and is the partition key
Interestingly seems to only happen if the entire partition is empty
I've temporarily worked around this issue by reducing the amount of partitions for my tables to 1.. this means I have no empty partitions, meaning I don't see the issue