diff --git a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcIOIT.java b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcIOIT.java index 57074fdffe82..2ea437f4efa0 100644 --- a/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcIOIT.java +++ b/sdks/java/io/jdbc/src/test/java/org/apache/beam/sdk/io/jdbc/JdbcIOIT.java @@ -271,7 +271,11 @@ private PipelineResult runRead(String tableName) { @Test public void testWriteWithAutosharding() throws Exception { String firstTableName = DatabaseTestHelper.getTestTableName("JDBCIT_AUTOSHARD"); - DatabaseTestHelper.createTable(dataSource, firstTableName); + // JdbcIO may replay committed writes when a bundle is retried. + DatabaseTestHelper.createTable( + dataSource, + firstTableName, + Lists.newArrayList(KV.of("id", "INT PRIMARY KEY"), KV.of("name", "VARCHAR(500)"))); try { PCollection dataCollection = pipelineWrite.apply( @@ -282,7 +286,10 @@ public void testWriteWithAutosharding() throws Exception { .apply( JdbcIO.write() .withDataSourceConfiguration(JdbcIO.DataSourceConfiguration.create(dataSource)) - .withStatement(String.format("insert into %s values(?, ?)", firstTableName)) + .withStatement( + String.format( + "insert into %s values(?, ?) on conflict (id) do nothing", + firstTableName)) .withAutoSharding() .withPreparedStatementSetter(new JdbcTestHelper.PrepareStatementFromTestRow()));