Yes Anthony, pretty sure. The little hash that you see in the logs *is* the
cookie. Otherwise I can not grep for the relevant log messages (lots of
activity going on with 10 parallel requests). This is the code that I have
at the very top of my db.py:
try:
cookie_value = request.cookies[response.session_id_name].value
except:
cookie_value = None
from gluon.tools import tools_tracer
tools_tracer.setid(cookie_value)
(tools_tracer is part of my instrumentation) And that setid call with
compute a cookie hash for my logs.
On Thursday, January 17, 2013 5:32:22 AM UTC+1, Anthony wrote:
>
> You're sure the client is sending the session cookie each time?
>
> On Wednesday, January 16, 2013 10:19:01 PM UTC-5, Daniel Gonzalez wrote:
>>
>> Hi,
>>
>> I am doing stress testing of my web2py application. The way I am doing
>> this is:
>>
>> - 10 parallel clients
>> - the clients log-in automatically, and obtain the session cookie
>> - the clients log-in only *once* at the start of testing.
>> - I use the session cookie to tag log messages in order to look for
>> mý problem: this way I can relate the log messages to a specific client.
>> - I am looking for problems in the web2py code, specifically in
>> tools.py, Auth.__init__, where the auth.user is defined
>>
>> This is my instrumented code (in tools.py, Auth.__init__):
>>
>> if auth is None:
>> tools_tracer.show('session.auth is None')
>> if auth and auth.last_visit and auth.last_visit + \
>> datetime.timedelta(days=0, seconds=auth.expiration) >request
>> .now:
>> tools_tracer.show('session.auth active, last_visit=%s', auth.
>> last_visit)
>> self.user = auth.user
>> # this is a trick to speed up sessions
>> if (request.now - auth.last_visit).seconds > (auth.expiration
>> / 10):
>> auth.last_visit = request.now
>> else:
>> self.user = None
>> if session.auth:
>> del session.auth
>> tools_tracer.show('session.auth expired')
>>
>> And (in tools.py, Auth.login_user):
>>
>> current.session.auth = Storage(
>> user = user,
>> last_visit=current.request.now,
>> expiration=self.settings.expiration,
>> hmac_key=web2py_uuid())
>> tools_tracer.show('session.auth created')
>>
>> This is my current log:
>>
>> 2013-01-17 04:00:41,816 - Thread-5 - c2d769 session.auth
>> is None
>> 2013-01-17 04:00:41,861 - Thread-5 - c2d769 session.auth
>> created
>> 2013-01-17 04:00:41,984 - Thread-6 - c2d769 session.auth
>> active, last_visit=2013-01-17 04:00:41.791030
>> 2013-01-17 04:00:48,923 - Thread-7 - c2d769 session.auth
>> is None
>> 2013-01-17 04:01:51,131 - Thread-10 - c2d769 session.auth
>> is None
>> 2013-01-17 04:01:51,214 - Thread-9 - c2d769 session.auth
>> is None
>> 2013-01-17 04:02:42,506 - Thread-6 - c2d769 session.auth
>> is None
>> 2013-01-17 04:04:42,791 - Thread-9 - c2d769 session.auth
>> active, last_visit=2013-01-17 04:04:07.717197
>> 2013-01-17 04:04:42,816 - Thread-4 - c2d769 session.auth
>> is None
>> 2013-01-17 04:04:48,862 - Thread-10 - c2d769 session.auth
>> is None
>> 2013-01-17 04:04:49,251 - Thread-6 - c2d769 session.auth
>> is None
>> 2013-01-17 04:05:35,713 - Thread-7 - c2d769 session.auth
>> is None
>> 2013-01-17 04:06:39,764 - Thread-8 - c2d769 session.auth
>> active, last_visit=2013-01-17 04:06:10.853567
>> 2013-01-17 04:06:39,803 - Thread-2 - c2d769 session.auth
>> is None
>> 2013-01-17 04:07:35,154 - Thread-8 - c2d769 session.auth
>> active, last_visit=2013-01-17 04:07:00.261709
>> 2013-01-17 04:07:40,860 - Thread-9 - c2d769 session.auth
>> is None
>> 2013-01-17 04:07:46,176 - Thread-8 - c2d769 session.auth
>> is None
>> 2013-01-17 04:07:46,266 - Thread-5 - c2d769 session.auth
>> is None
>> 2013-01-17 04:08:27,416 - Thread-9 - c2d769 session.auth
>> active, last_visit=2013-01-17 04:08:03.492030
>> 2013-01-17 04:08:27,436 - Thread-2 - c2d769 session.auth
>> is None
>> 2013-01-17 04:09:31,485 - Thread-10 - c2d769 session.auth
>> is None
>> 2013-01-17 04:11:21,903 - Thread-7 - c2d769 session.auth
>> is None
>> 2013-01-17 04:12:20,207 - Thread-10 - c2d769 session.auth
>> is None
>>
>> (the c2d769 is a hash of the cookie, and identifies the client)
>>
>> As you can see, very often (for this specific client, other clients have
>> fewer problems), the session.auth is not there. But then suddenly, in the
>> following request, it is there again.
>>
>> What can be causing this strange problem?
>>
>> Thanks,
>> Daniel
>>
>>
--