expressjs / expressjs/session

express-session sometimes saves empty sessions (very rarely)

Open
#925 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
6.4k
Forks
1k
PR merge metrics
No merged PRs in 30d

Description

First off, I tried to create this issue under expressjs/session but the permissions don't allow me to open issues there. Please tell me if you'd like me to move it somewhere else!

We're using express-session 1.17.2 with connect-mongo 4.6.0. Our app creates thousands of new sessions every day and we rarely have any issues. But sometimes I'll start getting this alert:

```
Error: TypeError: Cannot read property 'expires' of undefined
at MongoStore.Store.createSession (node_modules/express-session/session/store.js:87:29)
at inflate (node_modules/express-session/index.js:372:13)
at node_modules/express-session/index.js:499:11
at node_modules/connect-mongo/build/main/lib/MongoStore.js:222:17
at runMicrotasks ()
at processTicksAndRejections (internal/process/task_queues.js:95:5)
```

When I get the session id and look in mongo, the `session` field contains the string `{}`. Somehow it saves an empty json object with no `cookie` key. I need to manually delete the session so the user gets a new one and then it's resolved.

This happens maybe once a month or so. It's such a tiny fraction of all sessions, but it's still frustrating. It's got to be a race condition somewhere but I haven't been able to find anything obvious.

Has behavior like this been reported before? If not, is it possible to add error checking to Store.prototype.createSession so it can handle a missing `session.cookie`?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.