Comments (2)
Confirm. Got same issue. Beaker == 1.6.4, Pylons == 1.0.1
from beaker.
This is a known issue with concurrent requests, and is due to the fact that at the beginning of a request the session is read, its updated, then written back. Even though the read/write's are done with locks, that doesn't help since one both requests read the same session at approximately the same exact time.
The only way to fix this (depending on session back-end), is very ugly, which is to lock requests making it impossible for one request to start if another one is using the same session. This way one of the sessions has to wait before it can even read, thus ensuring it doesn't overwrite newer data. Alternatively, a more proactive version could be done where during write, if beaker sees that your sessions 'origin' time is no longer the same, it could deny the save and force you to reload it.
Locking during the entire request is a no-go, but reading an 'origin' time for the session and checking it before saving it is do-able, this way the code could reload the session or take whatever step it wants. Perhaps it could be re-read and the keys merged.
I'm open to pull requests implementing the optimistic save feature to prevent overwrites, but its likely not trivial and will involve:
- Update the back-end API to ensure an 'origin' time is read.
- Update the back-end API to ensure the save command also takes the origin time for checking with the back-end
- Update all the core backends in Beaker to support the two new options
- Update the Session code to support the new features in the container code
- Add tests to ensure the optimistic overwriting prevention is handled correctly
So, who's up for it? :)
from beaker.
Related Issues (20)
- Python 3.10 : Threading related deprecations HOT 1
- 1.11.0: test suite is failing HOT 1
- Beaker Maintainership
- Incapable to disable cache after modified region settings
- Resource consumption dos from way back
- Update beaker in pip
- 1.11.0: test suite uses outdated `nose` module HOT 2
- License file is missing in package
- Does it supports Python 3.9 version? HOT 1
- Deserialization of Untrusted Data
- Using cache.type='ext:database' doesn't work in V 1.12.0 HOT 6
- Error when loading session from 1.11 on 1.12
- CVE-2013-7489
- when "cookie: null;beaker.session.id=a70c9bbdcf6242f393de98847a4982ca"
- Some much-needed features about caching HOT 1
- How can i update expire time per call or refresh page
- Can't connect to several nodes and/or in cluster mode HOT 1
- 1.12.1 + master (91aa4d89): pytest fails HOT 5
- RFE: drop python<=3.7 support HOT 5
- beaker.session class documentation wrong about cookie_expires (expiration of the session cookie)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from beaker.