Hi Phil,

There can get some ambiguity for me when I read code like (unless you know
the API inside and out and use it on the daily):

somePoolThing.getFooTime()

Some of our methods return a Duration and others an Instant, so there, I
think the type in the method name makes sense. Then, for a bit of symmetry,
it's nice if the setter and getter names are the same (minus the set/get
prefix obv).

Gary


On Tue, Jul 18, 2023, 17:38 Phil Steitz <phil.ste...@gmail.com> wrote:

> I like changing the arguments to be Duration, but that has already been
> done.   What I am talking about is the method names, which is a second
> change that I don't think is necessary.  For example, unless I am missing
> something, before this commit, we had setTimeBetweenEvctionRuns(Duration)
> and that is being deprecated and changed to
> setDurationBetweenEvictionRuns(Duration).   I actually think the first name
> is better.  It is natural English and it is not a good practice to put type
> names in method names, IMO.  But more importantly, anyone who started using
> this will have to change - in my mind needlessly.  Am I misreading the
> diff?
>
> I would move to at least Java 11 for 3.0 and I would not keep JMX, but it
> would be good to ask on the user list if anyone is depending on it / would
> be seriously harmed if it goes away.  I think the Tomcat JMX may depend on
> it, but I am not sure what the state of play there is vis a vis JMX.
>
> Phil
>
> On Tue, Jul 18, 2023 at 2:16 PM Gary Gregory <garydgreg...@gmail.com>
> wrote:
>
> > This will make it smoother to port to 3.0 where there will be no long
> time
> > APIs, the Duration type is used throughout (unless Instant is
> appropriate).
> > I have most of the deprecated methods removed locally and will push in a
> > day or two.
> >
> > What remains:
> > - do we want to keep the JMX code?
> > - should 3.0 use Java 11 or 17?
> >
> > Gary
> >
> > On Tue, Jul 18, 2023, 16:41 Phil Steitz <phil.ste...@gmail.com> wrote:
> >
> > > Why exactly do we need to s/Time/Duration in all of the method names?
> > > Duration is a measure of time.  I don't get why this is necessary and
> it
> > > will force people to change (eventually).  I was +1 to get rid of the
> > > "millis" in the names, but this change seems needless to me.  Also,
> there
> > > are still quite a few places where the text of the javadoc refers to
> > > milliseconds.  Was this discussed before and I missed it?
> > >
> > > Phil
> > >
> > > On Tue, Jul 18, 2023 at 7:25 AM <ggreg...@apache.org> wrote:
> > >
> > > > This is an automated email from the ASF dual-hosted git repository.
> > > >
> > > > ggregory pushed a commit to branch POOL_2_X
> > > > in repository https://gitbox.apache.org/repos/asf/commons-pool.git
> > > >
> > > >
> > > > The following commit(s) were added to refs/heads/POOL_2_X by this
> push:
> > > >      new 9d2f4af1 Add Duration named APIs and deprecate old APIs.
> > > > 9d2f4af1 is described below
> > > >
> > > > commit 9d2f4af14dde121271c1bb862d4b1f236072eb2a
> > > > Author: Gary Gregory <garydgreg...@gmail.com>
> > > > AuthorDate: Tue Jul 18 10:25:03 2023 -0400
> > > >
> > > >     Add Duration named APIs and
> > > >     deprecate old APIs.
> > > >
> > > >     Eases migration to 3.0.0
> > > > ---
> > > >  .../commons/pool2/impl/BaseGenericObjectPool.java  | 102
> > > > +++++++++++++++++----
> > > >  .../commons/pool2/impl/BaseObjectPoolConfig.java   |  32 ++++++-
> > > >  .../commons/pool2/impl/GenericKeyedObjectPool.java |   2 +-
> > > >  .../commons/pool2/impl/GenericObjectPool.java      |   2 +-
> > > >  .../apache/commons/pool2/ObjectPoolIssue326.java   |   2 +
> > > >  .../java/org/apache/commons/pool2/PoolTest.java    |   2 +-
> > > >  .../pool2/impl/TestAbandonedKeyedObjectPool.java   |   2 +-
> > > >  .../pool2/impl/TestAbandonedObjectPool.java        |   2 +-
> > > >  .../pool2/impl/TestGenericKeyedObjectPool.java     |   5 +-
> > > >  .../commons/pool2/impl/TestGenericObjectPool.java  |   6 +-
> > > >  .../impl/TestGenericObjectPoolClassLoaders.java    |   4 +-
> > > >  .../TestGenericObjectPoolFactoryCreateFailure.java |   3 +-
> > > >  12 files changed, 131 insertions(+), 33 deletions(-)
> > > >
> > > > diff --git
> > > >
> > a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
> > > >
> > b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
> > > > index 4277ce86..fc95ba32 100644
> > > > ---
> > > >
> > a/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
> > > > +++
> > > >
> > b/src/main/java/org/apache/commons/pool2/impl/BaseGenericObjectPool.java
> > > > @@ -867,7 +867,7 @@ public abstract class BaseGenericObjectPool<T>
> > > extends
> > > > BaseObject implements Aut
> > > >      /**
> > > >       * Gets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > >       * no objects will be evicted from the pool due to idle time
> > alone.
> > > >       *
> > > >       * @return minimum amount of time an object may sit idle in the
> > pool
> > > > before
> > > > @@ -884,7 +884,7 @@ public abstract class BaseGenericObjectPool<T>
> > > extends
> > > > BaseObject implements Aut
> > > >      /**
> > > >       * Gets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > >       * no objects will be evicted from the pool due to idle time
> > alone.
> > > >       *
> > > >       * @return minimum amount of time an object may sit idle in the
> > pool
> > > > before
> > > > @@ -1017,7 +1017,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Gets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}),
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}),
> > > >       * with the extra condition that at least {@code minIdle} object
> > > >       * instances remain in the pool. This setting is overridden by
> > > >       * {@link #getMinEvictableIdleTime} (that is, if
> > > > @@ -1027,7 +1027,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       * @return minimum amount of time an object may sit idle in the
> > pool
> > > > before
> > > >       *         it is eligible for eviction if minIdle instances are
> > > > available
> > > >       *
> > > > -     * @see #setSoftMinEvictableIdle(Duration)
> > > > +     * @see #setSoftMinEvictableIdleDuration(Duration)
> > > >       * @since 2.11.0
> > > >       */
> > > >      public final Duration getSoftMinEvictableIdleDuration() {
> > > > @@ -1037,7 +1037,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Gets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}),
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}),
> > > >       * with the extra condition that at least {@code minIdle} object
> > > >       * instances remain in the pool. This setting is overridden by
> > > >       * {@link #getMinEvictableIdleTime} (that is, if
> > > > @@ -1047,7 +1047,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       * @return minimum amount of time an object may sit idle in the
> > pool
> > > > before
> > > >       *         it is eligible for eviction if minIdle instances are
> > > > available
> > > >       *
> > > > -     * @see #setSoftMinEvictableIdle(Duration)
> > > > +     * @see #setSoftMinEvictableIdleDuration(Duration)
> > > >       * @since 2.10.0
> > > >       * @deprecated Use {@link #getSoftMinEvictableIdleDuration}.
> > > >       */
> > > > @@ -1175,7 +1175,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Gets whether objects sitting idle in the pool will be
> validated
> > > by
> > > > the
> > > >       * idle object evictor (if any - see
> > > > -     * {@link #setTimeBetweenEvictionRuns(Duration)}). Validation is
> > > > performed
> > > > +     * {@link #setDurationBetweenEvictionRuns(Duration)}).
> Validation
> > is
> > > > performed
> > > >       * by the {@code validateObject()} method of the factory
> > associated
> > > >       * with the pool. If the object fails to validate, it will be
> > > removed
> > > > from
> > > >       * the pool and destroyed.
> > > > @@ -1369,9 +1369,9 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >          setTestOnReturn(config.getTestOnReturn());
> > > >          setTestWhileIdle(config.getTestWhileIdle());
> > > >
> setNumTestsPerEvictionRun(config.getNumTestsPerEvictionRun());
> > > > -        setMinEvictableIdle(config.getMinEvictableIdleDuration());
> > > > -
> > > > setTimeBetweenEvictionRuns(config.getDurationBetweenEvictionRuns());
> > > > -
> > > setSoftMinEvictableIdle(config.getSoftMinEvictableIdleDuration());
> > > > +
> > > setMinEvictableIdleDuration(config.getMinEvictableIdleDuration());
> > > > +
> > > >
> > setDurationBetweenEvictionRuns(config.getDurationBetweenEvictionRuns());
> > > > +
> > > >
> > >
> >
> setSoftMinEvictableIdleDuration(config.getSoftMinEvictableIdleDuration());
> > > >          final EvictionPolicy<T> policy = config.getEvictionPolicy();
> > > >          if (policy == null) {
> > > >              // Use the class name (pre-2.6.0 compatible)
> > > > @@ -1383,6 +1383,24 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >
> > > >
> setEvictorShutdownTimeout(config.getEvictorShutdownTimeoutDuration());
> > > >      }
> > > >
> > > > +    /**
> > > > +     * Sets the number of milliseconds to sleep between runs of the
> > idle
> > > > object evictor thread.
> > > > +     * <ul>
> > > > +     * <li>When positive, the idle object evictor thread
> starts.</li>
> > > > +     * <li>When non-positive, no idle object evictor thread
> runs.</li>
> > > > +     * </ul>
> > > > +     *
> > > > +     * @param timeBetweenEvictionRuns
> > > > +     *            duration to sleep between evictor runs
> > > > +     *
> > > > +     * @see #getDurationBetweenEvictionRuns()
> > > > +     * @since 2.12.0
> > > > +     */
> > > > +    public final void setDurationBetweenEvictionRuns(final Duration
> > > > timeBetweenEvictionRuns) {
> > > > +        this.durationBetweenEvictionRuns =
> > > > PoolImplUtils.nonNull(timeBetweenEvictionRuns,
> > > > BaseObjectPoolConfig.DEFAULT_DURATION_BETWEEN_EVICTION_RUNS);
> > > > +        startEvictor(this.durationBetweenEvictionRuns);
> > > > +    }
> > > > +
> > > >      /**
> > > >       * Sets the eviction policy for this pool.
> > > >       *
> > > > @@ -1585,7 +1603,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Sets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > >       * no objects will be evicted from the pool due to idle time
> > alone.
> > > >       *
> > > >       * @param minEvictableIdleTime
> > > > @@ -1595,7 +1613,9 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       * @see #getMinEvictableIdleTime
> > > >       * @see #setTimeBetweenEvictionRuns
> > > >       * @since 2.11.0
> > > > +     * @deprecated Use {@link
> #setMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > > +    @Deprecated
> > > >      public final void setMinEvictableIdle(final Duration
> > > > minEvictableIdleTime) {
> > > >          this.minEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(minEvictableIdleTime,
> > > > BaseObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_DURATION);
> > > >      }
> > > > @@ -1603,7 +1623,25 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Sets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > > +     * no objects will be evicted from the pool due to idle time
> > alone.
> > > > +     *
> > > > +     * @param minEvictableIdleTime
> > > > +     *            minimum amount of time an object may sit idle in
> the
> > > > pool
> > > > +     *            before it is eligible for eviction
> > > > +     *
> > > > +     * @see #getMinEvictableIdleTime
> > > > +     * @see #setTimeBetweenEvictionRuns
> > > > +     * @since 2.12.0
> > > > +     */
> > > > +    public final void setMinEvictableIdleDuration(final Duration
> > > > minEvictableIdleTime) {
> > > > +        this.minEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(minEvictableIdleTime,
> > > > BaseObjectPoolConfig.DEFAULT_MIN_EVICTABLE_IDLE_DURATION);
> > > > +    }
> > > > +
> > > > +    /**
> > > > +     * Sets the minimum amount of time an object may sit idle in the
> > > pool
> > > > +     * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}). When
> > > > non-positive,
> > > >       * no objects will be evicted from the pool due to idle time
> > alone.
> > > >       *
> > > >       * @param minEvictableIdleTime
> > > > @@ -1613,7 +1651,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       * @see #getMinEvictableIdleTime
> > > >       * @see #setTimeBetweenEvictionRuns
> > > >       * @since 2.10.0
> > > > -     * @deprecated Use {@link #setMinEvictableIdle(Duration)}.
> > > > +     * @deprecated Use {@link
> #setMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > >      @Deprecated
> > > >      public final void setMinEvictableIdleTime(final Duration
> > > > minEvictableIdleTime) {
> > > > @@ -1662,7 +1700,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Sets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}),
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}),
> > > >       * with the extra condition that at least {@code minIdle} object
> > > >       * instances remain in the pool. This setting is overridden by
> > > >       * {@link #getMinEvictableIdleTime} (that is, if
> > > > @@ -1676,7 +1714,9 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       *
> > > >       * @see #getSoftMinEvictableIdleTimeMillis
> > > >       * @since 2.11.0
> > > > +     * @deprecated Use {@link
> > > #setSoftMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > > +    @Deprecated
> > > >      public final void setSoftMinEvictableIdle(final Duration
> > > > softMinEvictableIdleTime) {
> > > >          this.softMinEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(softMinEvictableIdleTime,
> > > > BaseObjectPoolConfig.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_DURATION);
> > > >      }
> > > > @@ -1684,7 +1724,29 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Sets the minimum amount of time an object may sit idle in the
> > > pool
> > > >       * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > -     * see {@link #setTimeBetweenEvictionRuns(Duration)}),
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}),
> > > > +     * with the extra condition that at least {@code minIdle} object
> > > > +     * instances remain in the pool. This setting is overridden by
> > > > +     * {@link #getMinEvictableIdleTime} (that is, if
> > > > +     * {@link #getMinEvictableIdleTime} is positive, then
> > > > +     * {@link #getSoftMinEvictableIdleTime} is ignored).
> > > > +     *
> > > > +     * @param softMinEvictableIdleTime
> > > > +     *            minimum amount of time an object may sit idle in
> the
> > > > pool
> > > > +     *            before it is eligible for eviction if minIdle
> > > instances
> > > > are
> > > > +     *            available
> > > > +     *
> > > > +     * @see #getSoftMinEvictableIdleTimeMillis
> > > > +     * @since 2.12.0
> > > > +     */
> > > > +    public final void setSoftMinEvictableIdleDuration(final Duration
> > > > softMinEvictableIdleTime) {
> > > > +        this.softMinEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(softMinEvictableIdleTime,
> > > > BaseObjectPoolConfig.DEFAULT_SOFT_MIN_EVICTABLE_IDLE_DURATION);
> > > > +    }
> > > > +
> > > > +    /**
> > > > +     * Sets the minimum amount of time an object may sit idle in the
> > > pool
> > > > +     * before it is eligible for eviction by the idle object evictor
> > (if
> > > > any -
> > > > +     * see {@link #setDurationBetweenEvictionRuns(Duration)}),
> > > >       * with the extra condition that at least {@code minIdle} object
> > > >       * instances remain in the pool. This setting is overridden by
> > > >       * {@link #getMinEvictableIdleTime} (that is, if
> > > > @@ -1698,7 +1760,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       *
> > > >       * @see #getSoftMinEvictableIdleTimeMillis
> > > >       * @since 2.10.0
> > > > -     * @deprecated Use {@link #setSoftMinEvictableIdle(Duration)}.
> > > > +     * @deprecated Use {@link
> > > #setSoftMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > >      @Deprecated
> > > >      public final void setSoftMinEvictableIdleTime(final Duration
> > > > softMinEvictableIdleTime) {
> > > > @@ -1721,7 +1783,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       *            available
> > > >       *
> > > >       * @see #getSoftMinEvictableIdleTimeMillis
> > > > -     * @deprecated Use {@link #setSoftMinEvictableIdle(Duration)}.
> > > > +     * @deprecated Use {@link
> > > #setSoftMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > >      @Deprecated
> > > >      public final void setSoftMinEvictableIdleTimeMillis(final long
> > > > softMinEvictableIdleTimeMillis) {
> > > > @@ -1797,7 +1859,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >      /**
> > > >       * Sets whether objects sitting idle in the pool will be
> validated
> > > by
> > > > the
> > > >       * idle object evictor (if any - see
> > > > -     * {@link #setTimeBetweenEvictionRuns(Duration)}). Validation is
> > > > performed
> > > > +     * {@link #setDurationBetweenEvictionRuns(Duration)}).
> Validation
> > is
> > > > performed
> > > >       * by the {@code validateObject()} method of the factory
> > associated
> > > >       * with the pool. If the object fails to validate, it will be
> > > removed
> > > > from
> > > >       * the pool and destroyed.  Note that setting this property has
> no
> > > > effect
> > > > @@ -1826,7 +1888,9 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       *
> > > >       * @see #getDurationBetweenEvictionRuns()
> > > >       * @since 2.10.0
> > > > +     * @deprecated Use {@link
> > > #setDurationBetweenEvictionRuns(Duration)}.
> > > >       */
> > > > +    @Deprecated
> > > >      public final void setTimeBetweenEvictionRuns(final Duration
> > > > timeBetweenEvictionRuns) {
> > > >          this.durationBetweenEvictionRuns =
> > > > PoolImplUtils.nonNull(timeBetweenEvictionRuns,
> > > > BaseObjectPoolConfig.DEFAULT_DURATION_BETWEEN_EVICTION_RUNS);
> > > >          startEvictor(this.durationBetweenEvictionRuns);
> > > > @@ -1843,7 +1907,7 @@ public abstract class BaseGenericObjectPool<T>
> > > > extends BaseObject implements Aut
> > > >       *            number of milliseconds to sleep between evictor
> runs
> > > >       *
> > > >       * @see #getDurationBetweenEvictionRuns()
> > > > -     * @deprecated Use {@link
> #setTimeBetweenEvictionRuns(Duration)}.
> > > > +     * @deprecated Use {@link
> > > #setDurationBetweenEvictionRuns(Duration)}.
> > > >       */
> > > >      @Deprecated
> > > >      public final void setTimeBetweenEvictionRunsMillis(final long
> > > > timeBetweenEvictionRunsMillis) {
> > > > diff --git
> > > >
> a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
> > > >
> b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
> > > > index 101e17e9..7c72fa26 100644
> > > > ---
> > > a/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
> > > > +++
> > > b/src/main/java/org/apache/commons/pool2/impl/BaseObjectPoolConfig.java
> > > > @@ -762,6 +762,18 @@ public abstract class BaseObjectPoolConfig<T>
> > > extends
> > > > BaseObject implements Clon
> > > >          setMaxWait(Duration.ofMillis(maxWaitMillis));
> > > >      }
> > > >
> > > > +    /**
> > > > +     * Sets the value for the {@code minEvictableIdleTime}
> > configuration
> > > > attribute for pools created with this configuration instance.
> > > > +     *
> > > > +     * @param minEvictableIdleTime The new setting of {@code
> > > > minEvictableIdleTime} for this configuration instance
> > > > +     * @see GenericObjectPool#getMinEvictableIdleDuration()
> > > > +     * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
> > > > +     * @since 2.12.0
> > > > +     */
> > > > +    public void setMinEvictableIdleDuration(final Duration
> > > > minEvictableIdleTime) {
> > > > +        this.minEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(minEvictableIdleTime,
> > > > DEFAULT_MIN_EVICTABLE_IDLE_TIME);
> > > > +    }
> > > > +
> > > >      /**
> > > >       * Sets the value for the {@code minEvictableIdleTime}
> > configuration
> > > > attribute for pools created with this configuration instance.
> > > >       *
> > > > @@ -769,7 +781,9 @@ public abstract class BaseObjectPoolConfig<T>
> > extends
> > > > BaseObject implements Clon
> > > >       * @see GenericObjectPool#getMinEvictableIdleDuration()
> > > >       * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
> > > >       * @since 2.10.0
> > > > +     * @deprecated Use {@link
> #setMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > > +    @Deprecated
> > > >      public void setMinEvictableIdleTime(final Duration
> > > > minEvictableIdleTime) {
> > > >          this.minEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(minEvictableIdleTime,
> > > > DEFAULT_MIN_EVICTABLE_IDLE_TIME);
> > > >      }
> > > > @@ -780,7 +794,7 @@ public abstract class BaseObjectPoolConfig<T>
> > extends
> > > > BaseObject implements Clon
> > > >       * @param minEvictableIdleTimeMillis The new setting of {@code
> > > > minEvictableIdleTime} for this configuration instance
> > > >       * @see GenericObjectPool#getMinEvictableIdleDuration()
> > > >       * @see GenericKeyedObjectPool#getMinEvictableIdleDuration()
> > > > -     * @deprecated Use {@link #setMinEvictableIdleTime(Duration)}.
> > > > +     * @deprecated Use {@link
> #setMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > >      @Deprecated
> > > >      public void setMinEvictableIdleTimeMillis(final long
> > > > minEvictableIdleTimeMillis) {
> > > > @@ -798,6 +812,18 @@ public abstract class BaseObjectPoolConfig<T>
> > > extends
> > > > BaseObject implements Clon
> > > >          this.numTestsPerEvictionRun = numTestsPerEvictionRun;
> > > >      }
> > > >
> > > > +    /**
> > > > +     * Sets the value for the {@code softMinEvictableIdleTime}
> > > > configuration attribute for pools created with this configuration
> > > instance.
> > > > +     *
> > > > +     * @param softMinEvictableIdleTime The new setting of {@code
> > > > softMinEvictableIdleTime} for this configuration instance
> > > > +     * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
> > > > +     * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
> > > > +     * @since 2.12.0
> > > > +     */
> > > > +    public void setSoftMinEvictableIdleDuration(final Duration
> > > > softMinEvictableIdleTime) {
> > > > +        this.softMinEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(softMinEvictableIdleTime,
> > > > DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME);
> > > > +    }
> > > > +
> > > >      /**
> > > >       * Sets the value for the {@code softMinEvictableIdleTime}
> > > > configuration attribute for pools created with this configuration
> > > instance.
> > > >       *
> > > > @@ -805,7 +831,9 @@ public abstract class BaseObjectPoolConfig<T>
> > extends
> > > > BaseObject implements Clon
> > > >       * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
> > > >       * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
> > > >       * @since 2.10.0
> > > > +     * @deprecated Use {@link
> > > #setSoftMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > > +    @Deprecated
> > > >      public void setSoftMinEvictableIdleTime(final Duration
> > > > softMinEvictableIdleTime) {
> > > >          this.softMinEvictableIdleDuration =
> > > > PoolImplUtils.nonNull(softMinEvictableIdleTime,
> > > > DEFAULT_SOFT_MIN_EVICTABLE_IDLE_TIME);
> > > >      }
> > > > @@ -816,7 +844,7 @@ public abstract class BaseObjectPoolConfig<T>
> > extends
> > > > BaseObject implements Clon
> > > >       * @param softMinEvictableIdleTimeMillis The new setting of
> {@code
> > > > softMinEvictableIdleTime} for this configuration instance
> > > >       * @see GenericObjectPool#getSoftMinEvictableIdleDuration()
> > > >       * @see GenericKeyedObjectPool#getSoftMinEvictableIdleDuration()
> > > > -     * @deprecated Use {@link
> #setSoftMinEvictableIdleTime(Duration)}.
> > > > +     * @deprecated Use {@link
> > > #setSoftMinEvictableIdleDuration(Duration)}.
> > > >       */
> > > >      @Deprecated
> > > >      public void setSoftMinEvictableIdleTimeMillis(final long
> > > > softMinEvictableIdleTimeMillis) {
> > > > diff --git
> > > >
> > a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
> > > >
> > b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
> > > > index eb1b24c9..2ceea0f5 100644
> > > > ---
> > > >
> > a/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
> > > > +++
> > > >
> > b/src/main/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java
> > > > @@ -1678,7 +1678,7 @@ public class GenericKeyedObjectPool<K, T>
> extends
> > > > BaseGenericObjectPool<T>
> > > >       *
> > > >       * @see #getMinIdlePerKey()
> > > >       * @see #getMaxIdlePerKey()
> > > > -     * @see #setTimeBetweenEvictionRuns(Duration)
> > > > +     * @see #setDurationBetweenEvictionRuns(Duration)
> > > >       */
> > > >      public void setMinIdlePerKey(final int minIdlePerKey) {
> > > >          this.minIdlePerKey = minIdlePerKey;
> > > > diff --git
> > > > a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
> > > > b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
> > > > index 2de037e8..b638da77 100644
> > > > ---
> > a/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
> > > > +++
> > b/src/main/java/org/apache/commons/pool2/impl/GenericObjectPool.java
> > > > @@ -858,7 +858,7 @@ public class GenericObjectPool<T> extends
> > > > BaseGenericObjectPool<T>
> > > >       *
> > > >       * @see #setMinIdle(int)
> > > >       * @see #setMaxIdle(int)
> > > > -     * @see #setTimeBetweenEvictionRuns(Duration)
> > > > +     * @see #setDurationBetweenEvictionRuns(Duration)
> > > >       */
> > > >      @Override
> > > >      public int getMinIdle() {
> > > > diff --git
> > > > a/src/test/java/org/apache/commons/pool2/ObjectPoolIssue326.java
> > > > b/src/test/java/org/apache/commons/pool2/ObjectPoolIssue326.java
> > > > index d49e3ce2..cf864617 100644
> > > > --- a/src/test/java/org/apache/commons/pool2/ObjectPoolIssue326.java
> > > > +++ b/src/test/java/org/apache/commons/pool2/ObjectPoolIssue326.java
> > > > @@ -118,7 +118,9 @@ public final class ObjectPoolIssue326 {
> > > >          poolConfig.setLifo(true);
> > > >          poolConfig.setFairness(true);
> > > >          poolConfig.setMaxWait(Duration.ofSeconds(30));
> > > > +
> poolConfig.setMinEvictableIdleDuration(Duration.ofMillis(-1));
> > > >          poolConfig.setMinEvictableIdleTime(Duration.ofMillis(-1));
> > > > +
> > > poolConfig.setSoftMinEvictableIdleDuration(Duration.ofMillis(-1));
> > > >
> poolConfig.setSoftMinEvictableIdleTime(Duration.ofMillis(-1));
> > > >          poolConfig.setNumTestsPerEvictionRun(1);
> > > >          poolConfig.setTestOnCreate(false);
> > > > diff --git a/src/test/java/org/apache/commons/pool2/PoolTest.java
> > > > b/src/test/java/org/apache/commons/pool2/PoolTest.java
> > > > index 973dbc58..7ecfcd18 100644
> > > > --- a/src/test/java/org/apache/commons/pool2/PoolTest.java
> > > > +++ b/src/test/java/org/apache/commons/pool2/PoolTest.java
> > > > @@ -79,7 +79,7 @@ public class PoolTest {
> > > >
> > > >  pool.setTimeBetweenEvictionRunsMillis(EVICTION_PERIOD_IN_MILLIS);
> > > >              assertEquals(EVICTION_PERIOD_IN_MILLIS,
> > > > pool.getDurationBetweenEvictionRuns().toMillis());
> > > >              assertEquals(EVICTION_PERIOD_IN_MILLIS,
> > > > pool.getTimeBetweenEvictionRuns().toMillis());
> > > > -
> > > >
> > >
> >
> pool.setTimeBetweenEvictionRuns(Duration.ofMillis(EVICTION_PERIOD_IN_MILLIS));
> > > > +
> > > >
> > >
> >
> pool.setDurationBetweenEvictionRuns(Duration.ofMillis(EVICTION_PERIOD_IN_MILLIS));
> > > >              assertEquals(EVICTION_PERIOD_IN_MILLIS,
> > > > pool.getTimeBetweenEvictionRuns().toMillis());
> > > >              pool.addObject();
> > > >              try {
> > > > diff --git
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java
> > > > index fb343f45..aa09ffb2 100644
> > > > ---
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java
> > > > +++
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedKeyedObjectPool.java
> > > > @@ -205,7 +205,7 @@ public class TestAbandonedKeyedObjectPool {
> > > >          final int n = 10;
> > > >          pool.setMaxTotal(n);
> > > >          pool.setBlockWhenExhausted(false);
> > > > -        pool.setTimeBetweenEvictionRuns(Duration.ofMillis(250));
> > > > +        pool.setDurationBetweenEvictionRuns(Duration.ofMillis(250));
> > > >          PooledTestObject pooledObj = null;
> > > >          final Integer key = 0;
> > > >          for (int i = 0; i < 5; i++) {
> > > > diff --git
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
> > > > index 4fee6142..1f13de22 100644
> > > > ---
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
> > > > +++
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestAbandonedObjectPool.java
> > > > @@ -286,7 +286,7 @@ public class TestAbandonedObjectPool {
> > > >          final int n = 10;
> > > >          pool.setMaxTotal(n);
> > > >          pool.setBlockWhenExhausted(false);
> > > > -        pool.setTimeBetweenEvictionRuns(Duration.ofMillis(500));
> > > > +        pool.setDurationBetweenEvictionRuns(Duration.ofMillis(500));
> > > >          PooledTestObject obj = null;
> > > >          for (int i = 0; i < 5; i++) {
> > > >              obj = pool.borrowObject();
> > > > diff --git
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
> > > > index 23dc741f..ff24933a 100644
> > > > ---
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
> > > > +++
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestGenericKeyedObjectPool.java
> > > > @@ -1426,6 +1426,7 @@ public class TestGenericKeyedObjectPool extends
> > > > AbstractTestKeyedObjectPool {
> > > >          config.setMinIdlePerKey(minIdle);
> > > >          config.setMaxTotal(maxTotal);
> > > >          config.setMaxWait(maxWaitDuration);
> > > > +
> > > >
> > >
> >
> config.setMinEvictableIdleDuration(Duration.ofMillis(minEvictableIdleTimeMillis));
> > > >
> > > >
> > >
> >
> config.setMinEvictableIdleTime(Duration.ofMillis(minEvictableIdleTimeMillis));
> > > >          config.setNumTestsPerEvictionRun(numTestsPerEvictionRun);
> > > >          config.setTestOnBorrow(testOnBorrow);
> > > > @@ -1463,7 +1464,7 @@ public class TestGenericKeyedObjectPool extends
> > > > AbstractTestKeyedObjectPool {
> > > >      public void testContructorEvictionConfig() throws Exception {
> > > >          final GenericKeyedObjectPoolConfig<String> config = new
> > > > GenericKeyedObjectPoolConfig<>();
> > > >          config.setTimeBetweenEvictionRuns(Duration.ofMillis(500));
> > > > -        config.setMinEvictableIdleTime(Duration.ofMillis(50));
> > > > +        config.setMinEvictableIdleDuration(Duration.ofMillis(50));
> > > >          config.setNumTestsPerEvictionRun(5);
> > > >          try (final GenericKeyedObjectPool<String, String> p = new
> > > > GenericKeyedObjectPool<>(simpleFactory, config)) {
> > > >              for (int i = 0; i < 5; i++) {
> > > > @@ -1501,7 +1502,7 @@ public class TestGenericKeyedObjectPool extends
> > > > AbstractTestKeyedObjectPool {
> > > >          gkoPool.setMaxTotalPerKey(500);
> > > >          gkoPool.setNumTestsPerEvictionRun(100);
> > > >          gkoPool.setMinEvictableIdleTime(Duration.ofMillis(250));
> > > > -        gkoPool.setTimeBetweenEvictionRuns(Duration.ofMillis(500));
> > > > +
> > gkoPool.setDurationBetweenEvictionRuns(Duration.ofMillis(500));
> > > >
> > > >          final String[] active = new String[500];
> > > >          for(int i=0;i<500;i++) {
> > > > diff --git
> > > >
> > a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> > > >
> > b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> > > > index 01a1945b..521d7c54 100644
> > > > ---
> > > >
> > a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> > > > +++
> > > >
> > b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPool.java
> > > > @@ -648,6 +648,7 @@ public class TestGenericObjectPool extends
> > > > TestBaseObjectPool {
> > > >
> > > >      private void checkEvict(final boolean lifo) throws Exception {
> > > >          // yea this is hairy but it tests all the code paths in
> > > > GOP.evict()
> > > > +
> > > >
> > genericObjectPool.setSoftMinEvictableIdleDuration(Duration.ofMillis(10));
> > > >
> > > genericObjectPool.setSoftMinEvictableIdle(Duration.ofMillis(10));
> > > >
> > > >
> genericObjectPool.setSoftMinEvictableIdleTime(Duration.ofMillis(10));
> > > >          genericObjectPool.setMinIdle(2);
> > > > @@ -978,7 +979,7 @@ public class TestGenericObjectPool extends
> > > > TestBaseObjectPool {
> > > >          final GenericObjectPoolConfig<String> config = new
> > > > GenericObjectPoolConfig<>();
> > > >          config.setJmxEnabled(false);
> > > >          GenericObjectPool<String> abandoned = new
> > > > GenericObjectPool<>(simpleFactory, config);
> > > > -
> abandoned.setTimeBetweenEvictionRuns(Duration.ofMillis(100));
> > //
> > > > Starts evictor
> > > > +
> > > abandoned.setDurationBetweenEvictionRuns(Duration.ofMillis(100));
> > > > // Starts evictor
> > > >          assertEquals(abandoned.getRemoveAbandonedTimeout(),
> > > > abandoned.getRemoveAbandonedTimeoutDuration().getSeconds());
> > > >
> > > >          // This is ugly, but forces GC to hit the pool
> > > > @@ -1687,6 +1688,7 @@ public class TestGenericObjectPool extends
> > > > TestBaseObjectPool {
> > > >              timePool.setMaxIdle(5);
> > > >              timePool.setMaxTotal(5);
> > > >              timePool.setNumTestsPerEvictionRun(5);
> > > > +
> > timePool.setMinEvictableIdleDuration(Duration.ofSeconds(3));
> > > >              timePool.setMinEvictableIdle(Duration.ofSeconds(3));
> > > >              timePool.setMinEvictableIdleTime(Duration.ofSeconds(3));
> > > >
> > > >
> > timePool.setSoftMinEvictableIdleTime(TestConstants.ONE_SECOND_DURATION);
> > > > @@ -2703,7 +2705,7 @@ public class TestGenericObjectPool extends
> > > > TestBaseObjectPool {
> > > >          expected.setMaxTotal(2);
> > > >          expected.setMaxIdle(3);
> > > >          expected.setMaxWait(Duration.ofMillis(5));
> > > > -        expected.setMinEvictableIdleTime(Duration.ofMillis(7L));
> > > > +        expected.setMinEvictableIdleDuration(Duration.ofMillis(7L));
> > > >          expected.setNumTestsPerEvictionRun(9);
> > > >          expected.setTestOnCreate(true);
> > > >          expected.setTestOnBorrow(true);
> > > > diff --git
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
> > > > index 4e40b358..851b741b 100644
> > > > ---
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
> > > > +++
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolClassLoaders.java
> > > > @@ -83,7 +83,7 @@ public class TestGenericObjectPoolClassLoaders {
> > > >              final CustomClassLoaderObjectFactory factory1 = new
> > > > CustomClassLoaderObjectFactory(1);
> > > >              try (final GenericObjectPool<URL> pool1 = new
> > > > GenericObjectPool<>(factory1)) {
> > > >                  pool1.setMinIdle(1);
> > > > -
> > > pool1.setTimeBetweenEvictionRuns(Duration.ofMillis(100));
> > > > +
> > > > pool1.setDurationBetweenEvictionRuns(Duration.ofMillis(100));
> > > >                  int counter = 0;
> > > >                  while (counter < 50 && pool1.getNumIdle() != 1) {
> > > >                      Thread.sleep(100);
> > > > @@ -101,7 +101,7 @@ public class TestGenericObjectPoolClassLoaders {
> > > >                          assertEquals(1, pool2.getNumIdle(), "Wrong
> > > number
> > > > of idle objects in pool2");
> > > >                          pool2.clear();
> > > >
> > > > -
> > > > pool2.setTimeBetweenEvictionRuns(Duration.ofMillis(100));
> > > > +
> > > > pool2.setDurationBetweenEvictionRuns(Duration.ofMillis(100));
> > > >
> > > >                          counter = 0;
> > > >                          while (counter < 50 && pool2.getNumIdle() !=
> > 1)
> > > {
> > > > diff --git
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java
> > > > index 6bb1b6f4..6d965414 100644
> > > > ---
> > > >
> > >
> >
> a/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java
> > > > +++
> > > >
> > >
> >
> b/src/test/java/org/apache/commons/pool2/impl/TestGenericObjectPoolFactoryCreateFailure.java
> > > > @@ -110,7 +110,8 @@ public class
> > > TestGenericObjectPoolFactoryCreateFailure
> > > > {
> > > >          config.setTestWhileIdle(false);
> > > >          config.setTimeBetweenEvictionRuns(NEG_ONE_DURATION);
> > > >          config.setMinEvictableIdleTime(NEG_ONE_DURATION);
> > > > -        config.setSoftMinEvictableIdleTime(NEG_ONE_DURATION);
> > > > +        config.setMinEvictableIdleDuration(NEG_ONE_DURATION);
> > > > +        config.setSoftMinEvictableIdleDuration(NEG_ONE_DURATION);
> > > >
> > > >          config.setMaxWait(NEG_ONE_DURATION);
> > > >          try (GenericObjectPool<Object> pool = new
> > > > GenericObjectPool<>(factory, config)) {
> > > >
> > > >
> > >
> >
>

Reply via email to