Commit 7ee3b287 authored by Andy Wilkinson's avatar Andy Wilkinson

Catch isEmbedded failure and treat database as not embedded

Fixes gh-26926
parent 7cd2d647
...@@ -21,6 +21,9 @@ import java.util.List; ...@@ -21,6 +21,9 @@ import java.util.List;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.jdbc.EmbeddedDatabaseConnection; import org.springframework.boot.jdbc.EmbeddedDatabaseConnection;
import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer; import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializer;
...@@ -38,6 +41,8 @@ import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; ...@@ -38,6 +41,8 @@ import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
*/ */
public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseInitializer { public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseInitializer {
private static final Log logger = LogFactory.getLog(DataSourceScriptDatabaseInitializer.class);
private final DataSource dataSource; private final DataSource dataSource;
/** /**
...@@ -61,7 +66,13 @@ public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseI ...@@ -61,7 +66,13 @@ public class DataSourceScriptDatabaseInitializer extends AbstractScriptDatabaseI
@Override @Override
protected boolean isEmbeddedDatabase() { protected boolean isEmbeddedDatabase() {
return EmbeddedDatabaseConnection.isEmbedded(this.dataSource); try {
return EmbeddedDatabaseConnection.isEmbedded(this.dataSource);
}
catch (Exception ex) {
logger.debug("Could not determine if datasource is embedded", ex);
return false;
}
} }
@Override @Override
......
...@@ -22,6 +22,7 @@ import javax.sql.DataSource; ...@@ -22,6 +22,7 @@ import javax.sql.DataSource;
import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.HikariDataSource;
import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializerTests; import org.springframework.boot.sql.init.AbstractScriptDatabaseInitializerTests;
...@@ -53,6 +54,13 @@ class DataSourceScriptDatabaseInitializerTests ...@@ -53,6 +54,13 @@ class DataSourceScriptDatabaseInitializerTests
this.standloneDataSource.close(); this.standloneDataSource.close();
} }
@Test
void whenDatabaseIsInaccessibleThenItIsAssumedNotToBeEmbedded() {
DataSourceScriptDatabaseInitializer initializer = new DataSourceScriptDatabaseInitializer(
new HikariDataSource(), new DatabaseInitializationSettings());
assertThat(initializer.isEmbeddedDatabase()).isFalse();
}
@Override @Override
protected DataSourceScriptDatabaseInitializer createEmbeddedDatabaseInitializer( protected DataSourceScriptDatabaseInitializer createEmbeddedDatabaseInitializer(
DatabaseInitializationSettings settings) { DatabaseInitializationSettings settings) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment