Commit Graph

7138 Commits (30cb15a0d5a71b01195efb01285982c70fa1a2bb)
 

Author SHA1 Message Date
Andy Wilkinson 13635201ff Prevent JVM from exiting with 1 when main thread is only non-daemon
DevTools deliberately throws an uncaught exception on the main thread
as a safe way of causing it to stop processing. This exception is
caught and swallowed by an uncaught exception handler. Unfortunately,
this has the unwanted side-effect of causing the JVM to exit with 1
once all running threads are daemons.

Normally, this isn't a problem. Non-daemon threads, such as those
started by an embedded servlet container, will keep the JVM alive and
restarts of the application context will occur when the user makes to
their application. However, if the user adds DevTools to an
application that doesn't start any non-daemon threads, i.e. it starts,
runs, and then exits, it will exit with 1. This causes both
bootRun in Gradle and spring-boot:run in Maven to report that the
build has failed. While there's no benefit to using DevTools with an
application that behaves in this way, the side-effect of causing the
JVM to exit with 1 is unwanted.

This commit address the problem by updating the uncaught exception
handler to call System.exit(0) if the JVM is going to exit as a
result of the uncaught exception causing the main thread to die. In
other words, if the main thread was the only non-daemon thread, its
death as a result of the uncaught exception will now cause the JVM
to exit with 1 rather than 0. If there are other non-daemon threads
that will keep the JVM alive, the behaviour is unchanged.

Closes gh-5968
9 years ago
Stephane Nicoll 6574feea87 Document limitations of logging.pattern.*
Closes gh-5653
9 years ago
Andy Wilkinson ec7d6381aa Update RunMojo to fail when forked JVM returned non-zero exit code
Closes gh-6172
9 years ago
Andy Wilkinson 159ef8f189 Ensure that URL returned from ExplodedArchive.getURL() is encoded
Closes gh-5971
9 years ago
Andy Wilkinson c808de0021 Allow custom repackage task to be used without a global main class
Closes gh-5956
9 years ago
Andy Wilkinson 76cd45e76e Fix checkstyle violation: remove unused import 9 years ago
Andy Wilkinson 5c43a5b7dd Honour custom bean name generator for non-web applications
Closes gh-6160
9 years ago
Stephane Nicoll ed2586d38d Upgrade Apache HTTP components to 4.4.5
Closes gh-6165
9 years ago
Dave Syer e4b544bd39 Create PID_FOLDER if it doesn't exist
In fact the folder was already created if the app is running as
a different user, but not if running as the current user, so it
was just a question of moving one line out of an if block.

Fixes gh-5986
9 years ago
Phillip Webb b11457f5a2 Merge pull request #6118 from joshiste/1.3.x-liquibase-endpoint
* 1.3.x-liquibase-endpoint:
  Close connection after use in LiquibaseEndpoint
9 years ago
Johannes Edmeier e89063cc07 Close connection after use in LiquibaseEndpoint
Update LiquibaseEndpoint so that connections are closed and returned to
the pool after use.

Fixes gh-6118
9 years ago
Phillip Webb 452281ca8d Fix property detection in SpringApplicationBuilder
Update SpringApplicationBuilder so that properties of the form
`abc=d:e:f` are correctly parsed. Prior to this commit the `:` delimiter
would always be chosen over `=`, even if `=` occurred first.

Fixes gh-6121
9 years ago
Phillip Webb f27bdcb737 Prevent APT crashes on older Java versions
Update TypeUtils to guard against the use of older Java versions.
Both `Collection` and `Map` type lookups now fallback to generic free
versions of the classes.

Prior to this commit using `xmlbeans-maven-plugin` in combination with
Spring Boot's annotation processor could result in
`IllegalArgumentException: Incorrect number of type arguments`.

Fixes gh-6122
9 years ago
Phillip Webb a9b98cada5 Allow loading from package names without dots
Update BeanDefinitionLoader to support loading from package names that
do not contain dots.

