From d1c3d58973418151c0805b8e04c1e13b2b9b8f44 Mon Sep 17 00:00:00 2001 From: Venkata Kishore <61379748+venkata-kishore@users.noreply.github.com> Date: Wed, 15 Jan 2025 22:00:49 +0530 Subject: [PATCH] bug fix for idle time calculation of pool object (#7) --- .gitignore | 16 ++++++++-------- pom.xml | 2 +- .../java/today/bonfire/oss/sop/PooledObject.java | 11 ++++++----- .../today/bonfire/oss/sop/SimpleObjectPool.java | 4 +++- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index 00d2715..c62d111 100644 --- a/.gitignore +++ b/.gitignore @@ -130,14 +130,14 @@ msbuild.wrn # When using Gradle or Maven with auto-import, you should exclude module files, # since they will be recreated, and may cause churn. Uncomment if using # auto-import. - .idea/artifacts - .idea/compiler.xml - .idea/jarRepositories.xml - .idea/modules.xml - .idea/*.iml - .idea/modules - *.iml - *.ipr +.idea/artifacts +.idea/compiler.xml +.idea/jarRepositories.xml +.idea/modules.xml +.idea/*.iml +.idea/modules +*.iml +*.ipr # CMake cmake-build-*/ diff --git a/pom.xml b/pom.xml index 0093233..6a5f9d3 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ simple-object-pool - 2.3.1 + 2.3.2 jar diff --git a/src/main/java/today/bonfire/oss/sop/PooledObject.java b/src/main/java/today/bonfire/oss/sop/PooledObject.java index 39192af..a2aee08 100644 --- a/src/main/java/today/bonfire/oss/sop/PooledObject.java +++ b/src/main/java/today/bonfire/oss/sop/PooledObject.java @@ -10,12 +10,12 @@ */ public class PooledObject { private final T object; - private final long creationTime; - private volatile long lastBorrowedTime; - private volatile long idleFromTime; + private final long creationTime; + private volatile long lastBorrowedTime; + private volatile long idleFromTime; private volatile boolean broken; private volatile boolean borrowed; - private long timesBorrowed; + private long timesBorrowed; /** * Creates a new PooledObject wrapping the given object with a specified ID. @@ -29,6 +29,7 @@ public class PooledObject { this.object = object; object.setEntityId(id); this.creationTime = System.currentTimeMillis(); + this.idleFromTime = this.creationTime; this.borrowed = false; this.broken = false; // Initialize broken state } @@ -101,7 +102,7 @@ Long id() { * This method should be called when the object is taken from the pool. */ void borrow() { - borrowed = true; + borrowed = true; lastBorrowedTime = System.currentTimeMillis(); timesBorrowed++; } diff --git a/src/main/java/today/bonfire/oss/sop/SimpleObjectPool.java b/src/main/java/today/bonfire/oss/sop/SimpleObjectPool.java index 3c8837e..a8a256f 100644 --- a/src/main/java/today/bonfire/oss/sop/SimpleObjectPool.java +++ b/src/main/java/today/bonfire/oss/sop/SimpleObjectPool.java @@ -165,7 +165,9 @@ private void evictionRun() { "created {} ago, " + "idling for {}ms " + "used {} time(s), ", - pooledObject.id(), Duration.ofMillis(System.currentTimeMillis() - pooledObject.creationTime()), pooledObject.idlingTime(), pooledObject.borrowCount()); + pooledObject.id(), + Duration.ofMillis(System.currentTimeMillis() - pooledObject.creationTime()), + pooledObject.idlingTime(), pooledObject.borrowCount()); } catch (Exception e) { log.warn("Failed to destroy object with id {} in pool - {}", pooledObject.id(), config.poolName(), e); }