From 3aba401ee01776147c1866e3cc121d183e0194ff Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Thu, 24 Sep 2015 21:39:36 -0700 Subject: [PATCH] SQLMetadataConnector: Retry table creation, in case something goes wrong. Also rejigger table creation methods to not take a DBI. It's already available inside the connector, and everyone was just using that one anyway. --- .../updater/HadoopConverterJobTest.java | 2 +- .../druid/metadata/SQLMetadataConnector.java | 39 ++++++++----------- .../metadata/SQLMetadataConnectorTest.java | 2 +- .../SQLMetadataStorageActionHandlerTest.java | 6 +-- 4 files changed, 21 insertions(+), 28 deletions(-) diff --git a/indexing-hadoop/src/test/java/io/druid/indexer/updater/HadoopConverterJobTest.java b/indexing-hadoop/src/test/java/io/druid/indexer/updater/HadoopConverterJobTest.java index 4170edf922ae..ead8cb96f7c0 100644 --- a/indexing-hadoop/src/test/java/io/druid/indexer/updater/HadoopConverterJobTest.java +++ b/indexing-hadoop/src/test/java/io/druid/indexer/updater/HadoopConverterJobTest.java @@ -232,7 +232,7 @@ public Void withHandle(Handle handle) throws Exception @Override public boolean run() { - connector.createSegmentTable(connector.getDBI(), metadataStorageUpdaterJobSpec.getSegmentTable()); + connector.createSegmentTable(metadataStorageUpdaterJobSpec.getSegmentTable()); return true; } }, diff --git a/server/src/main/java/io/druid/metadata/SQLMetadataConnector.java b/server/src/main/java/io/druid/metadata/SQLMetadataConnector.java index 4ac8659e51c6..70e5ae7d1feb 100644 --- a/server/src/main/java/io/druid/metadata/SQLMetadataConnector.java +++ b/server/src/main/java/io/druid/metadata/SQLMetadataConnector.java @@ -151,10 +151,10 @@ protected boolean connectorIsTransientException(Throwable e) return false; } - public void createTable(final IDBI dbi, final String tableName, final Iterable sql) + public void createTable(final String tableName, final Iterable sql) { try { - dbi.withHandle( + retryWithHandle( new HandleCallback() { @Override @@ -180,10 +180,9 @@ public Void withHandle(Handle handle) throws Exception } } - public void createSegmentTable(final IDBI dbi, final String tableName) + public void createSegmentTable(final String tableName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -207,10 +206,9 @@ tableName, getPayloadType() ); } - public void createRulesTable(final IDBI dbi, final String tableName) + public void createRulesTable(final String tableName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -228,10 +226,9 @@ tableName, getPayloadType() ); } - public void createConfigTable(final IDBI dbi, final String tableName) + public void createConfigTable(final String tableName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -246,10 +243,9 @@ tableName, getPayloadType() ); } - public void createEntryTable(final IDBI dbi, final String tableName) + public void createEntryTable(final String tableName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -269,10 +265,9 @@ tableName, getPayloadType() ); } - public void createLogTable(final IDBI dbi, final String tableName, final String entryTypeName) + public void createLogTable(final String tableName, final String entryTypeName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -289,10 +284,9 @@ tableName, getSerialType(), getPayloadType(), entryTypeName ); } - public void createLockTable(final IDBI dbi, final String tableName, final String entryTypeName) + public void createLockTable(final String tableName, final String entryTypeName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -363,21 +357,21 @@ public Void inTransaction(Handle handle, TransactionStatus transactionStatus) th @Override public void createSegmentTable() { if (config.get().isCreateTables()) { - createSegmentTable(getDBI(), tablesConfigSupplier.get().getSegmentsTable()); + createSegmentTable(tablesConfigSupplier.get().getSegmentsTable()); } } @Override public void createRulesTable() { if (config.get().isCreateTables()) { - createRulesTable(getDBI(), tablesConfigSupplier.get().getRulesTable()); + createRulesTable(tablesConfigSupplier.get().getRulesTable()); } } @Override public void createConfigTable() { if (config.get().isCreateTables()) { - createConfigTable(getDBI(), tablesConfigSupplier.get().getConfigTable()); + createConfigTable(tablesConfigSupplier.get().getConfigTable()); } } @@ -386,9 +380,9 @@ public void createTaskTables() { if (config.get().isCreateTables()) { final MetadataStorageTablesConfig tablesConfig = tablesConfigSupplier.get(); final String entryType = tablesConfig.getTaskEntryType(); - createEntryTable(getDBI(), tablesConfig.getEntryTable(entryType)); - createLogTable(getDBI(), tablesConfig.getLogTable(entryType), entryType); - createLockTable(getDBI(), tablesConfig.getLockTable(entryType), entryType); + createEntryTable(tablesConfig.getEntryTable(entryType)); + createLogTable(tablesConfig.getLogTable(entryType), entryType); + createLockTable(tablesConfig.getLockTable(entryType), entryType); } } @@ -446,10 +440,9 @@ protected BasicDataSource getDatasource() return dataSource; } - private void createAuditTable(final IDBI dbi, final String tableName) + private void createAuditTable(final String tableName) { createTable( - dbi, tableName, ImmutableList.of( String.format( @@ -474,7 +467,7 @@ tableName, getSerialType(), getPayloadType() @Override public void createAuditTable() { if (config.get().isCreateTables()) { - createAuditTable(getDBI(), tablesConfigSupplier.get().getAuditTable()); + createAuditTable(tablesConfigSupplier.get().getAuditTable()); } } diff --git a/server/src/test/java/io/druid/metadata/SQLMetadataConnectorTest.java b/server/src/test/java/io/druid/metadata/SQLMetadataConnectorTest.java index 464d4efaefb8..99607c63109c 100644 --- a/server/src/test/java/io/druid/metadata/SQLMetadataConnectorTest.java +++ b/server/src/test/java/io/druid/metadata/SQLMetadataConnectorTest.java @@ -87,7 +87,7 @@ public Void withHandle(Handle handle) throws Exception public void testInsertOrUpdate() throws Exception { final String tableName = "test"; - connector.createConfigTable(connector.getDBI(), tableName); + connector.createConfigTable(tableName); Assert.assertNull(connector.lookup(tableName, "name", "payload", "emperor")); diff --git a/server/src/test/java/io/druid/metadata/SQLMetadataStorageActionHandlerTest.java b/server/src/test/java/io/druid/metadata/SQLMetadataStorageActionHandlerTest.java index 1e79ddd948ab..c3db01e5019f 100644 --- a/server/src/test/java/io/druid/metadata/SQLMetadataStorageActionHandlerTest.java +++ b/server/src/test/java/io/druid/metadata/SQLMetadataStorageActionHandlerTest.java @@ -53,9 +53,9 @@ public void setUp() throws Exception final String lockTable = "locks"; - connector.createEntryTable(connector.getDBI(), entryTable); - connector.createLockTable(connector.getDBI(), lockTable, entryType); - connector.createLogTable(connector.getDBI(), logTable, entryType); + connector.createEntryTable(entryTable); + connector.createLockTable(lockTable, entryType); + connector.createLogTable(logTable, entryType); handler = new SQLMetadataStorageActionHandler<>(