[ZODB-Dev] Checking transaction status?

JohnD.Heintz JohnD.Heintz
Tue, 10 Jul 2001 16:58:35 -0500


--------------Boundary-00=_ND2AUXHWRTPHL07XHQNH
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Not that this is totally on topic, but I've implemented this module to he=
lp=20
us localize Transactions to threads.  (Also add commit callbacks and my o=
wn=20
version of TM.py if you're interested.)

I've slapped a ZPL licence header on it so have fun.

John

On Tuesday 10 July 2001 15:59, Jim Fulton wrote:
> ender wrote:
> > On Tuesday 10 July 2001 12:30, Greg Ward wrote:
> > >>On 10 July 2001, Christian Robottom Reis said:
> > >>> I think (know?) this can be done with threads, but my app is real=
ly
> > >>> single-threaded right now, and I don't want to have to think abou=
t
> > >>> that right now.
> > >>
> > >>My understanding is that you can do that with multiple Connections.
> > >>I've never tried it, though, so I don't know how it works and I can=
't
> > >>vouch for it.
> >
> > My understanding is that won't work. you could get separate object sp=
aces
> > with multiple connections but of limited utility since they wouldn't =
have
> > transaction isolation. the transaction semantics assign transactions
> > based on thread not connection which get its accessor installed as a
> > builtin. so all objects get registered in the same transaction and a
> > single commit would commit all of them (albeit to different connectio=
ns),
> > but still not the semantics of what christian wants.
>
> This is exactly right.  There are a couple of issues here:
>
>   - The transaction implementation needs to be replaceable,
>     so that you can implement different transaction management
>     policies. I'd like to see:
>
>     o Transactions moved into a separate package (from ZODB)
>
>     o Some attention given to making transactions more controllable.
>
>   - There has to be a way for objects find the transaction manager
>     globally. This seems to mean that there can only be one
>     transaction per thread. Maybe there should be a version of
>     get_transaction that lets you pass an argument (e.g. a connection)
>     that that could contain data for deciding what transaction to retur=
n.
>     Hm. This deserves some more thought.
>
> Jim
>
> --
> Jim Fulton           mailto:jim@digicool.com   Python Powered!
> Technical Director   (888) 344-4332            http://www.python.org
> Digital Creations    http://www.digicool.com   http://www.zope.org
>
> _______________________________________________
> For more information about ZODB, see the ZODB Wiki:
> http://www.zope.org/Wikis/ZODB/
>
> ZODB-Dev mailing list  -  ZODB-Dev@zope.org
> http://lists.zope.org/mailman/listinfo/zodb-dev

--=20
=2E . . . . . . . . . . . . . . . . . . . . . . .

John D. Heintz | Senior Engineer

1016 La Posada Dr. | Suite 240 | Austin TX 78752
T 512.633.1198 | jheintz@isogen.com

w w w . d a t a c h a n n e l . c o m

--------------Boundary-00=_ND2AUXHWRTPHL07XHQNH
Content-Type: text/x-java;
  charset="iso-8859-1";
  name="TransactionManagement.py"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="TransactionManagement.py"

IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMgCiMgWm9wZSBQdWJsaWMgTGljZW5zZSAoWlBMKSBWZXJz
aW9uIDEuMAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyAKIyBDb3B5
cmlnaHQgKGMpIERpZ2l0YWwgQ3JlYXRpb25zLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KCgpmcm9t
IF9fbWFpbl9fIGltcG9ydCBfX2J1aWx0aW5zX18KaW1wb3J0IHN5cwppbXBvcnQgdGhyZWFkCmlt
cG9ydCBaT0RCLlRyYW5zYWN0aW9uCmZyb20gekxPRyBpbXBvcnQgTE9HLCBUUkFDRSwgREVCVUcs
IEJMQVRIRVIsIElORk8sIFBST0JMRU0sIEVSUk9SLCBQQU5JQwoKX2lkVG9UcmFuc2FjdGlvbk1h
cCA9IHt9Cl9pZFRvVHJhbnNhY3Rpb25NYXBMb2NrID0gdGhyZWFkLmFsbG9jYXRlX2xvY2soKQoK
X2F1dG9DcmVhdGVUcmFuc2FjdGlvbnMgPSAxCmRlZiBhdXRvQ3JlYXRlVHJhbnNhY3Rpb25zKG9u
b2ZmKToKICAgIGdsb2JhbCBfYXV0b0NyZWF0ZVRyYW5zYWN0aW9ucwogICAgX2F1dG9DcmVhdGVU
cmFuc2FjdGlvbnMgPSBvbm9mZgoKZGVmIGdldF90cmFuc2FjdGlvbihfaWQ9dGhyZWFkLmdldF9p
ZGVudCk6CiAgICBpZCA9IF9pZCgpCiAgICByZXN1bHQgPSBfaWRUb1RyYW5zYWN0aW9uTWFwLmdl
dChpZCwgTm9uZSkKICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgaWYgX2F1dG9DcmVhdGVUcmFu
c2FjdGlvbnM6CiAgICAgICAgICAgIHJlc3VsdCA9IFRyYW5zYWN0aW9uKGlkKQogICAgICAgICAg
ICBwcmludCAiYXV0b2NyZWF0aW5nIHRyYW5zYWN0aW9uOiVzIiAlIHJlc3VsdAogICAgICAgICAg
ICByZXN1bHQuYXR0YWNoKF9pZCkKICAgICAgICBlbHNlOgogICAgICAgICAgICAjc3RhY2tGcmFt
ZUhlbHBlci5wcmludFN0YWNrKCkKICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoaWQpCiAgICBy
ZXR1cm4gcmVzdWx0CgojIFJlcGxhY2UgZ2xvYmFsIGRlZmluaXRpb24gb2YgZ2V0X3RyYW5zYWN0
aW9uCl9fYnVpbHRpbnNfXy5nZXRfdHJhbnNhY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb24KCmNsYXNz
IFRyYW5zYWN0aW9uKFpPREIuVHJhbnNhY3Rpb24uVHJhbnNhY3Rpb24pOgogICAgZGVmIF9faW5p
dF9fKHNlbGYsIGlkPU5vbmUpOgogICAgICAgIFpPREIuVHJhbnNhY3Rpb24uVHJhbnNhY3Rpb24u
X19pbml0X18oc2VsZiwgaWQpCiAgICAgICAgI2ltcG9ydCBzdGFja0ZyYW1lSGVscGVyCiAgICAg
ICAgI3ByaW50IHNlbGYKICAgICAgICAjc3RhY2tGcmFtZUhlbHBlci5wcmludFN0YWNrKCkKICAg
ICAgICBzZWxmLl9hdHRhY2hlZFRvID0gW10KICAgICAgICBzZWxmLl9vbkNvbW1pdENhbGxiYWNr
cyA9IE5vbmUKCiAgICBkZWYgYXR0YWNoKHNlbGYsIF9pZD10aHJlYWQuZ2V0X2lkZW50LCBmb3Jj
ZT0wKToKICAgICAgICBpZCA9IF9pZCgpCiAgICAgICAgX2lkVG9UcmFuc2FjdGlvbk1hcExvY2su
YWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBub3QgX2lkVG9UcmFuc2FjdGlv
bk1hcC5oYXNfa2V5KGlkKSBvciBmb3JjZToKICAgICAgICAgICAgICAgIF9pZFRvVHJhbnNhY3Rp
b25NYXBbaWRdID0gc2VsZgogICAgICAgICAgICAgICAgc2VsZi5fYXR0YWNoZWRUby5hcHBlbmQo
aWQpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMg
YWxyZWFkeSByZWdpc3RlciB0byAlcyIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoaWQsIF9pZFRvVHJhbnNhY3Rpb25NYXBbaWRdKSkKICAgICAgICBmaW5hbGx5OgogICAgICAg
ICAgICBfaWRUb1RyYW5zYWN0aW9uTWFwTG9jay5yZWxlYXNlKCkKCiAgICBkZWYgZGV0YWNoKHNl
bGYsIF9pZD10aHJlYWQuZ2V0X2lkZW50KToKICAgICAgICBpZCA9IF9pZCgpCiAgICAgICAgX2lk
VG9UcmFuc2FjdGlvbk1hcExvY2suYWNxdWlyZSgpCiAgICAgICAgdHJ5OgogICAgICAgICAgICBk
ZWwgX2lkVG9UcmFuc2FjdGlvbk1hcFtpZF0KICAgICAgICAgICAgc2VsZi5fYXR0YWNoZWRUby5y
ZW1vdmUoaWQpCiAgICAgICAgZmluYWxseToKICAgICAgICAgICAgX2lkVG9UcmFuc2FjdGlvbk1h
cExvY2sucmVsZWFzZSgpCgogICAgZGVmIGF0dGFjaGVkVG8oc2VsZik6CiAgICAgICAgcmV0dXJu
IHR1cGxlKHNlbGYuX2F0dGFjaGVkVG8pCgogICAgZGVmIHJlZ2lzdGVyQ29tbWl0Q2FsbGJhY2so
c2VsZiwgZnVuYywgKmFyZ3MsICoqa3cpOgogICAgICAgIGlmIHNlbGYuX29uQ29tbWl0Q2FsbGJh
Y2tzIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX29uQ29tbWl0Q2FsbGJhY2tzID0gW10KICAg
ICAgICBzZWxmLl9vbkNvbW1pdENhbGxiYWNrcy5hcHBlbmQoKGZ1bmMsIGFyZ3MsIGt3KSkKCiAg
ICBkZWYgYWJvcnQoc2VsZiwgc3VidHJhbnNhY3Rpb249MCwgZnJlZW1lPTEpOgogICAgICAgIFpP
REIuVHJhbnNhY3Rpb24uVHJhbnNhY3Rpb24uYWJvcnQoc2VsZiwgc3VidHJhbnNhY3Rpb24sIGZy
ZWVtZSkKICAgICAgICBzZWxmLl9vbkNvbW1pdENhbGxiYWNrcyA9IE5vbmUKICAgICAgICAKICAg
IGRlZiBjb21taXQoc2VsZiwgc3VidHJhbnNhY3Rpb249Tm9uZSk6CiAgICAgICAgWk9EQi5UcmFu
c2FjdGlvbi5UcmFuc2FjdGlvbi5jb21taXQoc2VsZiwgc3VidHJhbnNhY3Rpb24pCiAgICAgICAg
aWYgc3VidHJhbnNhY3Rpb24gaXMgTm9uZSBhbmQgc2VsZi5fb25Db21taXRDYWxsYmFja3MgaXMg
bm90IE5vbmU6CiAgICAgICAgICAgIGZvciBjYWxsYmFjaywgYXJncywga3cgaW4gc2VsZi5fb25D
b21taXRDYWxsYmFja3M6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAg
YXBwbHkoY2FsbGJhY2ssIGFyZ3MsIGt3KQogICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAg
ICAgICAgICAgICAgIExPRygnVGhvclRyYW5zYWN0aW9uJyxFUlJPUiwgJ0Vycm9yIHByb2Nlc3Np
bmcgY2FsbGJhY2tzJywKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9c3lzLmV4Y19pbmZv
KCkpCiAgICAgICAgICAgIHNlbGYuX29uQ29tbWl0Q2FsbGJhY2tzID0gTm9uZQoKY2xhc3MgQ29t
bWl0QWN0aXZpdHk6CiAgICAiIiJNaXgtaW4gY2xhc3MgdGhhdCBwcm92aWRlcyB0cmFuc2FjdGlv
biBtYW5hZ2VtZW50IHN1cHBvcnQKCiAgICBBIHN1YiBjbGFzcyBzaG91bGQgY2FsbCBzZWxmLl9y
ZWdpc3RlcigpIHdoZW5ldmVyIGl0IHBlcmZvcm1zCiAgICBhbnkgdHJhbnNhY3Rpb24tZGVwZW5k
ZW50IG9wZXJhdGlvbnMgKGUuZy4gc3FsIHN0YXRlbWVudHMpLgoKICAgIFRoZSBzdWIgY2xhc3Mg
d2lsbCBuZWVkIHRvIG92ZXJyaWRlOgogICAgICBiZWdpbiBpZiBuZWNlc3NhcnkKICAgICAgdm90
ZSB0byByYWlzZSBhbiBleGNlcHQgaWYgbmVjZXNzYXJ5CiAgICAgIGZpbmlzaCB0byBmaW5hbGxp
emUgd29yaywKICAgICAgYWJvcnQgdG8gcm9sbC1iYWNrIHdvcmsKICAgICIiIgogICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYuX2JlZ2luQ2FsbGVkID0gMAogICAgICAgIHNlbGYu
X3ZvdGVDYWxsZWQgPSAwCiAgICAgICAgc2VsZi5fYWJvcnRDYWxsZWQgPSAwCiAgICAgICAgc2Vs
Zi5fZmluaXNoQ2FsbGVkID0gMAogICAgICAgIHNlbGYuX3JlZ2lzdGVyKCkKCiAgICBfcmVnaXN0
ZXJlZD1Ob25lCgogICAgZGVmIF9iZWdpbihzZWxmKToKICAgICAgICAiIiJIb29rIG1ldGhvZCB0
byBiZWdpbiBleHRlcm5hbCB0cmFuc2FjdGlvbi4KICAgICAgICBUaGlzIG1heSBiZSBjYWxsZWQg
bXVsdGlwbGUgdGltZXMsIiIiCiAgICAgICAgcGFzcwoKICAgIGRlZiBfdm90ZShzZWxmKToKICAg
ICAgICAiIiJIb29rIG1ldGhvZCB0byB2b3RlIG9uIHN1Y2Nlc3Mgb2YgdHJhbnNhY3Rpb24gY29t
bWl0LgogICAgICAgIFRoaXMgd2lsbCBvbmx5IGJlIGNhbGxlZCBvbmNlLCIiIgogICAgICAgIHBh
c3MKCiAgICBkZWYgX2ZpbmlzaChzZWxmKToKICAgICAgICAiIiJIb29rIG1ldGhvZCB0byBjb21w
bGV0ZSB0cmFuc2FjdGlvbiB3b3JrLgogICAgICAgIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBs
ZSB0aW1lcy4iIiIKICAgICAgICBwYXNzCgogICAgZGVmIF9hYm9ydChzZWxmKToKICAgICAgICAi
IiJIb29rIG1ldGhvZCB0byB1bmRvIHRyYW5zYWN0aW9uIHdvcmsuCiAgICAgICAgVGhpcyBtYXkg
YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiIiIgogICAgICAgIHBhc3MKCiAgICBkZWYgX3Bvc3RD
b21taXQoc2VsZik6CiAgICAgICAgIiIiSG9vayBtZXRob2QgY2FsbGVkIHdoZW4gVHJhbnNhY3Rp
b24gaGFzIGNvbXBsZXRlZCBhCiAgICAgICAgY29tbWl0IHByb2Nlc3MuCiAgICAgICAgIiIiCgog
ICAgY2xhc3MgU3Vycm9nYXRlOgogICAgICAgICJBIFpPREIgcGVyc2lzdGVudCBsb29rLWFsaWtl
LiIKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubmVjdGlvbik6CiAgICAgICAgICAgIHNl
bGYuX3BfamFyPWNvbm5lY3Rpb24KCiAgICBkZWYgX3JlZ2lzdGVyKHNlbGYpOgogICAgICAgICIi
IlRoaXMgbWV0aG9kIHdpbGwgcmVnaXN0ZXIgYSBzdXJyb2dhdGUgcGVyc2lzdGVudAogICAgICAg
IG9iamVjdCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gIFRoaXMgc3Vycm9nYXRlIHdpbGwgaW5jbHVk
ZQogICAgICAgIG1lIGluIHRoZSB0cGNfKiB0d28tcGhhc2UgY29tbWl0IHByb2Nlc3MuIiIiCgog
ICAgICAgIGlmIG5vdCBzZWxmLl9yZWdpc3RlcmVkOgogICAgICAgICAgICB0cnk6CiAgICAgICAg
ICAgICAgICB0cmFucyA9IGdldF90cmFuc2FjdGlvbigpCiAgICAgICAgICAgICAgICB0cmFucy5y
ZWdpc3RlcihDb21taXRBY3Rpdml0eS5TdXJyb2dhdGUoc2VsZikpCiAgICAgICAgICAgICAgICB0
cmFucy5yZWdpc3RlckNvbW1pdENhbGxiYWNrKHNlbGYuX3Bvc3RDb21taXQpCiAgICAgICAgICAg
ICAgICBzZWxmLl9yZWdpc3RlcmVkPTEKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAg
ICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4Yygp
CiAgICAgICAgICAgICAgICBwYXNzCgogICAgZGVmIHRwY19iZWdpbihzZWxmLCB0cmFuc2FjdGlv
biwgc3ViPU5vbmUpOgogICAgICAgICJDb25uZWN0aW9uIG1ldGhvZCB0byBiZWdpbiBhIGNvbW1p
dC4iCiAgICAgICAgaWYgc3ViIGlzIE5vbmUgYW5kIG5vdCBzZWxmLl9iZWdpbkNhbGxlZDoKICAg
ICAgICAgICAgc2VsZi5fYmVnaW5DYWxsZWQgPSAxCiAgICAgICAgICAgIHNlbGYuX2JlZ2luKCkK
CiAgICBkZWYgdHBjX3ZvdGUoc2VsZiwgKmlnbm9yZWQpOgogICAgICAgICJDb25uZWN0aW9uIG1l
dGhvZCB0byB2b3RlIG9uIGNvbW1pdCBzdWNjZXNzLiIKICAgICAgICBpZiBzZWxmLl9iZWdpbkNh
bGxlZCBhbmQgbm90IHNlbGYuX3ZvdGVDYWxsZWQ6CiAgICAgICAgICAgIHNlbGYuX3ZvdGVDYWxs
ZWQgPSAxCiAgICAgICAgICAgIHNlbGYuX3ZvdGUoKQogICAgICAgIAogICAgZGVmIHRwY19maW5p
c2goc2VsZiwgKmlnbm9yZWQpOgogICAgICAgICIiIkNvbm5lY3Rpb24gbWV0aG9kIHRvIHNpZ25h
bCBjb21taXQgc3VjY2Vzcy4KICAgICAgICBUaGlzIHNob3VsZCAqbmV2ZXIqIGZhaWwiIiIKICAg
ICAgICBpZiBzZWxmLl9iZWdpbkNhbGxlZCBhbmQgbm90IHNlbGYuX2ZpbmlzaENhbGxlZDoKICAg
ICAgICAgICAgc2VsZi5fZmluaXNoQ2FsbGVkID0gMQogICAgICAgICAgICB0cnk6CiAgICAgICAg
ICAgICAgICBzZWxmLl9maW5pc2goKQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAg
ICAgc2VsZi5fcmVnaXN0ZXJlZD0wCgogICAgZGVmIHRwY19hYm9ydChzZWxmLCAqaWdub3JlZCk6
CiAgICAgICAgIiIiQ29ubm5lY3Rpb24gbWV0aG9kIHRvIHNpZ25hbCBjb21taXQgZmFpbHVyZS4K
ICAgICAgICBUaGlzIHNob3VsZCAqbmV2ZXIqIGZhaWwiIiIKICAgICAgICBpZiBzZWxmLl9iZWdp
bkNhbGxlZCBhbmQgbm90IHNlbGYuX2Fib3J0Q2FsbGVkOgogICAgICAgICAgICBzZWxmLl9hYm9y
dENhbGxlZCA9IDEKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgc2VsZi5fYWJvcnQo
KQogICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgc2VsZi5fcmVnaXN0ZXJlZD0w
CgogICAgZGVmIGNvbW1pdChzZWxmLCAqaWdub3JlZCk6CiAgICAgICAgIldlIGRvbid0IG5lZWQg
dG8gYWN0dWFsbHkgZG8gYW55IHN0b3JpbmcuIgogICAgICAgIHBhc3MKCiAgICBkZWYgYWJvcnQo
c2VsZiwgKmlnbm9yZWQpOgogICAgICAgICJXZSBkb24ndCBuZWVkIHRvIGFjdHVhbGx5IGRvIGFu
eSBhYm9ydGluZy4iCiAgICAgICAgcGFzcwoKaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAg
IHQgPSBnZXRfdHJhbnNhY3Rpb24oKQoKICAgIGFzc2VydCB0aHJlYWQuZ2V0X2lkZW50KCkgaW4g
dC5hdHRhY2hlZFRvKCksIFwKICAgICAgICAgICAiU2hvdWxkIGluY2x1ZGUgdGhpcyB0aHJlYWQg
aWQiCiAgICAKICAgIGFzc2VydCB0ID09IGdldF90cmFuc2FjdGlvbigpCiAgICAKICAgIHQuZGV0
YWNoKCkKCiAgICBhc3NlcnQgdCAhPSBnZXRfdHJhbnNhY3Rpb24oKQoKICAgIGF1dG9DcmVhdGVU
cmFuc2FjdGlvbnMoMCkKCiAgICBnZXRfdHJhbnNhY3Rpb24oKS5kZXRhY2goKQoKICAgIHRyeToK
ICAgICAgICBnZXRfdHJhbnNhY3Rpb24oKQogICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgIHBh
c3MKICAgIGVsc2U6CiAgICAgICAgYXNzZXJ0IDAsICdTaG91bGRuXCd0IGhhdmUgZ290dGVuIGEg
dHJhbnNhY3Rpb24nCgogICAgdDEgPSBUcmFuc2FjdGlvbigpCiAgICB0MiA9IFRyYW5zYWN0aW9u
KCkKICAgIHQxLmF0dGFjaCgpCiAgICB0cnk6CiAgICAgICAgdDIuYXR0YWNoKCkKICAgIGV4Y2Vw
dCBLZXlFcnJvcjoKICAgICAgICBwYXNzCiAgICBlbHNlOgogICAgICAgIGFzc2VydCAwLCAiU2hv
dWxkIGhhdmUgZmFpbGVkIGJlY2F1c2Ugb2YgdDEiCg==

--------------Boundary-00=_ND2AUXHWRTPHL07XHQNH--