On Fri, Aug 28, 2026 at 3:12 PM <[email protected]> wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> markt-asf pushed a commit to branch main
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>
>
> The following commit(s) were added to refs/heads/main by this push:
> new e70460d5ec Follow-up "Avoid some scenarios of expiration of never
> expire sessions"
> e70460d5ec is described below
>
> commit e70460d5ec337720d169cb8f8ac2498e9d1738c9
> Author: Mark Thomas <[email protected]>
> AuthorDate: Fri Aug 28 14:11:43 2026 +0100
>
> Follow-up "Avoid some scenarios of expiration of never expire sessions"
>
> getMaxInactiveInterval == 0 is documented as never expire.
+1, thanks, I forgot.
Rémy
> ---
> java/org/apache/catalina/session/DataSourceStore.java | 2 +-
> java/org/apache/catalina/session/StoreBase.java | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/java/org/apache/catalina/session/DataSourceStore.java
> b/java/org/apache/catalina/session/DataSourceStore.java
> index ee7e9cbaac..8e87813977 100644
> --- a/java/org/apache/catalina/session/DataSourceStore.java
> +++ b/java/org/apache/catalina/session/DataSourceStore.java
> @@ -356,7 +356,7 @@ public class DataSourceStore extends StoreBase {
> private String[] keys(boolean expiredOnly) throws IOException {
> String sqlTmp = "SELECT " + sessionIdCol + " FROM " + sessionTable +
> " WHERE " + sessionAppCol + " = ?";
> if (expiredOnly) {
> - sqlTmp += " AND " + sessionMaxInactiveCol + " >= 0";
> + sqlTmp += " AND " + sessionMaxInactiveCol + " > 0";
> sqlTmp += " AND (" + sessionLastAccessedCol + " + " +
> sessionMaxInactiveCol + " * 1000 < ?)";
> }
> final String keysSql = sqlTmp;
> diff --git a/java/org/apache/catalina/session/StoreBase.java
> b/java/org/apache/catalina/session/StoreBase.java
> index 373594d6f5..190808d35a 100644
> --- a/java/org/apache/catalina/session/StoreBase.java
> +++ b/java/org/apache/catalina/session/StoreBase.java
> @@ -161,7 +161,7 @@ public abstract class StoreBase extends LifecycleBase
> implements Store {
> }
> int timeIdle = (int) ((timeNow -
> session.getThisAccessedTime()) / 1000L);
> int maxInactive = session.getMaxInactiveInterval();
> - if (maxInactive < 0 || timeIdle < maxInactive) {
> + if (maxInactive <= 0 || timeIdle < maxInactive) {
> continue;
> }
> if (manager.getContext().getLogger().isTraceEnabled()) {
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]