diff --git a/CHANGELOG.md b/CHANGELOG.md index eb9cb195b..64dffac5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ ## Change log +### 9.0.9 (3/20/2024 - ) + +* mysql: updated and patched to 8.3.0, fixed CJException should be wrapped as SQLException + > make sure use "core.framework.mysql:mysql-connector-j:8.3.0-r2" + ### 9.0.8 (1/29/2024 - 3/7/2024) * kafka: update to 3.7.0 @@ -78,7 +83,7 @@ triggered VirtualThreads.park, make all other virtual threads which share same h * json: update jackson to 2.16.1 > refer to https://cowtowncoder.medium.com/jackson-2-16-rc1-overview-55dbb90c22d9 * mysql: updated and patched to 8.3.0 - > use "core.framework.mysql:mysql-connector-j:8.3.0-r1" + > use "core.framework.mysql:mysql-connector-j:8.3.0-r2" * db: support azure IAM auth > azure mysql flexible server supports IAM service account auth, to use access token instead of user/password > set db user to "iam/azure" to use azure iam auth diff --git a/build.gradle.kts b/build.gradle.kts index 1e764f5f5..64aec46d2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -7,7 +7,7 @@ apply(plugin = "project") subprojects { group = "core.framework" - version = "9.0.8" + version = "9.0.9" repositories { maven { diff --git a/core-ng/src/main/java/core/framework/internal/resource/Pool.java b/core-ng/src/main/java/core/framework/internal/resource/Pool.java index b5000baf7..147039ea0 100644 --- a/core-ng/src/main/java/core/framework/internal/resource/Pool.java +++ b/core-ng/src/main/java/core/framework/internal/resource/Pool.java @@ -94,7 +94,7 @@ private boolean validate(PoolItem item) { valid = false; } if (!valid) { - LOGGER.warn(errorCode("BROKEN_POOL_CONNECTION"), "connection is broken, try to reconnect immediately, pool=" + name); + LOGGER.warn(errorCode("BROKEN_POOL_CONNECTION"), "connection is broken, try to reconnect immediately, pool={}", name); closeItem(item); } return valid; @@ -128,13 +128,15 @@ private PoolItem waitNextAvailableItem() { private PoolItem createNewItem() { var watch = new StopWatch(); size.incrementAndGet(); + PoolItem item = null; try { - return new PoolItem<>(factory.get()); + item = new PoolItem<>(factory.get()); + return item; } catch (Throwable e) { size.getAndDecrement(); throw e; } finally { - LOGGER.debug("create new resource, pool={}, elapsed={}", name, watch.elapsed()); + LOGGER.debug("create new resource, pool={}, item={}, elapsed={}", name, item == null ? null : item.resource, watch.elapsed()); } } @@ -181,6 +183,7 @@ private void closeItem(PoolItem item) { } private void closeResource(PoolItem item) { + LOGGER.debug("close resource, pool={}, item={}", name, item.resource); try { item.resource.close(); } catch (Exception e) {