spring-projects / spring-projects/spring-session
MongoExpiringSession should calculate expireAt when getExpireAt is accessed
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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