-
Notifications
You must be signed in to change notification settings - Fork 113
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ODBCLoader() : ERROR 3399: Failure in UDx RPC call InvokeSetupUDL(): timed out in receiving a UDx message #35
Comments
This bug also recently popped up on the user forums: |
The underlying issue here is that UDx calls can't block indefinitely. Most likely SQLExecDirect() is taking a very long time to return, and the function call is timing out. Unfortunately, there is currently no way for setup() to indicate that it wants to keep taking time. So the solution to this would be to move that bit of code into process(); then modify it to use asynchronous ODBC calls and to have process() periodically return KEEP_GOING. This will, of course, only work properly for drivers that handle asynchronous calls correctly. (Also drivers whose thread-safety is implemented a little more tightly -- process() sees more concurrency than setup(), typically; and I've already seen occasional crashes with some client drivers that explicitly don't claim to support multi-threaded environments.) For what it's worth, now that Vertica supports UDLs written in Java, I'm of the opinion that JDBC would be a better tool than ODBC to implement this connector. ODBC has some issues regarding thread-safety, consistent standardization, and configuration that I think JDBC does in a way that's better for this application. I unfortunately don't have time to port this code at the moment. But if someone wants a good weekend project, go for it :-) |
Incidentally, in the absence of a general fix, workarounds are discussed at the above forum post. |
Hi! |
@RomainLeclair
|
@h-serizawa
I try to play with the different connection parameters but for the moment always the same problem.. |
@RomainLeclair
|
@h-serizawa
Do not hesitate if you need more information or other |
I am trying to use ODBCLoader() ( User Defined Loader ) in the Vertica Extension Package, but I am getting a timeout error. I am gonna explain it in below.
I can run queries which takes more than 60 seconds, in isql, like that:
I can also execute queries which takes more than 60 seconds in the python by using pyodbc.
When I try to run similar queries in the vsql by using ODBCLoader() I am getting timeout error as shown in the below. Firstly, I thought that it is similar to mysql connection, query timout problem but it is not related to the data source. Because remote odbc data source mysql and vertica gives same error. Just after 60 seconds passed, it throws an exception as shown in the below.
I edited the ODBCLoader.cpp code and set the SQL_ATTR_QUERY_TIMEOUT more than 60 seconds but it does not effect. What can be the problem? In the Cpp code is there any parameter which overrides the default query timeout?
My ODBC configuration is in below:
The text was updated successfully, but these errors were encountered: