[ https://issues.apache.org/jira/browse/BEAM-793?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16343752#comment-16343752 ]
Jean-Baptiste Onofré commented on BEAM-793: ------------------------------------------- Agreed with [~jkff] to postpone this one to Beam 2.4.0. > JdbcIO can create a deadlock when parallelism is greater than 1 > --------------------------------------------------------------- > > Key: BEAM-793 > URL: https://issues.apache.org/jira/browse/BEAM-793 > Project: Beam > Issue Type: Bug > Components: sdk-java-extensions > Reporter: Jean-Baptiste Onofré > Assignee: Jean-Baptiste Onofré > Priority: Major > Fix For: 2.4.0 > > > With the following JdbcIO configuration, if the parallelism is greater than > 1, we can have a {{Deadlock found when trying to get lock; try restarting > transaction}}. > {code} > MysqlDataSource dbCfg = new MysqlDataSource(); > dbCfg.setDatabaseName("db"); > dbCfg.setUser("user"); > dbCfg.setPassword("pass"); > dbCfg.setServerName("localhost"); > dbCfg.setPortNumber(3306); > p.apply(Create.of(data)) > .apply(JdbcIO.<Tuple5<Integer, Integer, ByteString, Long, > Long>>write() > > .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(dbCfg)) > .withStatement("INSERT INTO > smth(loc,event_type,hash,begin_date,end_date) VALUES(?, ?, ?, ?, ?) ON > DUPLICATE KEY UPDATE event_type=VALUES(event_type),end_date=VALUES(end_date)") > .withPreparedStatementSetter(new > JdbcIO.PreparedStatementSetter<Tuple5<Integer, Integer, ByteString, Long, > Long>>() { > public void setParameters(Tuple5<Integer, > Integer, ByteString, Long, Long> element, PreparedStatement statement) > throws Exception { > statement.setInt(1, element.f0); > statement.setInt(2, element.f1); > statement.setBytes(3, > element.f2.toByteArray()); > statement.setLong(4, element.f3); > statement.setLong(5, element.f4); > } > })); > {code} > This can happen due to the {{autocommit}}. I'm going to investigate. -- This message was sent by Atlassian JIRA (v7.6.3#76005)