Previously, LiquibaseEndpoint closed the JdbcConnection but did not
close the Database. When using a connection pool, this could leave the
underlying SQL Connection with its auto commit property set to false.
This commit updates LiquibaseEndpoint to close the Database. This
ensures that it resets that Connection's auto commit property to the
value that it had when the Database was configured to use the
Connection.
See gh-13559
Previously, if an HTTP request that used a templated URI was handled
by something other than Spring MVC, a potentially unbounded number of
metrics would be created. This happened because, in the absence of
Spring MVC's best matching pattern attribute, MetricsFilter would fall
back to using the request's path. If the handling route was templated,
MetricsFilter would be unaware and would record different metrics for
each different path, rather than a single metric for the matching
pattern.
This cimmit updates MetricsFilter so that it falls back to using
unmapped when Spring MVC's best matching pattern attribute is not
available. This ensures that an unbounded number of metrics will no
longer be created, at the cost of losing specific metrics for requests
that are not handled by Spring MVC and that do not use a templated
path.
Closes gh-5875
Log4J2 enables its shutdown hook by default. When the JVM is exiting,
this creates a race between logging that happens during the
application context being closed and Log4J2 being shut down such that
the logging is lost.
This commit updates SpringBootConfigurationFactory so that it
produces a custom sub-class of DefaultConfiguration that disables the
shutdown hook by default. In addition to solving the problem described
above, this also aligns the Log4J2 logging system with the
logging.register-shutdown-hook property which defaults to false.
Closes gh-11360
Previously, when a user had declared a custom MultipartResolver bean
that is a CommonsMultipartResolver, part resolution would fail. The
failure was occurring as the servlet container was consuming the parts
before CommonsMultipartResolver had a chance to read them. This was
happening because a MultipartConfigElement was being auto-configured.
This commit updates the multipart auto-configuration so that a
MultipartConfigElement is not auto-configured when there is a
CommonsMultipartResolver bean in the context.
Closes gh-7735
Previously, Slf4jLoggingSystem would install SLF4JBridgeHandler into
JUL but would only remove a single root handler that was a
ConsoleHandler. If there were was than one root handler or the single
root handler was of a different type, they would not be uninstalled.
When deploying an application to Tomcat, this led to duplicate log
messages appearing in Tomcat’s console output and to logging from
other application or Tomcat itself being routed into an
application-specific log file enabled using the logging.file
configuration property.
A secondary, related problem was that LogbackLoggingSystem installs a
LevelChangePropagator so that Logback’s log level configuration is
propagated into JUL. This meant that an individual Boot app with
custom log level configuration could change the log levels of Tomcat
itself and of any other applications that had been deployed to Tomcat
and use JUL.
This commit updates both Slf4jLoggingSystem and LogbackLoggingSystem
so that they only change JUL’s configuration if it hasn’t already been
customized. The configuration is deemed to have not been customised if
there’s a single root handler and its a console handler.
Closes gh-13470
Before 2.0.2, if profiles were activated via the environment using the
active and include profile property, profiles specified via the active
property would take precedence. This commit restores that behavior.
Fixes gh-13513