• Kirill Smelkov's avatar
    go/zodb/fs1/index: Don't rely on []byte being pickled as string · c72aaa0d
    Kirill Smelkov authored
    As https://github.com/kisielk/og-rek/pull/57 maybe shows []byte was
    pickling as string only unintentionally and that might change.
    
    We are already explicitly checking for string in corresponding index
    load place:
    
    	https://lab.nexedi.com/kirr/neo/blob/2dba8607/go/zodb/storage/fs1/index.go#L282
    
    so it is better we also explicitly save the bits as string.
    
    If we don't and https://github.com/kisielk/og-rek/pull/57 gets accepted,
    tests will fail:
    
    	--- FAIL: TestIndexSaveLoad (0.00s)
    	    index_test.go:176: index load: /tmp/t-index893650059/458967662/1.fs.index: pickle @6: invalid oidPrefix: type []uint8
    	Traceback (most recent call last):
    	  File "./py/indexcmp", line 41, in <module>
    	    main()
    	  File "./py/indexcmp", line 29, in main
    	    d2 = fsIndex.load(path2)
    	  File "/home/kirr/src/wendelin/z/ZODB/src/ZODB/fsIndex.py", line 138, in load
    	    data[ensure_bytes(k)] = fsBucket().fromString(ensure_bytes(v))
    	  File "/home/kirr/src/wendelin/z/ZODB/src/ZODB/fsIndex.py", line 71, in ensure_bytes
    	    return s.encode('ascii') if not isinstance(s, bytes) else s
    	AttributeError: 'bytearray' object has no attribute 'encode'
    	--- FAIL: TestIndexSaveToPy (0.04s)
    	    index_test.go:218: zodb/py read/compare index: exit status 1
    c72aaa0d
index.go 18.1 KB