On 1/3/2013 2:43 PM, Brett Cannon wrote:



On Thu, Jan 3, 2013 at 4:06 PM, Glenn Linderman <v+pyt...@g.nevcal.com <mailto:v+pyt...@g.nevcal.com>> wrote:

    On 1/3/2013 12:13 PM, Brett Cannon wrote:
    It is a form so technically nothing is being done incorrectly in
    changing values based on what you submit, whether you view them
    stale or not.

    Well, it sounds like a pretty shaky technology foundation, if
    simultaneous updates of a shared data repository have race conditions.

    Certainly leaving a tab open for long periods of time exacerbates
    the issue, as it severely extends the definition of
    "simultaneous".  Without that, the likelihood of people doing
    simultaneous updates is seriously reduced, except maybe for bugs
    with "hot" discussions.


I would argue it is no longer simultaneous and thus not a race condition. You can't consider a POST transactional based on when the HTTP GET request for the form completed to when the POST finally occurs.

Argue away. it still is a race condition, just a slow race. HTTP is stateless, not transactional, agreed, but when a transaction system is implemented on top of HTTP, it needs to implement transactional semantics itself... or else it is a pretty shaky foundation for a database. The POST is an update, the prior GET started the transaction. This is just the definition of a transaction, so any arguments you have can only claim that Roundup doesn't implement transactions, and the bug tracker is not a database... and if you are right, then it is a pretty shaky foundation for a bug tracker database. I think that is what I said in the first place :)

    Jesus' suggestion of a hidden version field would help, but could
    be annoying for the case of someone writing a lengthy response,
    and having it discarded because the hidden version field is too
    old... so care would have to be taken to preserve such responses
    when doing the refresh...


As I said, this belongs upstream in Roundup and not directly in our roundup instance for a proper fix. This is beyond schema and it heading into low-level Roundup POST functionality.

Agreed, the fix, if to be done correctly, belongs in Roundup, from what I understand of how things are implemented.

-Brett


    Another possible implementation would be to track which fields in
    the form are actually updated by a submitter... and reject a
    submission only if there was a simultaneous update to that field.

    Another possible implementation for fields like nosy, would be to
    display the current list, but provide boxes for additions and
    deletions, rather than allowing editing. Or maybe just a "remove
me" button for deletions would suffice, with a box for additions. Then the processing would avoid adding duplicates.

    People shouldn't have to do heroic things with refreshing to
    maintain the consistency of the underlying data...  database
    transaction technology has been around for quite a few years by
    now, and is well understood.



_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to