- 09 Dec, 2020 1 commit
-
-
Kirill Smelkov authored
Tighten up security. NEO/py does something similar: https://lab.nexedi.com/nexedi/neoppod/blob/v1.12-61-gc1c26894/neo/lib/app.py#L76-78 On CPython 2.7.18: In [7]: list((k for k in dir(ssl) if k.startswith("PROTOCOL_TLSv"))) Out[7]: ['PROTOCOL_TLSv1', 'PROTOCOL_TLSv1_1', 'PROTOCOL_TLSv1_2']
-
- 08 Dec, 2020 1 commit
-
-
Kirill Smelkov authored
-
- 30 Nov, 2020 1 commit
-
-
Kirill Smelkov authored
nexedi/nxdtest@53064e71
-
- 27 Nov, 2020 1 commit
-
-
Kirill Smelkov authored
It was not the case with ZEO4 server because we did not had ZEO@bf80d23d yet.
-
- 15 Nov, 2020 1 commit
-
-
Kirill Smelkov authored
-
- 05 Nov, 2020 9 commits
-
-
Kirill Smelkov authored
* master: go/zodb/zeo: Correctly prefix zLink-related errors with operational context go/{zeo,neo}: handshake: Report "unexpected EOF" if peer sends only partial data go/{zeo,neo}: Don't tolerate if a packet reads only partially go/zodb/fs1: Factor-out noEOF and okEOF into common place (-> internal/xio)
-
Kirill Smelkov authored
Go through zrpc and add error context to every function that can create error. This is similar to what NEO does in neonet. The reason to do this was the following obscure error from wcfs: E1105 11:32:33.295497 24639 wcfs.go:2505] zwatch zeo://:28359: EOF which, after this patch, is now E1105 12:53:15.922052 30731 wcfs.go:2510] zwatch zeo://:27024: zlink 127.0.0.1:47768 - 127.0.0.1:27024: recvPkt: EOF
-
Kirill Smelkov authored
NEO was already doing this, but let's use xio.NoEOF everywhere for uniformity.
-
Kirill Smelkov authored
If remote peer closes the link half-way of packet data - turn EOF into ErrUnexpectedEOF.
-
Kirill Smelkov authored
We will need to use those utilities for ZEO and NEO.
-
Kirill Smelkov authored
Go through zrpc and add error context to every function that can create error. This is similar to what NEO does in neonet. The reason to do this was the following obscure error from wcfs: E1105 11:32:33.295497 24639 wcfs.go:2505] zwatch zeo://:28359: EOF which, after this patch, is now E1105 12:53:15.922052 30731 wcfs.go:2510] zwatch zeo://:27024: zlink 127.0.0.1:47768 - 127.0.0.1:27024: recvPkt: EOF
-
Kirill Smelkov authored
NEO was already doing this, but let's use xio.NoEOF everywhere for uniformity.
-
Kirill Smelkov authored
If remote peer closes the link half-way of packet data - turn EOF into ErrUnexpectedEOF.
-
Kirill Smelkov authored
We will need to use those utilities for ZEO and NEO.
-
- 04 Nov, 2020 10 commits
-
-
Kirill Smelkov authored
* master: go/neo/neonet: Increase signal/noise in dump of packets with decode problems fixup! go/neo/proto: Switch enum encoding from int32 to int8 go/zodb/zeo: Load: loadBefore RPC can return None to indicate non-existing object go/internal/xtesting: DrvTestLoad: Verify load of non-existing and not-yet-created objects
-
Kirill Smelkov authored
We recently hit "decode: buffer overflow" errors due to mismatch in between NEO/go and NEO/py (see previous patch). With dumpio=true that problem was showing itself as 127.0.0.1:50624 > 127.0.0.1:41863: .5 GetObject &{0000000000000000 ffffffffffffffff 0285cbac258bf266} 127.0.0.1:50624 < 127.0.0.1:41863: .5 (proto.Error) decode: buffer overflow; #24 [24]: 00 00 00 03 00 00 00 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 Error ACK ; [24]tail: 00 00 00 03 00 00 00 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:24078: load 0285cbac258bf265:0000000000000000: 127.0.0.1:50624 - 127.0.0.1:41863 .5: decode: decode: buffer overflow want: neo://1@127.0.0.1:24078: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created Here after printing error and dumping all bytes from packet payload, it was printing again message type, message value from to-be-decoded place (which is zero-initialized) and data bytes again. -> Fix it not to print anything after dump of payload data: 127.0.0.1:60518 > 127.0.0.1:46719: .5 GetObject &{0000000000000000 ffffffffffffffff 0285cbac258bf266} 127.0.0.1:60518 < 127.0.0.1:46719: .5 (Error) decode: buffer overflow; #24 [24]: 00 00 00 03 00 00 00 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:27853: load 0285cbac258bf265:0000000000000000: 127.0.0.1:60518 - 127.0.0.1:46719 .5: decode: decode: buffer overflow want: neo://1@127.0.0.1:27853: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created
-
Kirill Smelkov authored
In commit 5f13cc85 I changed enum encodings from int32 to int8, but did not noticed that NEO/py commit 52db5607 ("protocol: a single byte is more than enough to encode enums") despite specified intent and ErrorCodes being marked with @Enum, changed encoding only for fields that are marked as PEnum in structures. In NEO/py the Error.code field is still marked as PNumber which encodes as 32-bit integer on the wire. -> Fix it back. With recent xtesting.DrvTestLoad update this error was manifesting itself as (on @t branch): --- FAIL: TestLoad (2.08s) --- FAIL: TestLoad/py (2.07s) xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac258bf265:0000000000000000: 127.0.0.1:42288 - 127.0.0.1:37109 .5: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac3d0369e5:0000000000000001: 127.0.0.1:42288 - 127.0.0.1:37109 .13: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: object was not yet created xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac41b4e832:0000000000000002: 127.0.0.1:42288 - 127.0.0.1:37109 .21: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac41b4e832:0000000000000002: 0000000000000002: object was not yet created xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac4666667f:0000000000000003: 127.0.0.1:42288 - 127.0.0.1:37109 .29: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac4666667f:0000000000000003: 0000000000000003: object was not yet created xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac4fc96318:0000000000000004: 127.0.0.1:42288 - 127.0.0.1:37109 .41: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac4fc96318:0000000000000004: 0000000000000004: object was not yet created xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac547ae165:0000000000000005: 127.0.0.1:42288 - 127.0.0.1:37109 .49: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac547ae165:0000000000000005: 0000000000000005: object was not yet created xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac628f5c4b:0000000000000006: 127.0.0.1:42288 - 127.0.0.1:37109 .65: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: object was not yet created xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbaca444447f:0000000000000007: 127.0.0.1:42288 - 127.0.0.1:37109 .125: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbaca444447f:0000000000000007: 0000000000000007: object was not yet created xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbacbbbbbbff:0000000000000008: 127.0.0.1:42288 - 127.0.0.1:37109 .149: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: object was not yet created xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbad80da7498:0000000000000009: 127.0.0.1:42288 - 127.0.0.1:37109 .269: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbad80da7498:0000000000000009: 0000000000000009: object was not yet created xtesting.go:331: load 7fffffffffffffff:000000000000000a: returned err unexpected: have: neo://1@127.0.0.1:32731: load 7fffffffffffffff:000000000000000a: 127.0.0.1:42288 - 127.0.0.1:37109 .295: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 7fffffffffffffff:000000000000000a: 000000000000000a: no such object
-
Kirill Smelkov authored
Before this patch and with updated DrvTestLoad (see previous patch) it was failing as: --- FAIL: TestLoad (0.52s) --- FAIL: TestLoad/py/msgpack=false (0.25s) xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: 0000000000000000: no such object xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: no such object xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: 0000000000000002: no such object xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: 0000000000000003: no such object xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: 0000000000000004: no such object xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: 0000000000000005: no such object xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: no such object xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: 0000000000000007: no such object xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: no such object xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: 0000000000000009: no such object --- FAIL: TestLoad/py/msgpack=true (0.26s) xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: 0000000000000000: no such object xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: no such object xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: 0000000000000002: no such object xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: 0000000000000003: no such object xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: 0000000000000004: no such object xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: 0000000000000005: no such object xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: no such object xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: 0000000000000007: no such object xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: no such object xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: 0000000000000009: no such object
-
Kirill Smelkov authored
This currently fails on ZEO and NEO. Those storages will be fixed in the following patches (NEO only on @t branch for now).
-
Kirill Smelkov authored
Providing deletedAt in addition to oid in OID_NOT_FOUND error is NEO/go extension. NEO/py sends only OidNotFound(oid): https://lab.nexedi.com/nexedi/neoppod/blob/v1.12-0-g6332112c/neo/storage/handlers/client.py#L70-72 -> decode deletedAt only if it is present. Since inspecting NEO/py codebase turned out that message always comes with oid, remove the "abusing" words about this approach to convey oid via error message for OID_NOT_FOUND and OID_DOES_NOT_EXIST. Without this patch TestLoad was failing as === RUN TestLoad/py I: runneo.py: /tmp/neo124851059/1: started master(s): 127.0.0.1:19681 xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac258bf265:0000000000000000: OID_NOT_FOUND: 0000000000000000 want: neo://1@127.0.0.1:19681: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac3d0369e5:0000000000000001: OID_NOT_FOUND: 0000000000000001 want: neo://1@127.0.0.1:19681: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: object was not yet created xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac41b4e832:0000000000000002: OID_NOT_FOUND: 0000000000000002 want: neo://1@127.0.0.1:19681: load 0285cbac41b4e832:0000000000000002: 0000000000000002: object was not yet created xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac4666667f:0000000000000003: OID_NOT_FOUND: 0000000000000003 want: neo://1@127.0.0.1:19681: load 0285cbac4666667f:0000000000000003: 0000000000000003: object was not yet created xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac4fc96318:0000000000000004: OID_NOT_FOUND: 0000000000000004 want: neo://1@127.0.0.1:19681: load 0285cbac4fc96318:0000000000000004: 0000000000000004: object was not yet created xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac547ae165:0000000000000005: OID_NOT_FOUND: 0000000000000005 want: neo://1@127.0.0.1:19681: load 0285cbac547ae165:0000000000000005: 0000000000000005: object was not yet created xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbac628f5c4b:0000000000000006: OID_NOT_FOUND: 0000000000000006 want: neo://1@127.0.0.1:19681: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: object was not yet created xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbaca444447f:0000000000000007: OID_NOT_FOUND: 0000000000000007 want: neo://1@127.0.0.1:19681: load 0285cbaca444447f:0000000000000007: 0000000000000007: object was not yet created xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbacbbbbbbff:0000000000000008: OID_NOT_FOUND: 0000000000000008 want: neo://1@127.0.0.1:19681: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: object was not yet created xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: neo://1@127.0.0.1:19681: load 0285cbad80da7498:0000000000000009: OID_NOT_FOUND: 0000000000000009 want: neo://1@127.0.0.1:19681: load 0285cbad80da7498:0000000000000009: 0000000000000009: object was not yet created
-
Kirill Smelkov authored
We recently hit "decode: buffer overflow" errors due to mismatch in between NEO/go and NEO/py (see previous patch). With dumpio=true that problem was showing itself as 127.0.0.1:50624 > 127.0.0.1:41863: .5 GetObject &{0000000000000000 ffffffffffffffff 0285cbac258bf266} 127.0.0.1:50624 < 127.0.0.1:41863: .5 (proto.Error) decode: buffer overflow; #24 [24]: 00 00 00 03 00 00 00 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 Error ACK ; [24]tail: 00 00 00 03 00 00 00 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:24078: load 0285cbac258bf265:0000000000000000: 127.0.0.1:50624 - 127.0.0.1:41863 .5: decode: decode: buffer overflow want: neo://1@127.0.0.1:24078: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created Here after printing error and dumping all bytes from packet payload, it was printing again message type, message value from to-be-decoded place (which is zero-initialized) and data bytes again. -> Fix it not to print anything after dump of payload data: 127.0.0.1:60518 > 127.0.0.1:46719: .5 GetObject &{0000000000000000 ffffffffffffffff 0285cbac258bf266} 127.0.0.1:60518 < 127.0.0.1:46719: .5 (Error) decode: buffer overflow; #24 [24]: 00 00 00 03 00 00 00 10 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:27853: load 0285cbac258bf265:0000000000000000: 127.0.0.1:60518 - 127.0.0.1:46719 .5: decode: decode: buffer overflow want: neo://1@127.0.0.1:27853: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created
-
Kirill Smelkov authored
In commit 144dafa0 I changed enum encodings from int32 to int8, but did not noticed that NEO/py commit 52db5607 ("protocol: a single byte is more than enough to encode enums") despite specified intent and ErrorCodes being marked with @Enum, changed encoding only for fields that are marked as PEnum in structures. In NEO/py the Error.code field is still marked as PNumber which encodes as 32-bit integer on the wire. -> Fix it back. With recent xtesting.DrvTestLoad update this error was manifesting itself as --- FAIL: TestLoad (2.08s) --- FAIL: TestLoad/py (2.07s) xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac258bf265:0000000000000000: 127.0.0.1:42288 - 127.0.0.1:37109 .5: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac258bf265:0000000000000000: 0000000000000000: object was not yet created xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac3d0369e5:0000000000000001: 127.0.0.1:42288 - 127.0.0.1:37109 .13: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: object was not yet created xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac41b4e832:0000000000000002: 127.0.0.1:42288 - 127.0.0.1:37109 .21: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac41b4e832:0000000000000002: 0000000000000002: object was not yet created xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac4666667f:0000000000000003: 127.0.0.1:42288 - 127.0.0.1:37109 .29: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac4666667f:0000000000000003: 0000000000000003: object was not yet created xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac4fc96318:0000000000000004: 127.0.0.1:42288 - 127.0.0.1:37109 .41: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac4fc96318:0000000000000004: 0000000000000004: object was not yet created xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac547ae165:0000000000000005: 127.0.0.1:42288 - 127.0.0.1:37109 .49: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac547ae165:0000000000000005: 0000000000000005: object was not yet created xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbac628f5c4b:0000000000000006: 127.0.0.1:42288 - 127.0.0.1:37109 .65: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: object was not yet created xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbaca444447f:0000000000000007: 127.0.0.1:42288 - 127.0.0.1:37109 .125: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbaca444447f:0000000000000007: 0000000000000007: object was not yet created xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbacbbbbbbff:0000000000000008: 127.0.0.1:42288 - 127.0.0.1:37109 .149: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: object was not yet created xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: neo://1@127.0.0.1:32731: load 0285cbad80da7498:0000000000000009: 127.0.0.1:42288 - 127.0.0.1:37109 .269: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 0285cbad80da7498:0000000000000009: 0000000000000009: object was not yet created xtesting.go:331: load 7fffffffffffffff:000000000000000a: returned err unexpected: have: neo://1@127.0.0.1:32731: load 7fffffffffffffff:000000000000000a: 127.0.0.1:42288 - 127.0.0.1:37109 .295: decode: decode: buffer overflow want: neo://1@127.0.0.1:32731: load 7fffffffffffffff:000000000000000a: 000000000000000a: no such object
-
Kirill Smelkov authored
Before this patch and with updated DrvTestLoad (see previous patch) it was failing as: --- FAIL: TestLoad (0.52s) --- FAIL: TestLoad/py/msgpack=false (0.25s) xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: 0000000000000000: no such object xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: no such object xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: 0000000000000002: no such object xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: 0000000000000003: no such object xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: 0000000000000004: no such object xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: 0000000000000005: no such object xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: no such object xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: 0000000000000007: no such object xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: no such object xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: /tmp/zeo535364855/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: /tmp/zeo535364855/1.fs.zeosock: call loadBefore: unexpected reply: got ogórek.None{}; expect 3-tuple want: /tmp/zeo535364855/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: 0000000000000009: no such object --- FAIL: TestLoad/py/msgpack=true (0.26s) xtesting.go:306: load 0285cbac258bf265:0000000000000000: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac258bf265:0000000000000000: 0000000000000000: no such object xtesting.go:306: load 0285cbac3d0369e5:0000000000000001: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac3d0369e5:0000000000000001: 0000000000000001: no such object xtesting.go:306: load 0285cbac41b4e832:0000000000000002: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac41b4e832:0000000000000002: 0000000000000002: no such object xtesting.go:306: load 0285cbac4666667f:0000000000000003: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4666667f:0000000000000003: 0000000000000003: no such object xtesting.go:306: load 0285cbac4fc96318:0000000000000004: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac4fc96318:0000000000000004: 0000000000000004: no such object xtesting.go:306: load 0285cbac547ae165:0000000000000005: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac547ae165:0000000000000005: 0000000000000005: no such object xtesting.go:306: load 0285cbac628f5c4b:0000000000000006: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbac628f5c4b:0000000000000006: 0000000000000006: no such object xtesting.go:306: load 0285cbaca444447f:0000000000000007: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbaca444447f:0000000000000007: 0000000000000007: no such object xtesting.go:306: load 0285cbacbbbbbbff:0000000000000008: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbacbbbbbbff:0000000000000008: 0000000000000008: no such object xtesting.go:306: load 0285cbad80da7498:0000000000000009: returned err unexpected: have: /tmp/zeo794664426/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: /tmp/zeo794664426/1.fs.zeosock: call loadBefore: zlink is closed want: /tmp/zeo794664426/1.fs.zeosock: load 0285cbad80da7498:0000000000000009: 0000000000000009: no such object
-
Kirill Smelkov authored
This currently fails on ZEO and NEO. Those storages will be fixed in the following patches.
-
- 03 Nov, 2020 6 commits
-
-
Kirill Smelkov authored
-
Kirill Smelkov authored
-
Kirill Smelkov authored
* master: neotest: test-go: Disable test results caching go/neo/t: nxd/runTestSuite was generalized and factored-out into nxdtest
-
Kirill Smelkov authored
-
Kirill Smelkov authored
Starting from Go1.10 `go test` caches successful test results[1]. However we want to torture the implementation and run the tests for real each time `neotest test-go` is ran. -> Disable tests caching [1] https://golang.org/doc/go1.10#test
-
Kirill Smelkov authored
See: - https://lab.nexedi.com/nexedi/nxdtest - https://lab.nexedi.com/nexedi/nxdtest/blob/master/nxdtest/__init__.py - nexedi/nxdtest@d575236a - nexedi/slapos!839 -> Leave only .nxdtest file with neotest-specific bits to be run by nxdtest driver.
-
- 01 Nov, 2020 10 commits
-
-
Kirill Smelkov authored
* master:
-
Kirill Smelkov authored
* origin/old-proto: qa: skip broken ZODB test client: fix race with invalidations when starting a new transaction on ZODB 5 Code clean-up, comment fixes master: fix crash in STARTING_BACKUP when connecting to an upstream secondary master mysql: workaround for MDEV-20693 client: inline Application._loadFromCache client: replace global load lock by a per-oid one client: unindent code client: remove load lock in tpc_finish qa: check cache in testExternalInvalidation qa: comment testExternalInvalidation2
-
Kirill Smelkov authored
* origin/old-proto: qa: skip broken ZODB test client: fix race with invalidations when starting a new transaction on ZODB 5 Code clean-up, comment fixes master: fix crash in STARTING_BACKUP when connecting to an upstream secondary master mysql: workaround for MDEV-20693 client: inline Application._loadFromCache client: replace global load lock by a per-oid one client: unindent code client: remove load lock in tpc_finish qa: check cache in testExternalInvalidation qa: comment testExternalInvalidation2
-
Kirill Smelkov authored
* master: go/neo/proto: Version 5 -> 6 go/neo/proto: tweak += dry-run go/neo/proto: ErrorCode += DENIED go/neo/proto: AnswerPartitionList += NumReplicas go/neo/proto: Sync with NEO/py on changes to make the number of replicas modifiable at runtime go/neo/proto: RequestIdentification += NewNID; Move .DevPath
-
Kirill Smelkov authored
-
Kirill Smelkov authored
This protocol version corresponds to protocol version used by NEO/py v1.12 and was set in NEO/py commit c6453626 (Bump protocol version). The protocol definition was updated to match that NEO/py release in the previous patches.
-
Kirill Smelkov authored
This corresponds to NEO/py commit 2a27239d (tweak: add option to simulate).
-
Kirill Smelkov authored
This corresponds to NEO/py commit c2c9e99d (Better error reporting from the master to neoctl for denied requests).
-
Kirill Smelkov authored
This corresponds to NEO/py commit 21190ee7 (Make 'neoctl print pt' report the number of replicas).
-
Kirill Smelkov authored
This corresponds to NEO/py commit ef5fc508 (Make the number of replicas modifiable when the cluster is running). One important change in the protocol is that Client no longer queries Master for partition table - instead M pushed partTab to C right after identification (after pushing nodeTab). See also: https://neo.nexedi.com/P-NEO-Protocol.Specification.2019?portal_skin=CI_slideshow#/9/5
-