More details. The session bleed issue is happening because of a code change (not a random environment leak). We've replicated it twice -- applied the 2 code changes (described below), immediately get complaints about session bleed, roll back the changes, everything's fine.
The problem is, I can't see how the changes in question would lead to messed up sessions. They are: 1) Cache-control statements. Specifically, in one controller, inserted the following line: response.headers['Cache-Control'] = 'max-age=3600, must-revalidate' and in another, response.headers['Cache-Control'] = 'store, no-cache, must-revalidate' 2) A change in where to redirect the user after login. was (in db.py): auth.settings.login_next = 'https://appurl/user_home' changed to: auth.settings.login_next = 'http://appurl/user_home' But how could this be? Why would changing the browser cache-control headers, or redirecting to an http url instead of https, cause one user to get another user's session (and see the other user's account, etc)? On Feb 10, 10:50 am, Dmitri Zagidulin <dzagidu...@gmail.com> wrote: > Sure. > So, this is the query that was run when session bleed was first > encountered: > select unique_key, count(unique_key) from sessions.web2py_session_init > group by unique_key having count(unique_key) > 1; > It yielded: > '0d7c9e95-ca8c-4c05-8e5f-69d058ea6510', 2 > '29e390f6-f901-4312-bc5c-f42c5c4e53e7', 2 > and 13 more rows like it, 15 instances of duplication in total. > > The distribution in time is somewhat odd: 8 of the duplicates > instances happened on 1/25, 4 on 1/26, 1 on 1/28, 2/04 and 2/08 > respectively. > > The rows in question look like this: > id, locked, client_ip, created_datetime, modified_datetime, unique_key > 2231, b, '192.xxx.xxx.xxx, '2010-01-25 10:53:05', '2010-01-25 > 10:53:05', 'd8f159bf-bdc4-4059-b4bb-307eb4880813' > 2236, b, '192.xxx.xxx.xxx', '2010-01-25 10:53:05', '2010-01-25 > 10:53:05', 'd8f159bf-bdc4-4059-b4bb-307eb4880813' (same ip address) > ... > 312220, b, 'xxx.xxx.xxx.162', '2010-02-08 10:43:17', '2010-02-08 > 15:48:07', 'a18b5ff2-c532-4c3d-840e-880ab77d943b' > 312219, b, 'xxx.xxx.xxx.68', '2010-02-08 10:43:17', '2010-02-08 > 10:43:17', 'a18b5ff2-c532-4c3d-840e-880ab77d943b' (different ip > addresses) > > The traffic load is harder to judge, but about 16,000 session entries > in the db a day (as of 2/08). > Although now that I think about it, the most likely reason why 8 of > the duplicate session instances happened on 1/25 was because we were > doing heavy load testing (using twill) on that day. So that's likely > correlated. > > The setup is: load balanced between 3 apache/wsgi servers, virtualized > via VMWare. So your comment about cloned systems and uuid gives me > pause -- the 3 servers are probably clones of each other. > > Several questions: > 1) I noticed that the session keys are generated by the uuid4 > function. Would it help any to switch to uuid1? > 2) In addition to the session key, web2py also stores the session row > id, in the session cookie. Why is that? Was there some doubt that the > session key would be unique, when you implemented that part of the > code? > > 3) On 2/08, the database shows only one instance of duplicate session > keys. However, there were about 20 reports of users' sessions being > crossed over (and users seeing other users' accounts when logged in). > So those two things don't seem to be directly correlated. We're still > trying to diagnose this session bleed issue, rolling back revisions > and hoping to see if it was a code issue or an environment leak > somehow. > > Thanks! > > On Feb 9, 9:49 pm, mdipierro <mdipie...@cs.depaul.edu> wrote: > > > This is not normal. > > Can you share more details about the setup? The amount of traffic and > > the problem you encountered? > > > In web2py all sessions are uuid and the probablility that two uuid are > > the same is null (unless these machine are one clone of the others in > > which case I am not sure how the python uuid depends on the time and > > ip of the machine. > > > Massimo > > > On Feb 9, 11:30 am, Dmitri Zagidulin <dzagidu...@gmail.com> wrote: > > > > I've been experiencing some session bleed across accounts (several > > > instances of users crossing over into other users' sessions, and being > > > able to see other users' accounts). And while investigating that (by > > > the way, has anybody else run into this?), I've noticed that the > > > database in which I keep my sessions has several duplicate session > > > keys. > > > > So, my main question is -- is this by design, or is something wrong? > > > When you store sessions in database (using session.connect - to MySQL > > > in this case), are there supposed to be duplicate entries with the > > > same uuid/session key? Would it benefit me to put in a unique > > > constraint on the unique_key db column? > > > > A little more about my setup: > > > web2py version 1.67.2 > > > running behind Apache/WSGI, load balanced across 3 servers. (Hence why > > > I'm keeping sessions in a db rather than on disk). > > > Sessions being stored in a MySQL db. -- You received this message because you are subscribed to the Google Groups "web2py-users" group. To post to this group, send email to web...@googlegroups.com. To unsubscribe from this group, send email to web2py+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/web2py?hl=en.