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 -----------

Reply via email to