[Web-SIG] and now for something completely different!

Jonathan Ellis jonathan at carnageblender.com
Mon Aug 15 23:41:07 CEST 2005


On Mon, 15 Aug 2005 15:57:55 -0500, "Ian Bicking" <ianb at colorstudy.com>
said:
> Jonathan Ellis wrote:
> > On Mon, 15 Aug 2005 15:46:19 -0500, "Ian Bicking" <ianb at colorstudy.com>
> >>In practice race conditions are very uncommon.  Simultaneous requests 
> >>from the same session are uncommon, since what few simultaneous requests 
> >>that occur are likely to be for boring resources like images.  If you 
> >>have an image bug on a page that also writes the session, maybe you'd 
> >>have a problem.  I'd be okay saying "don't do that" because usually 
> >>people don't do that, so it's not very compelling.
> > 
> > 
> > I wouldn't be okay with non-threadsafe sessions.
> 
> Non-threadsafe in what manner?  Certainly they should be usable in 
> threaded environments, and should never blow up or anything.  I just 
> assume that.
> 
> The question is whether, if there's two concurrent writers (threaded or 
> multiprocess), they should be serialized (and how), or if one of them 
> simply clobbers the other.

Well, if your goal is "usable in [concurrent] environments," you're
really talking about serializing anyway.

Consider some hypothetical API:

def session_for_user(uname):
  if not session_exists(uname):
    create_session(uname):
  return session_retrieve(uname)

Depending on how soon session_exists can tell that a session is being
created, if two requests for the same session come in close enough
together (and it's worth remembering that this could easily be the
result of a single browser hitting refresh on a very heavily loaded
machine), the second request could get either an incompletely
initialized session object, or a different session object entirely.

-Jonathan


More information about the Web-SIG mailing list