This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git
The following commit(s) were added to refs/heads/master by this push:
new 455e94b Reimplement time tracking in AbandonedTrace with an Instant
instead of a long.
455e94b is described below
commit 455e94be02743958760b8788b0ed70e807ba363c
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Aug 13 15:00:26 2021 -0400
Reimplement time tracking in AbandonedTrace with an Instant instead of a
long.
Add and use AbandonedTrace#setLastUsed(Instant).
---
src/changes/changes.xml | 11 +++++++++
.../org/apache/commons/dbcp2/AbandonedTrace.java | 27 ++++++++++++++++++----
.../apache/commons/dbcp2/DelegatingConnection.java | 3 ++-
.../dbcp2/TestAbandonedBasicDataSource.java | 3 ++-
4 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 833f291..3a88650 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -60,6 +60,17 @@ The <action> type attribute can be add,update,fix,remove.
EvictionTimer
-->
<body>
+ <release version="2.10.0" date="2021-07-30" description="This is a minor
release, including bug fixes and enhancements.">
+ <!-- FIX -->
+ <action dev="ggregory" type="fix" due-to="Gary Gregory">
+ Reimplement time tracking in AbandonedTrace with an Instant instead of
a long.
+ </action>
+ <!-- ADDS -->
+ <action dev="ggregory" type="add" due-to="Gary Gregory">
+ Add and use AbandonedTrace#setLastUsed(Instant).
+ </action>
+ <!-- UPDATES -->
+ </release>
<release version="2.9.0" date="2021-07-30" description="This is a minor
release, including bug fixes and enhancements.">
<!-- ADDS -->
<action dev="ggregory" type="add" due-to="Gary Gregory">
diff --git a/src/main/java/org/apache/commons/dbcp2/AbandonedTrace.java
b/src/main/java/org/apache/commons/dbcp2/AbandonedTrace.java
index 7d244c5..1dfe713 100644
--- a/src/main/java/org/apache/commons/dbcp2/AbandonedTrace.java
+++ b/src/main/java/org/apache/commons/dbcp2/AbandonedTrace.java
@@ -17,6 +17,7 @@
package org.apache.commons.dbcp2;
import java.lang.ref.WeakReference;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
@@ -38,7 +39,7 @@ public class AbandonedTrace implements TrackedUse {
private final List<WeakReference<AbandonedTrace>> traceList = new
ArrayList<>();
/** Last time this connection was used. */
- private volatile long lastUsedMillis;
+ private volatile Instant lastUsedInstant = Instant.EPOCH;
/**
* Creates a new AbandonedTrace without config and without doing abandoned
tracing.
@@ -86,8 +87,13 @@ public class AbandonedTrace implements TrackedUse {
*/
@Override
public long getLastUsed() {
- return lastUsedMillis;
+ return lastUsedInstant.toEpochMilli();
}
+
+// @Override
+// public Instant getLastUsedInstant() {
+// return lastUsedInstant;
+// }
/**
* Gets a list of objects being traced by this object.
@@ -166,7 +172,18 @@ public class AbandonedTrace implements TrackedUse {
* Sets the time this object was last used to the current time in
milliseconds.
*/
protected void setLastUsed() {
- lastUsedMillis = System.currentTimeMillis();
+ lastUsedInstant = Instant.now();
+ }
+
+ /**
+ * Sets the instant this object was last used.
+ *
+ * @param lastUsedInstant
+ * instant.
+ * @since 2.10.0
+ */
+ protected void setLastUsed(final Instant lastUsedInstant) {
+ this.lastUsedInstant = lastUsedInstant;
}
/**
@@ -174,8 +191,10 @@ public class AbandonedTrace implements TrackedUse {
*
* @param lastUsedMillis
* time in milliseconds.
+ * @deprecated Use {@link #setLastUsed(Instant)}
*/
+ @Deprecated
protected void setLastUsed(final long lastUsedMillis) {
- this.lastUsedMillis = lastUsedMillis;
+ this.lastUsedInstant = Instant.ofEpochMilli(lastUsedMillis);
}
}
diff --git a/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java
b/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java
index db869cb..e9601b7 100644
--- a/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java
+++ b/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java
@@ -34,6 +34,7 @@ import java.sql.SQLXML;
import java.sql.Savepoint;
import java.sql.Statement;
import java.sql.Struct;
+import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -645,7 +646,7 @@ public class DelegatingConnection<C extends Connection>
extends AbandonedTrace i
throw new SQLExceptionList(thrownList);
}
}
- setLastUsed(0);
+ setLastUsed(Instant.EPOCH);
}
@SuppressWarnings("resource") // Caller is responsible for closing the
resource.
diff --git
a/src/test/java/org/apache/commons/dbcp2/TestAbandonedBasicDataSource.java
b/src/test/java/org/apache/commons/dbcp2/TestAbandonedBasicDataSource.java
index 6681e0f..7f4e2fe 100644
--- a/src/test/java/org/apache/commons/dbcp2/TestAbandonedBasicDataSource.java
+++ b/src/test/java/org/apache/commons/dbcp2/TestAbandonedBasicDataSource.java
@@ -29,6 +29,7 @@ import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
+import java.time.Instant;
import org.apache.commons.pool2.impl.GenericKeyedObjectPool;
import org.junit.jupiter.api.Assertions;
@@ -47,7 +48,7 @@ public class TestAbandonedBasicDataSource extends
TestBasicDataSource {
*/
private void assertAndReset(final DelegatingConnection<?> con) {
assertTrue(con.getLastUsed() > 0);
- con.setLastUsed(0);
+ con.setLastUsed(Instant.EPOCH);
}
// ---------- Abandoned Test -----------