ZEO manageUndo not working - DisconnectedError
Hello once more, I’m running a fresh Zope2 ZEO setup (pip install --index-url=http://download.zope.org/Zope2/index/2.13.22/ Zope2 and pip install zope.mkzeoinstance) inside a virtualenv setup. As said: No products, fresh setup, happens with any object. Going to any undo tab produces this error: Error Type: DisconnectedError Client log: 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Disconnected from storage: "('localhost', 9999)" 2015-05-06 01:16:46 ERROR Zope.SiteErrorLog 1430867806.070.275579780745 http://192.168.10.38:8080/temp_folder/manage_UndoForm Traceback (innermost last): Module ZPublisher.Publish, line 138, in publish Module ZPublisher.mapply, line 77, in mapply Module ZPublisher.Publish, line 48, in call_object Module Shared.DC.Scripts.Bindings, line 322, in __call__ Module Shared.DC.Scripts.Bindings, line 359, in _bindAndExec Module App.special_dtml, line 185, in _exec Module App.Undo, line 112, in undoable_transactions Module ZODB.DB, line 901, in undoInfo Module ZEO.ClientStorage, line 1283, in undoInfo Module ZEO.ServerStub, line 285, in undoInfo Module ZEO.zrpc.connection, line 776, in call Module ZEO.zrpc.connection, line 796, in wait DisconnectedError 2015-05-06 01:16:46 WARNING ZEO.zrpc (19205) CW: error connecting to ('::1', 9999): ECONNREFUSED 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 9999)> 2015-05-06 01:16:46 INFO ZEO.zrpc.Connection('C') (127.0.0.1:9999) received handshake ‚Z3101' ZEO server log: 2015-05-06T01:15:13 INFO ZEO.zrpc.Connection('S') (127.0.0.1:47063) received handshake 'Z3101' ------ 2015-05-06T01:16:46 ERROR ZEO.zrpc (19082) can't decode message: '(K\x9dI00\nU\x08undoInfo(K\x00K\x14}U\x0bdescriptioncco...' ------ 2015-05-06T01:16:46 ERROR ZEO.zrpc.Connection('S') (127.0.0.1:47063) Error caught in asyncore Traceback (most recent call last): File "/opt/python/2.7.9/lib/python2.7/asyncore.py", line 83, in read obj.handle_read_event() File "/opt/python/2.7.9/lib/python2.7/asyncore.py", line 449, in handle_read_event self.handle_read() File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/smac.py", line 240, in handle_read self.message_input(msg) File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/connection.py", line 417, in message_input msgid, async, name, args = self.decode(message) File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/marshal.py", line 80, in server_decode return unpickler.load() # msgid, flags, name, args File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/marshal.py", line 120, in server_find_global raise ZRPCError("import error %s: %s" % (module, msg)) ZRPCError: import error copy_reg: ------ 2015-05-06T01:16:46 INFO ZEO.StorageServer (127.0.0.1:47063) disconnected The path difference in /opt/python/2.7.9/lib/python2.7/asyncore.py vs /opt/python/zope2-latest/lib/python2.7/site-packages make me wonder if this is a bug or a problem with my setup? Client + ZEO server were created from the same virtualenv. Python 2.7.9 build from source. Any ideas? Best, Sebastian
Am 6. Mai 2015 01:24:50 MESZ, schrieb "Sebastian Tänzer" <st@taenzer.me>:
2015-05-06 01:16:46 WARNING ZEO.zrpc (19205) CW: error connecting to ('::1', 9999): ECONNREFUSED 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 9999)> 2015-05-06 01:16:46 INFO ZEO.zrpc.Connection('C') (127.0.0.1:9999) hmm,
just a small shot in the dark: Even if this "should" work too - why the client tries to connect the IPv4 address of loopback and the error gives the IPv6 of it back? I would try to eleminate this if possible and bring Zope down to IPv4 completely, because there are still many software libraries and applications around (even some underlying os parts) which are not well tested with IPv6. If this solves your prob - no idea... hth a bit. cheerioh, Niels. -- Niels Dettenbach Syndicat IT & Internet http://www.syndicat.com
thanks for the „shot“, yet disabling IPv6 locally on the VM does not help, same error: (server): 2015-05-06T10:05:51 INFO ZEO.StorageServer (127.0.0.1:44833) disconnected ------ 2015-05-06T10:05:51 INFO ZEO.zrpc.Connection('S') (127.0.0.1:44835) received handshake 'Z3101' ------ 2015-05-06T10:06:35 ERROR ZEO.zrpc (3040) can't decode message: '(K\x05I00\nU\x08undoInfo(K\x00K\x14}U\x0bdescriptioncco...' ------ 2015-05-06T10:06:35 ERROR ZEO.zrpc.Connection('S') (127.0.0.1:44835) Error caught in asyncore Traceback (most recent call last): File "/opt/python/2.7.9/lib/python2.7/asyncore.py", line 83, in read obj.handle_read_event() File "/opt/python/2.7.9/lib/python2.7/asyncore.py", line 449, in handle_read_event self.handle_read() File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/smac.py", line 240, in handle_read self.message_input(msg) File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/connection.py", line 417, in message_input msgid, async, name, args = self.decode(message) File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/marshal.py", line 80, in server_decode return unpickler.load() # msgid, flags, name, args File "/opt/python/zope2-latest/lib/python2.7/site-packages/ZEO/zrpc/marshal.py", line 120, in server_find_global raise ZRPCError("import error %s: %s" % (module, msg)) ZRPCError: import error copy_reg: ------ 2015-05-06T10:06:35 INFO ZEO.StorageServer (127.0.0.1:44835) disconnected ------ 2015-05-06T10:06:35 INFO ZEO.zrpc.Connection('S') (127.0.0.1:44837) received handshake ‚Z3101' More ideas? :-)
Am 06.05.2015 um 07:42 schrieb Niels Dettenbach (Syndicat IT & Internet) <nd@syndicat.com>:
Am 6. Mai 2015 01:24:50 MESZ, schrieb "Sebastian Tänzer" <st@taenzer.me>:
2015-05-06 01:16:46 WARNING ZEO.zrpc (19205) CW: error connecting to ('::1', 9999): ECONNREFUSED 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 9999)> 2015-05-06 01:16:46 INFO ZEO.zrpc.Connection('C') (127.0.0.1:9999) hmm,
just a small shot in the dark: Even if this "should" work too - why the client tries to connect the IPv4 address of loopback and the error gives the IPv6 of it back?
I would try to eleminate this if possible and bring Zope down to IPv4 completely, because there are still many software libraries and applications around (even some underlying os parts) which are not well tested with IPv6.
If this solves your prob - no idea...
hth a bit. cheerioh,
Niels. -- Niels Dettenbach Syndicat IT & Internet http://www.syndicat.com
Good morning all, after further testing we noticed our Zope2 virtualenv setup was done with the ZMS3 (CMS) install routine using pip install ZMS3 --process-dependency-links. This installed different package versions. The original pip Zope2 uses these versions: http://pastebin.com/ZEwhVba0 The ZMS3 people use these versions: http://pastebin.com/iu43Ss5w For example, the ZMS3 setup uses: • ZopeUndo==4.0 • ZODB==4.1.0 • ZODB3==3.11.0 as the original Zope2 uses: • ZODB3==3.10.5 No ZEO, no ZODB packages. Why is Zope2 using the old 3.10 ZODB version and why is there no ZODB4 installed? ZEO server and clients still work fine without these packages. The thing is, I notice a lot worse performance with the ZODB, especially with traversal, using the native Zope2 setup routine. Catalog search takes almost 2-3 seconds compared to the ZMS3 versions with a local non-ZEO-Zope instance. With the ZMS3 versions ZODB usage is a LOT faster, but there are problems with Undo for example in combination with ZEO. Any ideas on this? I don’t get this version jungle... Best Sebastian
Am 06.05.2015 um 07:42 schrieb Niels Dettenbach (Syndicat IT & Internet) <nd@syndicat.com>:
Am 6. Mai 2015 01:24:50 MESZ, schrieb "Sebastian Tänzer" <st@taenzer.me>:
2015-05-06 01:16:46 WARNING ZEO.zrpc (19205) CW: error connecting to ('::1', 9999): ECONNREFUSED 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 9999)> 2015-05-06 01:16:46 INFO ZEO.zrpc.Connection('C') (127.0.0.1:9999) hmm,
just a small shot in the dark: Even if this "should" work too - why the client tries to connect the IPv4 address of loopback and the error gives the IPv6 of it back?
I would try to eleminate this if possible and bring Zope down to IPv4 completely, because there are still many software libraries and applications around (even some underlying os parts) which are not well tested with IPv6.
If this solves your prob - no idea...
hth a bit. cheerioh,
Niels. -- Niels Dettenbach Syndicat IT & Internet http://www.syndicat.com
After more „research“ I see that the ZMS3 pip packages uses completely different versions that don’t seem to be compatible with ZEO (at least Undo is not working). I’m aware „undo“ is not a really used feature at all as revisions most of the time are beeing implemented by products. My only fear is that we’re running into other problems with the ZODB if the base setup is using wrong versions and I’d like to avoid that. Examples: zope2 via pip uses Aquisition 2.13.8 zope2 via ZMS3 installed via pip uses Aquisition 4.1 zope2 via pip uses ZopeUndo 2.12.0 zope2 via ZMS3 installed via pip uses ZopeUndo 4.0 Most packages with ZMS3 install are newer versions. So, basic question: What is the recommended way to setup Zope2 with ZEO. Which versions work? It seems almost impossible to understand what versions should be used. The Zope2 egg uses way older versions. Any problems with that? Which packages are safe to update? Also, there were some patches by the ZMS people last year (https://github.com/zopefoundation/Zope/pull/13) - but Zope2 installed via pip works just fine here. Using newer package versions require the patches though. What is the „best“ setup if I’m using ZEO to connect with Zope2 ZEO clients AND from other remote setups (non Zope-Clients, Python command line code working with the ZODB via ClientStorage). Maybe Tres could give me some insight on this? Best, Sebastian
Am 06.05.2015 um 07:42 schrieb Niels Dettenbach (Syndicat IT & Internet) <nd@syndicat.com>:
Am 6. Mai 2015 01:24:50 MESZ, schrieb "Sebastian Tänzer" <st@taenzer.me>:
2015-05-06 01:16:46 WARNING ZEO.zrpc (19205) CW: error connecting to ('::1', 9999): ECONNREFUSED 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 9999)> 2015-05-06 01:16:46 INFO ZEO.zrpc.Connection('C') (127.0.0.1:9999) hmm,
just a small shot in the dark: Even if this "should" work too - why the client tries to connect the IPv4 address of loopback and the error gives the IPv6 of it back?
I would try to eleminate this if possible and bring Zope down to IPv4 completely, because there are still many software libraries and applications around (even some underlying os parts) which are not well tested with IPv6.
If this solves your prob - no idea...
hth a bit. cheerioh,
Niels. -- Niels Dettenbach Syndicat IT & Internet http://www.syndicat.com
After further testing I was able to sort this one out by downgrading ZopeUndo to 2.12.0 (pip install ZopeUndo==2.12.0 --force —upgrade). PyPi only said 4.0 brought Py3 compability. Should I expect any problems using ZopeUndo 2.12 + ZEO/ZODB4/ZODB3 with their latest versions? Best, Sebastian
Am 06.05.2015 um 07:42 schrieb Niels Dettenbach (Syndicat IT & Internet) <nd@syndicat.com>:
Am 6. Mai 2015 01:24:50 MESZ, schrieb "Sebastian Tänzer" <st@taenzer.me>:
2015-05-06 01:16:46 WARNING ZEO.zrpc (19205) CW: error connecting to ('::1', 9999): ECONNREFUSED 2015-05-06 01:16:46 INFO ZEO.ClientStorage zeostorage Testing connection <ManagedClientConnection ('127.0.0.1', 9999)> 2015-05-06 01:16:46 INFO ZEO.zrpc.Connection('C') (127.0.0.1:9999) hmm,
just a small shot in the dark: Even if this "should" work too - why the client tries to connect the IPv4 address of loopback and the error gives the IPv6 of it back?
I would try to eleminate this if possible and bring Zope down to IPv4 completely, because there are still many software libraries and applications around (even some underlying os parts) which are not well tested with IPv6.
If this solves your prob - no idea...
hth a bit. cheerioh,
Niels. -- Niels Dettenbach Syndicat IT & Internet http://www.syndicat.com
Hi Sebastian, Am 06.05.2015 um 15:26 schrieb Sebastian Tänzer:
After further testing I was able to sort this one out by downgrading ZopeUndo to 2.12.0 (pip install ZopeUndo==2.12.0 --force —upgrade). PyPi only said 4.0 brought Py3 compability. Should I expect any problems using ZopeUndo 2.12 + ZEO/ZODB4/ZODB3 with their latest versions?
Undo has long been a standard functionality in Zope2 but proven to be quite dangerous as it is possible to totally mess up your object tree. IIRC undo has therefore been removed even from the ZODB - that is what you are experiencing with the current version. What seems to work quite well is to enable history support where you have access to every old transaction and can compare or copy them to be on top of the stack - which avoids the problem with disappearing transactions as Undo has. Unfortunately out of the box only a few Products have history support enabled. Some monkey patching can enable it for many of the other Products of stock Zope2. ObjectManager/Folder is a bit limited since accessing a whole historic version of a subtree can't be done easily. However, if you are interested and want to try: http://old.zope.org/Members/tino/PatchHistory/view (very old, but seems to work with the 2.12 at least) Best, Tino
Best, Sebastian
participants (3)
-
Niels Dettenbach (Syndicat IT & Internet) -
Sebastian Tänzer -
Tino Wildenhain