In real usage the likelihood is low.  But I can't guarantee there will
never be a problem caused by network latency, either.

I don't use file-based sessions because I have several applications
that work together, as in 'cooperating applications.'  Though I
suppose I could have one repository for session files and softlink to
it.  I'll have to read up on that.

By the way, thanks.  Your contributions here are a real benefit.  I
bookmark a lot of them.

On Dec 9, 11:58 am, Anthony <[email protected]> wrote:
> In real usage, is a user likely to be able to update the date field and
> then quickly click the view link so fast that the view query happens before
> the update query? If so, then your client side feedback idea is probably
> the way to go.
>
> Actually, if both the update and view requests use the session (or rather,
> do not do session.forget), and you are using file based sessions, then the
> first request should block the second request until the first request
> completes. In that case, you could only get a race condition if the view
> request actually arrives at the server before the update request.
>
> Anthony
>
>
>
>
>
>
>
> On Friday, December 9, 2011 11:43:37 AM UTC-5, Cliff wrote:
>
> > The problem occurs in many-to-many relations, as in this example
> > model:
>
> > db.define_table('owners', Field('name'))
> > db.define_table('dogs', Field('name'))
> > db.define_table(dog_owners',
> >   Field('owner_id', db.owners),
> >   Field('dog_id', 'db.dogs'),
> >   Field('date_owner_got_dog', 'date') #This is important!
> > )
>
> > When an owner record is edited, I would also put on the page a table
> > of all dogs owned by the owner.  With each dog there is a field for
> > editing date_owner_got_dog.  The change event for that field triggers
> > a jQuery script.  The script uses Ajax to tell the server to update
> > the value.
>
> > When an owner record is viewed, I would put up the same table without
> > capability to edit date_owner_got_dog.
>
> > Here is how to get the race condition:
> > 1.  Open an owner record for editing.
> > 2.  Update one of date_owner_got_dog fields.
> > 3.  Quickly click the 'view' link.
> > 4.  Observe old value in the updated field because the server fetched
> > the dog record before it was updated.
>
> > The server can fetch the owner and dog records before finishing the
> > update triggered by step 2.
>
> > I didn't see this in manual testing but Selenium found it right away.
>
> > I'm going to put up a 'please wait' flash message before kicking off
> > the ajax call and change it to a 'done' message when the server has
> > done its piece.
>
> > Anybody have any better ideas?
>
> > How does smartgrid handle this?

Reply via email to