[ 
https://issues.apache.org/jira/browse/FLINK-19435?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17245399#comment-17245399
 ] 

Roman Khachatryan commented on FLINK-19435:
-------------------------------------------

I guess Class.forName is there only for historical reasons ([~lzljs3620320] 
might know better). I agree that DriverManager should be able to find the 
driver (the same class loaders are used).

 

However, I see that SimpleJdbcConnectionProvider calls 
DriverManager.getConnection which internally can also call Class.forName.

So simply removing Class.forName from Flink code might not solve the problem.

 

> jdbc JDBCOutputFormat open function invoke Class.forName(drivername)
> --------------------------------------------------------------------
>
>                 Key: FLINK-19435
>                 URL: https://issues.apache.org/jira/browse/FLINK-19435
>             Project: Flink
>          Issue Type: Improvement
>          Components: Connectors / JDBC
>    Affects Versions: 1.10.2
>            Reporter: xiaodao
>            Priority: Major
>             Fix For: 1.13.0, 1.12.1
>
>         Attachments: image-2020-10-09-20-48-48-261.png, 
> image-2020-10-09-20-49-23-644.png
>
>
> when we sink data to multi jdbc outputformat , 
> {code}
> protected void establishConnection() throws SQLException, 
> ClassNotFoundException {
>  Class.forName(drivername);
>  if (username == null) {
>  connection = DriverManager.getConnection(dbURL);
>  } else {
>  connection = DriverManager.getConnection(dbURL, username, password);
>  }
> }
> {code}
> may cause jdbc driver deadlock. it need to change to synchronized function.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to