[Zope] More on understanding conflicts
Dennis Allison
allison at shasta.stanford.edu
Wed Dec 21 01:54:19 EST 2005
Chris, thanks again. You've clarified several issues. Interlinear
comments below, original text edited with a heavy hand for brevity...
On Wed, 21 Dec 2005, Chris McDonough wrote:
>
> If this is the same getSessionVariable as you reported before (a
> Python Script), note that each call that you make to it has
> overhead. It might be better to create a single Python script to
> return all of the values that you need from the session rather than
> calling this over and over again. If that doesn't work, it might be
> even better to just do SESSION.get('foobar') instead of calling a
> Python Script for every value.
Good point. No overhead is probably the right thing especially since
there are no subtransactions.
>
>
> > I still don't have an intuitve understanding of the conflict
> > mechanism in
> > practice. For example, Why is the conflict error reported for the
> > navigation dtml method rather than for the getSessionVariable python
> > script which actually references the SESSION object where the conflict
> > occurs?
>
> Write conflicts happen for a transaction. In Zope, there is one
> transaction per request. So it reports the URL of the method that
> was called as the thing that caused the conflict (because, basically,
> it was). A conflict is not "noticed" until a transaction is
> committed; ZODB has no idea what caused the data structure to change
> in a conflicting way within "application code".
Ah so desu. That's the conceptual hook I was missing. Only one
transaction per request and no subtransactions! A transaction is
processing initiated by a client request or a redirect. (Anything else?)
A transaction has its own REQUEST and RESPONSE objects.
> > A conflict error gets raised whenever another thread references the
> > same session's SESSION object.
>
> Are you using frames by any chance? It would be understandable that
> you're seeing an increased number conflicts if you have an
> application in which many threads try to access the same session
> object at once due to a browser making multiple writes to the same
> session object because of frames.
Yes, we do use frames. We manage rendering explicitly with a bit of
Javascript magic so the full frameset rarely gets rerendered. But, it
certainly could be a contributing factor.
>
> > Apparently the MVCC read-read conflict
> > resolution fails for session variables although I am not sure why.
>
> Can we see one of the conflict tracebacks? You should be seeing only
> write conflicts. Read conflict errors are reported in a traceback
> with a ReadConflictError message (conflicts reported as only
> ConflictError are write conflicts).
>
I'll try to find a few tracebacks.
--
More information about the Zope
mailing list