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);
}