[ZODB-Dev] Bug in cPersistence.c? Transaction.register(object) not called

John D. Heintz jheintz@isogen.com
Tue, 8 May 2001 16:50:01 -0500


--------------Boundary-00=_DZD1TTN97PYYBWPN3QVE
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Attached is a test file and persistent data structures file that demonstrates 
a problems we are having with using ZODB and CORBA.

Note: This code relies on accessing the ZODB.Transaction module directly.  
This means that ZODB.__init__ must be modified to not delete that module.  
Also, I am using the StandaloneZODB from SourceForge.  If this causes any 
hardship I'll get the latest Zope code and rerun my tests with that, but I 
don't think there should be any problems.

This code sets up a database and then tries in another thread to simulate 
remote CORBA calls and modification to that database.  It would work fine 
except for test.py:66 where it asserts that self is registered on the 
Transaction.

Thanks for any help,
John Heintz

ps - I tried to add this the bug tracker but couldn't find a way to attach 
files, then accidentally submitted the bug with an incomplete description :-(
The bug that I submitted was #2214
--------------Boundary-00=_DZD1TTN97PYYBWPN3QVE
Content-Type: text/x-java;
  charset="iso-8859-1";
  name="per_data.py"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="per_data.py"

aW1wb3J0IFpPREIKZnJvbSBQZXJzaXN0ZW5jZSBpbXBvcnQgUGVyc2lzdGVudAoKZGVmIGVudGVy
KCk6CiAgICB0cnk6CiAgICAgICAgZ2V0Q29yYmFTZXNzaW9uKCkuZ2V0X2Nvbm5lY3Rpb24oKS5z
eW5jKCkKICAgIGV4Y2VwdDoKICAgICAgICBwcmludCAiISEhISEhISIKICAgIApjbGFzcyBGb28o
UGVyc2lzdGVudCk6CiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgc2VsZi5iYXIgPSBO
b25lCgogICAgZGVmIHNldEJhcihzZWxmLCBiYXIpOgogICAgICAgIGVudGVyKCkKICAgICAgICBz
ZWxmLmJhciA9IGJhcgoKICAgIGRlZiBnZXRCYXIoc2VsZik6CiAgICAgICAgZW50ZXIoKQogICAg
ICAgIHJldHVybiBzZWxmLmJhcgoKY2xhc3MgQmFyKFBlcnNpc3RlbnQpOgogICAgZGVmIF9faW5p
dF9fKHNlbGYsIG5hbWUpOgogICAgICAgIHNlbGYubmFtZSA9IG5hbWUKCiAgICBkZWYgZ2V0TmFt
ZShzZWxmKToKICAgICAgICBlbnRlcigpCiAgICAgICAgcmV0dXJuIHNlbGYubmFtZQoKY2xhc3Mg
Rm9vQ29udGFpbmVyKFBlcnNpc3RlbnQpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAg
IHNlbGYubGlzdCA9IFtdCgogICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CiAgICAg
ICAgUGVyc2lzdGVudC5fX3NldHN0YXRlX18oc2VsZiwgc3RhdGUpCiAgICAgICAgcHJpbnQgIl9f
c2V0c3RhdGVfXyAlcyAlcyAlcyIgJSAoc2VsZiwgZGlyKHNlbGYpLCBzdGF0ZSkKCiAgICBkZWYg
X19nZXRzdGF0ZV9fKHNlbGYpOgogICAgICAgIHJlc3VsdCA9IFBlcnNpc3RlbnQuX19nZXRzdGF0
ZV9fKHNlbGYpCiAgICAgICAgcHJpbnQgIl9fZ2V0c3RhdGVfXyAlcyAlcyIgJSAoc2VsZiwgcmVz
dWx0KQogICAgICAgIHJldHVybiByZXN1bHQKCiAgICBkZWYgX3BfZGVhY3RpdmF0ZShzZWxmKToK
ICAgICAgICBwcmludCAiX3BfZGVhY3RpdmF0ZSAlcyAlcyIgJSAoc2VsZiwgZGlyKHNlbGYpKQog
ICAgICAgIFBlcnNpc3RlbnQuX3BfZGVhY3RpdmF0ZShzZWxmKQoKICAgIGRlZiBjcmVhdGVCYXIo
c2VsZiwgbmFtZSk6CiAgICAgICAgZW50ZXIoKQogICAgICAgIGJhciA9IEJhcihuYW1lKQogICAg
ICAgIHJldHVybiBiYXIKCiAgICBkZWYgY3JlYXRlRm9vKHNlbGYsIGJhck5hbWUpOgogICAgICAg
IHByaW50ICItLS0gY3JlYXRlIEZvbyIKICAgICAgICBwcmludCAiLS0tIGxlbihzZWxmLmxpc3Qp
PSVzIiAlIGxlbihzZWxmLmxpc3QpCiAgICAgICAgZW50ZXIoKQogICAgICAgIHByaW50ICItLS0g
aW5pdCBGb28iCiAgICAgICAgZm9vID0gRm9vKCkKICAgICAgICBwcmludCAiLS0tICAgICAgICAg
JXMiICUgZm9vCiAgICAgICAgYmFyID0gc2VsZi5jcmVhdGVCYXIoYmFyTmFtZSkKICAgICAgICBm
b28uc2V0QmFyKGJhcikKICAgICAgICBzZWxmLmxpc3QuYXBwZW5kKGZvbykKICAgICAgICBwcmlu
dCAic2VsZi5fcF9jaGFuZ2VkPSVzIiAlIHNlbGYuX3BfY2hhbmdlZAogICAgICAgIHNlbGYubGlz
dCA9IHNlbGYubGlzdAogICAgICAgIHByaW50ICJzZWxmLl9wX2NoYW5nZWQ9JXMiICUgc2VsZi5f
cF9jaGFuZ2VkCiAgICAgICAgIyAgWFhYIFRoaXMgaXNuJ3QgY2FsbGVkIGFuZCBzaG91bGQgYmUh
ISAgICBnZXRfdHJhbnNhY3Rpb24oKS5yZWdpc3RlcihzZWxmKQogICAgICAgIGFzc2VydCBzZWxm
IGluIGdldF90cmFuc2FjdGlvbigpLl9vYmplY3RzCiAgICAgICAgcHJpbnQgIi0tLSBsZW4oc2Vs
Zi5saXN0KT0lcyIgJSBsZW4oc2VsZi5saXN0KQogICAgICAgIHJldHVybiBmb28KCiAgICBkZWYg
Z2V0QWxsRm9vcyhzZWxmKToKICAgICAgICBlbnRlcigpCiAgICAgICAgcmV0dXJuIHNlbGYubGlz
dAo=

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

aW1wb3J0IF9fbWFpbl9fCmltcG9ydCBzeXMKaW1wb3J0IHRocmVhZAppbXBvcnQgdGhyZWFkaW5n
CmltcG9ydCB0aW1lCmltcG9ydCByYW5kb20KaW1wb3J0IHRyYWNlYmFjawpmcm9tIFN0cmluZ0lP
IGltcG9ydCBTdHJpbmdJTwoKaW1wb3J0IFpPREIKZnJvbSBQZXJzaXN0ZW5jZSBpbXBvcnQgUGVy
c2lzdGVudApmcm9tIFpPREIuVHJhbnNhY3Rpb24gaW1wb3J0IFRyYW5zYWN0aW9uCmZyb20gWk9E
Qi5GaWxlU3RvcmFnZSBpbXBvcnQgRmlsZVN0b3JhZ2UKZnJvbSBaT0RCLlBPU0V4Y2VwdGlvbiBp
bXBvcnQgQ29uZmxpY3RFcnJvcgoKZnJvbSBwZXJfZGF0YSBpbXBvcnQgKgoKZGVmIHRyeUNvbW1p
dEZ1bmN0aW9uKGZ1bmMsIGFyZ3MpOgogICAgIiIiCiAgICBVc2VzIF90cnlGdW5jdGlvbiB0byBh
cHBseSB0aGUgZ2l2ZW4gZnVuY3Rpb24gdG8gdGhlIGFyZ3VtZW50cwogICAgYW5kIHRoZW4gcGVy
Zm9ybXMgYSBjb21taXQuCiAgICBUaHJvd3MgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uIHVwb24g
ZmFpbHVyZS4KICAgICIiIgogICAgc2xlZXBUaW1lPS4wNQogICAgZm9yIGkgaW4gcmFuZ2UoMTAp
OgogICAgICAgIHRyeToKICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHkoZnVuYywgYXJncykKICAg
ICAgICAgICAgdCA9IGdldF90cmFuc2FjdGlvbigpCiAgICAgICAgICAgIHByaW50ICJDb21taXR0
aW5nICVzIiAlIHQuX29iamVjdHMKICAgICAgICAgICAgdC5jb21taXQoKQogICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0CiAgICAgICAgZXhjZXB0IENvbmZsaWN0RXJyb3I6CiAgICAgICAgICAgIGlm
IGkgPT0gMTAgLSAxOgogICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgZ2V0X3RyYW5z
YWN0aW9uKCkuYWJvcnQoKQogICAgICAgICAgICB0aW1lLnNsZWVwKHNsZWVwVGltZSkKICAgICAg
ICAgICAgc2xlZXBUaW1lID0gc2xlZXBUaW1lICogMS41CgojIC0tLS0tLS0tLS0tLQojIEdsb2Jh
bCBnZXRDb3JiYVNlc3Npb24oKSBzdXBwb3J0CiMgSW1wbGVtZW50cyBUaHJlYWQgU3BlY2lmaWMg
U3RvcmFnZSBwYXR0ZXJuIGZyb20gUE9TQTIKX3RocmVhZFRvU2Vzc2lvbk1hcCA9IHt9CmRlZiBn
ZXRDb3JiYVNlc3Npb24oKToKICAgIGlkID0gdGhyZWFkLmdldF9pZGVudCgpCiAgICByZXR1cm4g
X3RocmVhZFRvU2Vzc2lvbk1hcFtpZF0KZGVmIHJlZ2lzdGVyQ29yYmFTZXNzaW9uKGNvcmJhU2Vz
c2lvbik6CiAgICBpZCA9IHRocmVhZC5nZXRfaWRlbnQoKQogICAgX3RocmVhZFRvU2Vzc2lvbk1h
cFtpZF0gPSBjb3JiYVNlc3Npb24KZGVmIHVucmVnaXN0ZXJDb3JiYVNlc3Npb24oZm9yY2UgPSAx
KToKICAgIGlkID0gdGhyZWFkLmdldF9pZGVudCgpCiAgICBpZiBmb3JjZSBvciBfdGhyZWFkVG9T
ZXNzaW9uTWFwLmhhc19rZXkoaWQpOgogICAgICAgIGRlbCBfdGhyZWFkVG9TZXNzaW9uTWFwW2lk
XQogICAgICAgIApfX21haW5fXy5fX2J1aWx0aW5zX18uZ2V0Q29yYmFTZXNzaW9uPWdldENvcmJh
U2Vzc2lvbgoKIyAtLS0tLS0tLS0tLS0KIyBTZXR1cCBnbG9iYWwgZ2V0X3RyYW5zYWN0aW9uKCkg
dG8gdXNlIGdldFRob3JTZXNzaW9uKCkuZ2V0X3RyYW5zYWN0aW9uKCkKX3RocmVhZFRvVHJhbnNN
YXAgPSB7fQpvcmlnX2dldF90cmFuc2FjdGlvbiA9IF9fbWFpbl9fLl9fYnVpbHRpbnNfXy5nZXRf
dHJhbnNhY3Rpb24KZGVmIGdldF90cmFuc2FjdGlvbigpOgogICAgdHJ5OgogICAgICAgIHJldHVy
biBnZXRDb3JiYVNlc3Npb24oKS5nZXRfdHJhbnNhY3Rpb24oKQogICAgZXhjZXB0IEtleUVycm9y
OgogICAgICAgIHJldHVybiBvcmlnX2dldF90cmFuc2FjdGlvbigpCgpkZWYgaW5zdGFsbF9nZXRf
dHJhbnNhY3Rpb24oKToKICAgIF9fbWFpbl9fLl9fYnVpbHRpbnNfXy5nZXRfdHJhbnNhY3Rpb249
Z2V0X3RyYW5zYWN0aW9uCiMgLS0tLS0tLS0tLS0tCgoKY2xhc3MgQ29yYmFTZXNzaW9uOgogICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGRiKToKICAgICAgICBzZWxmLnRyYW5zID0gVHJhbnNhY3Rpb24o
MCkKICAgICAgICBzZWxmLmNvbm4gPSBkYi5vcGVuKCkKICAgICAgICByZWdpc3RlckNvcmJhU2Vz
c2lvbihzZWxmKQoKICAgIGRlZiBnZXRfdHJhbnNhY3Rpb24oc2VsZik6CiAgICAgICAgcmV0dXJu
IHNlbGYudHJhbnMKCiAgICBkZWYgZ2V0X2Nvbm5lY3Rpb24oc2VsZik6CiAgICAgICAgcmV0dXJu
IHNlbGYuY29ubgoKCkNPTlRBSU5FUiA9ICdDb250YWluZXInCnN0b3JhZ2UgPSBGaWxlU3RvcmFn
ZSgnZGF0YS5mcycpCmRiID0gWk9EQi5EQihzdG9yYWdlKQpkYi5zZXRQb29sU2l6ZSgxMDAwMCkK
CiNTZXR1cCBkYgpjb25uZWN0aW9uID0gZGIub3BlbigpCmlmIG5vdCBjb25uZWN0aW9uLnJvb3Qo
KS5oYXNfa2V5KENPTlRBSU5FUik6CiAgICBmYyA9IEZvb0NvbnRhaW5lcigpCiAgICBjb25uZWN0
aW9uLnJvb3QoKVtDT05UQUlORVJdID0gZmMKICAgIGdldF90cmFuc2FjdGlvbigpLmNvbW1pdCgp
CiAgICBmYy5jcmVhdGVGb28oJ2InKQogICAgZ2V0X3RyYW5zYWN0aW9uKCkuY29tbWl0KCkKI2Nv
bm5lY3Rpb24uY2xvc2UoKQoKaW5zdGFsbF9nZXRfdHJhbnNhY3Rpb24oKQoKY2xhc3MgVGVzdFRo
cmVhZCh0aHJlYWRpbmcuVGhyZWFkKToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYik6CiAgICAg
ICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQogICAgICAgIHByaW50ICJTdGFydGlu
ZyAlcyIgJSBzZWxmCiAgICAgICAgc2VsZi5kYiA9IGRiCiAgICAgICAgc2VsZi5jb25uID0gZGIu
b3BlbigpCgogICAgZGVmIHJ1bihzZWxmKToKICAgICAgICBzZWxmLnNlc3Npb24gPSBDb3JiYVNl
c3Npb24oc2VsZi5kYikKICAgICAgICBmb3IgeCBpbiByYW5nZSgxKToKICAgICAgICAgICAgdHJ5
Q29tbWl0RnVuY3Rpb24oc2VsZi5fcnVuLCAoKSkKICAgICAgICAjVGVzdFRocmVhZChzZWxmLmRi
KS5zdGFydCgpCgogICAgZGVmIF9ydW4oc2VsZik6CiAgICAgICAgcHJpbnQgIioqKiBnZXQgY29u
dGFpbmVyIgogICAgICAgIGZvb0NvbnRhaW5lciA9IHNlbGYuY29ubi5yb290KClbQ09OVEFJTkVS
XQogICAgICAgIHByaW50ICIqKiogY3JlYXRlIEZvbyIKICAgICAgICBmb28gPSB0cnlDb21taXRG
dW5jdGlvbihmb29Db250YWluZXIuY3JlYXRlRm9vLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgnYScsKSkKICAgICAgICBwcmludCAiY3JlYXRlZCAlcyIgJSBmb28KICAgICAgICBw
cmludCAiKioqIGdldCBhbGwgZm9vcyIKICAgICAgICBmb29zID0gdHJ5Q29tbWl0RnVuY3Rpb24o
Zm9vQ29udGFpbmVyLmdldEFsbEZvb3MsICgpKQoKICAgICAgICBhc3NlcnQgZm9vIGluIGZvb3Ms
ICIlcyBub3QgaW4gJXMiICUgKHN0cihmb28pLCBzdHIoZm9vcykpCiAgICAgICAgcHJpbnQgIioq
KiBsZW4oZm9vcyk9JXMiICUgbGVuKGZvb3MpCiAgICAgICAgZm9yIGZvbyBpbiBmb29zOgogICAg
ICAgICAgICBwcmludCAiKioqIGdldCBiYXIiCiAgICAgICAgICAgIGJhciA9IHRyeUNvbW1pdEZ1
bmN0aW9uKGZvby5nZXRCYXIsICgpKQogICAgICAgICAgICBwcmludCAiKioqIGdldCBiYXIncyBu
YW1lIgogICAgICAgICAgICB0cnlDb21taXRGdW5jdGlvbihiYXIuZ2V0TmFtZSwgKCkpCgpmb3Ig
eCBpbiByYW5nZSgxKToKICAgIFRlc3RUaHJlYWQoZGIpLnN0YXJ0KCkK

--------------Boundary-00=_DZD1TTN97PYYBWPN3QVE--