diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpoint.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpoint.java index 11b086f6647..0c6a3ead12a 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpoint.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpoint.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,6 +38,7 @@ import org.springframework.util.StringUtils; * {@link Endpoint} to expose liquibase info. * * @author EddĂș MelĂ©ndez + * @author Dmitrii Sergeev * @since 1.3.0 */ @ConfigurationProperties(prefix = "endpoints.liquibase") @@ -65,9 +66,9 @@ public class LiquibaseEndpoint extends AbstractEndpoint> { DataSource dataSource = entry.getValue().getDataSource(); JdbcConnection connection = new JdbcConnection( dataSource.getConnection()); + Database database = null; try { - Database database = factory - .findCorrectDatabaseImplementation(connection); + database = factory.findCorrectDatabaseImplementation(connection); String defaultSchema = entry.getValue().getDefaultSchema(); if (StringUtils.hasText(defaultSchema)) { database.setDefaultSchemaName(defaultSchema); @@ -76,7 +77,12 @@ public class LiquibaseEndpoint extends AbstractEndpoint> { service.queryDatabaseChangeLogTable(database))); } finally { - connection.close(); + if (database != null) { + database.close(); + } + else { + connection.close(); + } } } catch (Exception ex) { diff --git a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpointTests.java b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpointTests.java index 2380079842c..4379cb14706 100644 --- a/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpointTests.java +++ b/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/LiquibaseEndpointTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2017 the original author or authors. + * Copyright 2012-2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,11 +16,15 @@ package org.springframework.boot.actuate.endpoint; +import java.sql.Connection; +import java.sql.SQLException; + +import javax.sql.DataSource; + import liquibase.integration.spring.SpringLiquibase; import org.junit.Test; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.boot.test.util.EnvironmentTestUtils; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -44,7 +48,20 @@ public class LiquibaseEndpointTests extends AbstractEndpointTests