spring-projects / spring-projects/spring-session

MongoExpiringSession should calculate expireAt when getExpireAt is accessed

Open
#949 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status: waiting-for-triage
Dominant language
Java
Stars
1.9k
Forks
1.2k
Avg merge
4h 27m
Merged PRs (30d)
55

Description

Using spring-session with MongoDB

MongoExpiringSession's expireAt field is set in the the implementation of AbstractMongoSessionConverter's method
MongoExpiringSession convert(DBObject sessionWrapper)
and when MongoExpiringSession's method setLastAccessedTime is invoked.

In some circumstances when I change MongoExpiringSession's interval field through
request.getSession().setMaxInactiveInterval(...)
interval field is updated in MongoDB, but the expireAt field is not updated

I think that this can be solved by calculating expireAt field when getExpireAt is accessed.
In fact I think that MongoExpiringSession does not need this field and getExpireAt method should be something like

new Date(getLastAccessedTime() + TimeUnit.SECONDS.toMillis(this.interval));

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with MongoExpiringSession.getExpireAt(), setLastAccessedTime(), and AbstractMongoSessionConverter.convert(DBObject sessionWrapper), which the issue identifies as the relevant entry points. Reproduce changing the session max inactive interval and verify that the persisted expireAt value reflects the updated interval when getExpireAt() is accessed.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, mongodb, spring
Domain
database
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.