Prior to this commit `new BeanDefinitionLoader(registry, "somepackage")`
would fail because "somepackage" exists and is a resource but does not
contain valid XML. Somewhat surprisingly the InputStream returned by
the resource actually contains the listing of files in the package.

Fixes gh-6126
9 years ago
Ivan Sopov 1528764194 Fix potential offset errors in BasicJsonParser
Update BasicJsonParser to fix potential exceptions if strings happen
to be empty.

Fixes gh-6136
9 years ago
Phillip Webb ed6f11d60d Polish 9 years ago
Stephane Nicoll ec4c8bf50d Merge pull request #6125 from vpavic:gh-6124
* pr/6125:
  Update DataSourceBuilder aliases
9 years ago
Vedran Pavic 6dde498b87 Update DataSourceBuilder aliases
This commit adds a `user` alias for the `username` property which permits
the use of `OracleDataSource`.

Closes gh-6124, gh-6027, gh-6125
9 years ago
Dave Syer 31fc1cc6f2 Update Spring OAuth to 2.0.10 9 years ago
Andy Wilkinson 1037239efc Upgrade to Dependency Management Plugin 0.5.7.RELEASE
Closes gh-6105
9 years ago
Andy Wilkinson 9bbdbae178 Merge pull request #6056 from Martin Lippert
* gh-6056:
  Check factory method metadata to avoid NPE in devtools condition
9 years ago
Martin Lippert efd541d26b Check factory method metadata to avoid NPE in devtools condition
Closes gh-6056
9 years ago
Andy Wilkinson f3e9f1e6e3 Polish FileSystemWatcher and improve its thread safety
- Limit shared state between FileSystemWatcher and the watching thread
- Use a private monitor rather than synchronizing on this
- Use a Runnable implementation rather than subclassing Thread
- Synchronize consistently when reading and writing state

Closes gh-6039
9 years ago
Andy Wilkinson 3772d9f937 Update JarURLConnection to only require file read permission
Previously, JarURLConnection didn't override getPermission(). This
meant that it required all permissions. This was at odds with the
Oracle JVM's concrete sun.net.www.protocol.jar.JarURLConnection which
overrides getPermission to return a FilePermission with the read
action for the path of the underlying jar.

This commit updates our JarURLConnection to align its behaviour with
sun.net.www.protocol.jar.JarURLConnection.

Closes gh-5411
9 years ago
Andy Wilkinson 28bd6d60c8 Revert "Upgrade to Tomcat 8.0.35"
This reverts commit 66e093ed0d. There's
a regression [1] in Tomcat 8.0.35 that causes it to throw an NPE when
it scans a jar file without a manifest. It's already been fixed [2].

See gh-6087

[1] https://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?annotate=1742274#l369
[2] https://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?annotate=1744197#l369
9 years ago
Andy Wilkinson 9ec4e5c74a Upgrade to Spring REST Docs 1.0.2.RELEASE
Closes gh-6090
9 years ago
Andy Wilkinson d0df8cbe51 Upgrade to HSQLDB 2.3.4
Closes gh-6089
9 years ago
Andy Wilkinson 055c318506 Upgrade to Jetty 9.2.17.v20160517
Closes gh-6088
9 years ago
Andy Wilkinson 66e093ed0d Upgrade to Tomcat 8.0.35
Closes gh-6087
9 years ago
Andy Wilkinson b2413850c4 Upgrade to Embedded Mongo 1.50.5
Closes gh-6086
9 years ago
Andy Wilkinson a5fdc05d82 Upgrade to H2 1.4.192
Closes gh-6085
9 years ago
Stephane Nicoll b49c6ca616 Fix link in doc
Closes gh-6033
9 years ago
Andy Wilkinson 9f425343ae Make FileSystemWatcherTests thread-safe
The list of changes is written to on one thread and read from on
another. Without some form of sychronization this is not thread-safe.

This commit makes changes a synchronized list which should guarantee
that the reading thread can see the changes made by the writing thread.
It also removes a redundant call to clear the list of changes at the
start of waitsForPollingInterval.

See gh-6038
9 years ago
Andy Wilkinson a98d1a41a4 Run Maven Plugin's integration tests when full profile is active
Closes gh-6036
9 years ago
Andy Wilkinson 275651e89a Skips Cassandra and Elasticsearch tests on Windows
Neither Cassandra nor Elasticsearch starts reliably on Windows. This
commit adds a custom class rule to the associated sample application
tests to skip them on Windows. A class rule is used rather than a
Unit assumption as we want to avoid starting Elasticsearch (done by
the application context) and Cassandra (done by a test execution
listener) and an assumption would be too late.
9 years ago
Andy Wilkinson ae89cb0355 Upgrade to Spring Integration 4.2.6.RELEASE
Closes gh-5949
9 years ago
Andy Wilkinson b07fa75664 Upgrade to jOOQ 3.7.4
Closes gh-5947
9 years ago
Andy Wilkinson 1b8ffe8f74 Upgrade to MySQL Java Connector 5.1.39
Closes gh-5946
9 years ago
Andy Wilkinson 5484000651 Upgrade to HikariCP 2.4.6
Closes gh-5945
9 years ago
Andy Wilkinson 4c65e5e704 Always handle quoted arguments correctly in the launch script
Previously, arguments passed to the script were handled in one way
if a service was being started using start-stop-daemon and in another
way if start-stop-daemon wasn’t available or the application is being
launched in run mode. This meant that quoted arguments were only 
handled correctly when the application was being started using
start-stop-daemon.

This commit updates the launch script so that argument handling is
the same across all three different way that the application can be
launched.

Closes gh-5942
9 years ago
Andy Wilkinson e561cc1997 Don't use a separate thread in the launcher to call app's main method
Using a separate thread to call the application's main method is
unnecessary – the context class loader of the current thread can be
updated instead – and makes exception and exit code handling more
complicated than it needs to be.

This commit updates the Launcher so that it calls the main method
runner using the current (main) thread. As a result, any exception
that's thrown will be caught by the JVM and result in a non-zero exit
code being returned from the process.

Closes gh-5922
9 years ago
Phillip Webb 7fb545d26c Polish 9 years ago
Andy Wilkinson aab65c8fcc Merge pull request #5884 from tfeiner
* gh-5884:
  Add tests for JooqExceptionTranslator
  Use JOOQ's Spring DB name during exception translation
9 years ago
Andy Wilkinson 1ab835a0f7 Add tests for JooqExceptionTranslator
See gh-5884
9 years ago
tfeiner 61cb18a69c Use JOOQ's Spring DB name during exception translation
The name of a JOOQ SQLDialect does not always match the name defined
in sql-error-codes.xml. For example, the Postgres translator was not
initialized correctly because in JOOQ the dialect is named
SQLDialect.POSTGRES, but in sql-error-codes.xml the bean is named
"PostgreSQL".

This commit updates the translator to use the dialects third-party
springDbName which ensures that it maps correctly to the entries in
sql-error-codes.xml.

Closes gh-5884
9 years ago
Stephane Nicoll 8cbbb577a0 Fixup version numbers following release 9 years ago
Spring Buildmaster 819a9574a6 Next Development Version 9 years ago
Stephane Nicoll 2cacc19c91 Polish
See gh-5901
9 years ago
Stephane Nicoll a4ba8f61c9 Backport 6dd8415
While working on gh-5309, a regression was introduced and fixed right the
way on master. Unfortunately, the fix wasn't applied to `1.3.x` as it
should have been.

This commit applies 6dd8415 to `1.3.x`

Closes gh-5901
9 years ago
Vedran Pavic 3891b242a3 Update launch script integration tests
- Use the latest Docker image for Ubuntu 14.04 LTS based tests
- Add Ubuntu 16.04 LTS based tests

Closes gh-5868
9 years ago