This is an automated email from the ASF dual-hosted git repository. desruisseaux pushed a commit to branch geoapi-4.0 in repository https://gitbox.apache.org/repos/asf/sis.git
commit e93449f33ca7568da11e401e51cd031b62eeff9a Author: Martin Desruisseaux <martin.desruisse...@geomatys.com> AuthorDate: Fri Dec 6 11:49:27 2024 +0100 Document an extra step needed for a more complete shutdown of the system. --- .../main/org/apache/sis/setup/Configuration.java | 31 +++++++++++++++++----- settings.gradle.kts | 1 + 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/endorsed/src/org.apache.sis.util/main/org/apache/sis/setup/Configuration.java b/endorsed/src/org.apache.sis.util/main/org/apache/sis/setup/Configuration.java index a0f0fa7618..a3e2e10a2c 100644 --- a/endorsed/src/org.apache.sis.util/main/org/apache/sis/setup/Configuration.java +++ b/endorsed/src/org.apache.sis.util/main/org/apache/sis/setup/Configuration.java @@ -151,18 +151,35 @@ public final class Configuration { } /** - * Shutdowns the Apache SIS library. - * This method close database connections and stops daemon threads. - * <strong>The Apache SIS library shall not be used anymore after this method call.</strong> - * Any use of Apache SIS after this method call may cause undermined behavior. + * Shutdowns the Apache <abbr>SIS</abbr> library. + * This method closes database connections and stops the daemon threads that were started by <abbr>SIS</abbr>. + * <strong>The Apache <abbr>SIS</abbr> library shall not be used anymore after this method call.</strong> + * Any use of Apache <abbr>SIS</abbr> after this method call may have unexpected effects. * In particular, it may cause memory leaks. * * <h4>When to use</h4> - * This method should generally <strong>not</strong> be invoked, because Apache SIS registers itself - * a {@linkplain Runtime#addShutdownHook(Thread) shutdown hook} to the Java Virtual Machine. - * This method may be useful in environments that do not allow the use of shutdown hooks, + * This method should generally <strong>not</strong> be invoked, because Apache <abbr>SIS</abbr> registers + * itself a {@linkplain Runtime#addShutdownHook(Thread) shutdown hook} to the Java Virtual Machine. + * This method may be useful in embedded environments that do not allow the use of shutdown hooks, * or when waiting for the <abbr>JVM</abbr> shutdown is overly conservative. * + * <h4>Complete shutdown</h4> + * This method shutdowns only the databases used by Apache <abbr>SIS</abbr>. + * If Apache Derby is used for the <abbr>EPSG</abbr> database, some Derby daemon threads may still be running. + * Those daemons can be ignored in standalone applications, but may need to be stopped in embedded environments. + * A complete Derby shutdown can be requested with the following code: + * + * {@snippet lang="java" : + * Configuration.current().shutdown(); + * try { + * DriverManager.getConnection("jdbc:derby:;shutdown=true"); + * } catch (SQLException e) { + * // Expected exception as per Derby documentation. + * } + * } + * + * @see <a href="https://db.apache.org/derby/docs/10.15/devguide/tdevdvlp40464.html">Shutting down Derby</a> + * * @since 1.5 */ public void shutdown() { diff --git a/settings.gradle.kts b/settings.gradle.kts index 794ea37440..2c4a36a3d2 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -84,6 +84,7 @@ dependencyResolutionManagement { version("derby") { strictly("[10.0, 11.0[") prefer("10.15.2.0") // 10.15 is the last series compatible with JDK 11. + // If the derby version is updated, search for that version number in Javadoc. } // Derby vulnerabiliy: https://nvd.nist.gov/vuln/detail/CVE-2022-46337 // Fix would require an upgrade to Java 21.