mirror of https://github.com/apache/druid.git
Use jdbi inTransaction for SQLMetadataConnector's insertOrUpdate.
This fixes an issue where failed transactions were not properly rolled back.
This commit is contained in:
parent
040e771da2
commit
e00de8c19f
|
@ -26,11 +26,12 @@ import org.skife.jdbi.v2.Batch;
|
||||||
import org.skife.jdbi.v2.DBI;
|
import org.skife.jdbi.v2.DBI;
|
||||||
import org.skife.jdbi.v2.Handle;
|
import org.skife.jdbi.v2.Handle;
|
||||||
import org.skife.jdbi.v2.IDBI;
|
import org.skife.jdbi.v2.IDBI;
|
||||||
|
import org.skife.jdbi.v2.TransactionCallback;
|
||||||
|
import org.skife.jdbi.v2.TransactionStatus;
|
||||||
import org.skife.jdbi.v2.tweak.HandleCallback;
|
import org.skife.jdbi.v2.tweak.HandleCallback;
|
||||||
import org.skife.jdbi.v2.util.ByteArrayMapper;
|
import org.skife.jdbi.v2.util.ByteArrayMapper;
|
||||||
import org.skife.jdbi.v2.util.IntegerMapper;
|
import org.skife.jdbi.v2.util.IntegerMapper;
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
||||||
|
@ -248,15 +249,12 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
||||||
final byte[] value
|
final byte[] value
|
||||||
) throws Exception
|
) throws Exception
|
||||||
{
|
{
|
||||||
return getDBI().withHandle(
|
return getDBI().inTransaction(
|
||||||
new HandleCallback<Void>()
|
new TransactionCallback<Void>()
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public Void withHandle(Handle handle) throws Exception
|
public Void inTransaction(Handle handle, TransactionStatus transactionStatus) throws Exception
|
||||||
{
|
{
|
||||||
Connection conn = getDBI().open().getConnection();
|
|
||||||
handle.begin();
|
|
||||||
conn.setAutoCommit(false);
|
|
||||||
int count = handle
|
int count = handle
|
||||||
.createQuery(
|
.createQuery(
|
||||||
String.format("SELECT COUNT(*) FROM %1$s WHERE %2$s = :key", tableName, keyColumn)
|
String.format("SELECT COUNT(*) FROM %1$s WHERE %2$s = :key", tableName, keyColumn)
|
||||||
|
@ -277,8 +275,6 @@ public abstract class SQLMetadataConnector implements MetadataStorageConnector
|
||||||
.bind("value", value)
|
.bind("value", value)
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
conn.setAutoCommit(true);
|
|
||||||
handle.commit();
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue