Skip to content

Conversation

@lidavidm
Copy link
Member

No description provided.

@github-actions
Copy link

@lidavidm
Copy link
Member Author

cc @rafael-telles this should fix the issues in #12013.

@lidavidm
Copy link
Member Author

There appears to be a Java test failure, possibly related to here in the logs: https://github.com/apache/arrow/runs/4607408784?check_suite_focus=true#step:6:10774, @rafael-telles do you have an idea of what's going on there?

@rafael-telles
Copy link
Contributor

Thanks @lidavidm ! Taking a look

@rafael-telles
Copy link
Contributor

It seems to be related to JNI, I am trying to reproduce locally.

@rafael-telles
Copy link
Contributor

@lidavidm , trying to understand what is happening here yet.

Found this in the logs:

java.sql.SQLException: At least one parameter to the current statement is uninitialized.
	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeQuery(Unknown Source)
	at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122)
	at org.apache.commons.dbcp2.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:122)
	at org.apache.arrow.flight.sql.example.FlightSqlExample.getStreamPreparedStatement(FlightSqlExample.java:546)
	at org.apache.arrow.flight.sql.FlightSqlProducer.getStream(FlightSqlProducer.java:193)
	at org.apache.arrow.flight.FlightService.doGetCustom(FlightService.java:111)
	at org.apache.arrow.flight.FlightBindingService$DoGetMethod.invoke(FlightBindingService.java:144)
	at org.apache.arrow.flight.FlightBindingService$DoGetMethod.invoke(FlightBindingService.java:134)
	at io.grpc.stub.ServerCalls$UnaryServerCallHandler$UnaryServerCallListener.onHalfClose(ServerCalls.java:182)
	at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35)
	at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23)
	at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40)
	at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86)
	at io.grpc.PartialForwardingServerCallListener.onHalfClose(PartialForwardingServerCallListener.java:35)
	at io.grpc.ForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:23)
	at io.grpc.ForwardingServerCallListener$SimpleForwardingServerCallListener.onHalfClose(ForwardingServerCallListener.java:40)
	at io.grpc.Contexts$ContextualizedServerCallListener.onHalfClose(Contexts.java:86)
	at io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.halfClosed(ServerCallImpl.java:335)
	at io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1HalfClosed.runInContext(ServerImpl.java:866)
	at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
	at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

This means that for some reason the parameters on a prepared statement are not being bound.

I tried running the tests in a loop in case they were flaky but it didn't fail.
Also tried running archery docker run debian-java-jni a few times but didn't fail either.

Can we try applying this patch to see if anything pops up?

diff --git a/java/flight/flight-sql/src/main/java/org/apache/arrow/flight/sql/FlightSqlClient.java b/java/flight/flight-sql/src/main/java/org/apache/arrow/flight/sql/FlightSqlClient.java
index c1ff92a379..069d59edd4 100644
--- a/java/flight/flight-sql/src/main/java/org/apache/arrow/flight/sql/FlightSqlClient.java
+++ b/java/flight/flight-sql/src/main/java/org/apache/arrow/flight/sql/FlightSqlClient.java
@@ -543,6 +543,7 @@ public class FlightSqlClient implements AutoCloseable {
 
         listener.putNext();
         listener.completed();
+        listener.getResult();
       }
 
       return client.getInfo(descriptor, options);
diff --git a/java/flight/flight-sql/src/test/java/org/apache/arrow/flight/sql/example/FlightSqlExample.java b/java/flight/flight-sql/src/test/java/org/apache/arrow/flight/sql/example/FlightSqlExample.java
index 634343c236..90a2aaf100 100644
--- a/java/flight/flight-sql/src/test/java/org/apache/arrow/flight/sql/example/FlightSqlExample.java
+++ b/java/flight/flight-sql/src/test/java/org/apache/arrow/flight/sql/example/FlightSqlExample.java
@@ -1270,7 +1270,10 @@ public class FlightSqlExample implements FlightSqlProducer, AutoCloseable {
         }
 
       } catch (SQLException e) {
-        ackStream.onError(e);
+        ackStream.onError(CallStatus.INTERNAL
+            .withDescription("Failed to bind parameters: " + e.getMessage())
+            .withCause(e)
+            .toRuntimeException());
         return;
       }
       ackStream.onCompleted();

@rafael-telles
Copy link
Contributor

Actually the issue may be because it was missing that call to getResults and the server was executing the prepared statement before binding the parameters, the patch above should fix it @lidavidm

@lidavidm
Copy link
Member Author

Thanks, giving it a spin now.

@lidavidm
Copy link
Member Author

Things look good now. Thanks for the quick fix @rafael-telles!

lidavidm added a commit that referenced this pull request Dec 22, 2021
Closes #12021 from lidavidm/flight-sql-pom

Lead-authored-by: Rafael Telles <[email protected]>
Co-authored-by: David Li <[email protected]>
Signed-off-by: David Li <[email protected]>
@lidavidm lidavidm closed this Dec 22, 2021
lidavidm pushed a commit that referenced this pull request Dec 23, 2021
Implement Flight SQL in C++ and Java, and add the protocol definitions.

This is a combination of multiple pull requests, merged into one branch before merging into master.

Closes #10906 (ARROW-12922).
Closes #11507 (ARROW-14421).
Closes #11989 (ARROW-15112).
Closes #12021 (ARROW-15187).
Closes #12035 (ARROW-15198).

Closes #12013 from apache/flight-sql

Lead-authored-by: Rafael Telles <[email protected]>
Co-authored-by: Abner Eduardo Ferreira <[email protected]>
Co-authored-by: James Duong <[email protected]>
Co-authored-by: Jose Almeida <[email protected]>
Co-authored-by: Juscelino Junior <[email protected]>
Co-authored-by: Kyle Porter <[email protected]>
Co-authored-by: Ryan Nicholson <[email protected]>
Co-authored-by: Vinicius Fraga <[email protected]>
Co-authored-by: tifflhl <[email protected]>
Signed-off-by: David Li <[email protected]>
pribor pushed a commit to GlobalWebIndex/arrow that referenced this pull request Oct 24, 2025
Implement Flight SQL in C++ and Java, and add the protocol definitions.

This is a combination of multiple pull requests, merged into one branch before merging into master.

Closes apache#10906 (ARROW-12922).
Closes apache#11507 (ARROW-14421).
Closes apache#11989 (ARROW-15112).
Closes apache#12021 (ARROW-15187).
Closes apache#12035 (ARROW-15198).

Closes apache#12013 from apache/flight-sql

Lead-authored-by: Rafael Telles <[email protected]>
Co-authored-by: Abner Eduardo Ferreira <[email protected]>
Co-authored-by: James Duong <[email protected]>
Co-authored-by: Jose Almeida <[email protected]>
Co-authored-by: Juscelino Junior <[email protected]>
Co-authored-by: Kyle Porter <[email protected]>
Co-authored-by: Ryan Nicholson <[email protected]>
Co-authored-by: Vinicius Fraga <[email protected]>
Co-authored-by: tifflhl <[email protected]>
Signed-off-by: David Li <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants