Andrew Nessin R
04/19/2023, 6:19 AMdocker container run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:5.7.27 mysqld
I ran this code from a Java program:
package com.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class App
{
public static void main(String[] args) {
// JDBC connection parameters
String url = "jdbc:<mysql://10.141.14.93:3306/TestDB>"; // Replace with your MySQL database URL
String username = "root"; // Replace with your MySQL username
String password = "password"; // Replace with your MySQL password
try {
// Step 1: Register the JDBC driver
Class.forName("com.mysql.cj.jdbc.Driver");
// Step 2: Open a connection
Connection connection = DriverManager.getConnection(url, username, password);
// Step 3: Create a statement
Statement statement = connection.createStatement();
// Step 4: Execute a query
String sql = "SELECT * FROM Friends"; // Replace with your SQL query
ResultSet resultSet = statement.executeQuery(sql);
// Step 5: Process the result
while (resultSet.next()) {
int id = resultSet.getInt("id"); // Replace with your column names
String name = resultSet.getString("name");
int age = resultSet.getInt("age");
System.out.println("ID: " + id + ", Name: " + name + ", Age: " + age);
}
// Step 6: Close the resources
resultSet.close();
statement.close();
connection.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
}
Running this program gives me the following error, which is very useful to debug the problem:
Wed Apr 19 11:29:30 IST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at com.mysql.cj.jdbc.exceptions.SQLError.createCommunicationsException(SQLError.java:590)
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:57)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1606)
at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:633)
at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:347)
at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:219)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
at com.example.App.main(App.java:22)
Caused by: com.mysql.cj.core.exceptions.CJCommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:54)
at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:93)
at com.mysql.cj.core.exceptions.ExceptionFactory.createException(ExceptionFactory.java:133)
at com.mysql.cj.core.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:149)
at com.mysql.cj.mysqla.io.MysqlaProtocol.negotiateSSLConnection(MysqlaProtocol.java:309)
at com.mysql.cj.mysqla.authentication.MysqlaAuthenticationProvider.negotiateSSLConnection(MysqlaAuthenticationProvider.java:769)
at com.mysql.cj.mysqla.authentication.MysqlaAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(MysqlaAuthenticationProvider.java:482)
at com.mysql.cj.mysqla.authentication.MysqlaAuthenticationProvider.connect(MysqlaAuthenticationProvider.java:204)
at com.mysql.cj.mysqla.io.MysqlaProtocol.connect(MysqlaProtocol.java:1414)
at com.mysql.cj.mysqla.MysqlaSession.connect(MysqlaSession.java:132)
at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:1726)
at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:1596)
... 6 more
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170)
at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:103)
at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:222)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:449)
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:427)
at com.mysql.cj.core.io.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:156)
When I connect to the same mysql server from Airbyte, I get the attached error. Here is the full logs:
2023-04-19 06:00:37 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.b.IntegrationCliParser(parseOptions):126 integration args: {check=null, config=source_config.json}
2023-04-19 06:00:37 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.b.IntegrationRunner(runInternal):105 Running integration: io.airbyte.integrations.base.ssh.SshWrappedSource
2023-04-19 06:00:37 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.b.IntegrationRunner(runInternal):106 Command: CHECK
2023-04-19 06:00:37 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.b.IntegrationRunner(runInternal):107 Integration config: IntegrationConfig{command=CHECK, configPath='source_config.json', catalogPath='null', statePath='null'}
2023-04-19 06:00:38 WARN i.a.w.i.DefaultAirbyteStreamFactory(internalLog):165 - WARN c.n.s.JsonMetaSchema(newValidator):278 Unknown keyword order - you should define your own Meta Schema. If the keyword is irrelevant for validation, just use a NonValidationKeyword
2023-04-19 06:00:38 WARN i.a.w.i.DefaultAirbyteStreamFactory(internalLog):165 - WARN c.n.s.JsonMetaSchema(newValidator):278 Unknown keyword airbyte_secret - you should define your own Meta Schema. If the keyword is irrelevant for validation, just use a NonValidationKeyword
2023-04-19 06:00:38 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.b.s.SshTunnel(getInstance):204 Starting connection with method: NO_TUNNEL
2023-04-19 06:00:38 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO c.z.h.HikariDataSource(<init>):80 HikariPool-1 - Starting...
2023-04-19 06:00:38 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO c.z.h.HikariDataSource(<init>):82 HikariPool-1 - Start completed.
2023-04-19 06:01:38 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO c.z.h.HikariDataSource(close):350 HikariPool-1 - Shutdown initiated...
2023-04-19 06:01:39 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO c.z.h.HikariDataSource(close):352 HikariPool-1 - Shutdown completed.
2023-04-19 06:01:39 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.b.IntegrationRunner(runInternal):182 Completed integration: io.airbyte.integrations.base.ssh.SshWrappedSource
2023-04-19 06:01:39 INFO i.a.w.i.DefaultAirbyteStreamFactory(internalLog):168 - INFO i.a.i.s.m.MySqlSource(main):311 completed source: class io.airbyte.integrations.source.mysql.MySqlSource
2023-04-19 06:01:40 INFO i.a.w.g.DefaultCheckConnectionWorker(run):120 - Check connection job received output: io.airbyte.config.StandardCheckConnectionOutput@679a75b1[status=failed,message=State code: 08S01; Message: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.]
2023-04-19 06:01:40 INFO i.a.w.t.TemporalAttemptExecution(get):169 - Stopping cancellation check scheduling...
2023-04-19 06:01:40 INFO i.a.c.i.LineGobbler(voidCall):149 -
2023-04-19 06:01:40 INFO i.a.c.i.LineGobbler(voidCall):149 - ----- END CHECK -----
2023-04-19 06:01:40 INFO i.a.c.i.LineGobbler(voidCall):149 -
The original Java error has been turned into a single line, which significantly reduces its usefulness:
2023-04-19 06:01:40 INFO i.a.w.g.DefaultCheckConnectionWorker(run):120 - Check connection job received output: io.airbyte.config.StandardCheckConnectionOutput@679a75b1[status=failed,message=State code: 08S01; Message: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.]
If I try to view the logs of the temporary connector container while the connection is being tested by Airbyte, I get this:
ubuntu@air1:~$ docker container logs -f source-mysql-check-f0e7688e-0d95-441f-bbee-78fc45b84e82-0-dlscp
Error response from daemon: configured logging driver does not support reading
The error message from Java program suggests to use useSSL=false
in JDBC URL. If I do that in Airbyte, then the connection succeeds, I have attached a screenshot of this as well.
Now the question is, how do I access the full Java exception that occurred while connecting from Airbyte? The above example shows Airbyte swallowed up useful error logs. In my case, I can't access the MySQL server and Airbyte is probably swallowing up useful logs, just like in the example above.
I could run this same Java program against the MySQL server that won't connect and see if it produces useful error messages. However, I would like to know if Airbyte is swallowing error logs or is there a different place I can look at to get the full error logs? The logs I have shared is from the UI. I see the same logs when I run docker container logs airbyte-worker
.Yogic Wahyu
04/19/2023, 6:43 AMAnanya Singh
04/19/2023, 8:36 AMTristan Crudge
04/19/2023, 10:16 AMcursor_field
.
More info in thread.Tahar Ben Achour
04/19/2023, 10:16 AMkubectl -n airbyte logs airbyte-webapp-68b8d6d5c9-m6xgr
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
20-envsubst-on-templates.sh: Running envsubst on /etc/nginx/templates/default.conf.template to /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/04/19 10:07:32 [emerg] 1#1: unknown "airbyte_version" variable
nginx: [emerg] unknown "airbyte_version" variable
Any idea ?
Thank youRui Santos
04/19/2023, 10:21 AMMoaz ElNashar
04/19/2023, 10:50 AMishan
04/19/2023, 10:57 AMNina Jensen
04/19/2023, 1:18 PM/web_backend/connections/get
but updating with /web_backend/connections/update
has no effect, even though that is seemingly what happens internally looking at logs. What am I missing here?James (he/him)
04/19/2023, 1:32 PMDale Gilliam
04/19/2023, 2:02 PMbalances
, but that’s missing. It has everything else, which is basically nothing.
Here’s an example of what is emitted in the raw JSON:
{
"account_id": "XXXXXXXXX",
"last_refresh_time": "2023-04-18T15:29:59Z",
"as_of_time": "2023-04-16T00:00:00+00:00"
}
Robert Put
04/19/2023, 2:03 PMRafael Rossini
04/19/2023, 2:41 PMLeftKlick
04/19/2023, 4:25 PMsend_receive_timeout
(its already been bumped up on clickhouse). Is there a way I can test this out while I wait for the permanent fix to be pushed into a release?Luis Peña
04/19/2023, 4:52 PMJason Gluck
04/19/2023, 6:03 PMupdated_at
, with null values in a source table for an incremental sync? Does it pick up the null values on an initial sync, or ignore them? Asking to determine if the updated_at
field needs to be backfilled in the source, or if it would be okay to leave historical records null.Sachin Patidar
04/19/2023, 7:32 PMTobias Macey
04/19/2023, 7:40 PMproperties
definition into properly escaped strings so that they can be processed by e.g. Trino within the s3-glue connector. It builds on top of the destination-s3
connector and writes the records in JSONL format.Jan Pavel
04/19/2023, 7:50 PMEthan Veres
04/19/2023, 8:53 PMMauricio Alarcon
04/19/2023, 9:23 PMStack Trace: java.lang.RuntimeException: java.lang.RuntimeException: net.snowflake.client.jdbc.SnowflakeSQLException: No active warehouse selected in the current session. Select an active warehouse with the 'use warehouse' command.
Dan Cook
04/19/2023, 9:41 PMSystemModstamp
, but that value doesn't change when a formula field is updated based on some other object. Therefore a row won't get synced until it undergoes a change to 'native' column. This is a problem for us, and to get around it I have a theory that I can schedule a once-daily [Full Refresh | Overwrite] sync and then one or more [Incremental | Append] syncs to the same table later in the same day. Therefore all columns of all rows, incl. formula fields, will get updated at least once a day.
Does this sound feasible?Micky
04/19/2023, 9:55 PMMarcus Vicentini
04/20/2023, 1:18 AMRJ
04/20/2023, 2:02 AM#### Configuration check failed
Could not connect with provided configuration. java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 60001ms.I found this issue, which suggested that perhaps I ought to have added
socket_timeout=300000
to the “JDBC URL Params” field. I did this, and observed no change in behavior. I also found this issue, which suggests that the socket_timeout
JDBC URL parameter is not currently being respected.Slackbot
04/20/2023, 2:21 AMSlackbot
04/20/2023, 2:22 AMTony Peng
04/20/2023, 3:07 AM/Users/tony3/Downloads/name-of-the-service-account-key.json
But I got an error message:
Configuration check failed
com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 2 path $
My service account id has the following format:
{
"type": "service_account",
"project_id": "made-with-ml-384201",
"private_key_id": "kEY_ID",
"private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
"client_email": "SERVICE_ACCOUNT_EMAIL",
"client_id": "CLIENT_ID",
"auth_uri": "<https://accounts.google.com/o/oauth2/auth>",
"token_uri": "<https://oauth2.googleapis.com/token>",
"auth_provider_x509_cert_url": "<https://www.googleapis.com/oauth2/v1/certs>",
"client_x509_cert_url": "<https://www.googleapis.com/robot/v1/metadata/x509/my-made-with-ml%40made-with-ml-384201.iam.gserviceaccount.com>"
}
, which seems OK.
Appreciate for your help! TonyRajesh Koilpillai
04/20/2023, 3:43 AMRajesh Koilpillai
04/20/2023, 5:40 AM