Socket closed error connecting to SQL Server

Problem

Your pipelines reads or writes to a Microsoft SQL server and you get the following error:

Error: "Socket is closed". ClientConnectionId:<ID>

Symptom

Your Cloud Data Fusion pipeline reads or writes to a SQL Server. When you run your pipeline, it fails, throwing a Socket is closed exception. You get the following error message:

java.lang.RuntimeException: java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "Socket is closed". ClientConnectionId:<ID> at org.apache.hadoop.mapreduce.lib.db.DBInputFormat.setConf(DBInputFormat.java:171) ~[hadoop-mapreduce-client-core-2.8.5.jar:na]

By default, your Cloud Data Fusion pipeline is configured to use Cloud Dataproc, which uses the Conscrypt SSL provider. There is a known bug, that pertains to Cloud Dataproc’s use of Conscrypt, that causes the Socket is closed exception.

Solution

To fix the issue, disable the use of Conscrypt in your Cloud Dataproc cluster. You can do this while your pipeline is running.

  1. Go to the Control Center.

  2. In the Data Pipeline card, click on the wrench tool icon.

     

  3. In the Preferences window that opens, paste the following argument into the Key field.

    system.profile.properties.dataproc:dataproc.conscrypt.provider.enable false

     

  4. Click Save & Close.

 

Â