Six years seems like more than enough warning, and the data corruption
bug fixed in 1.3.1 is pretty bad.
This also gives us an opportunity to clean up a DeprecationWarning:
The distutils package is deprecated and slated for removal in
Python 3.12. Use setuptools or check PEP 632 for potential
alternatives
Change-Id: Ic34b671dfb2b5bfa7e3a21813cd49d7b720cc94a
Closes-Bug: #1639691
* Update pike to train
* Fix pep8
* Mark jobs based on legacy jobs non-voting until we can replace them
Change-Id: Ia83ad102bb5c096b01ce73bffb86d44732d2c784
...and clean up the unused variables, unused imports, and inconsistent
spacing that flake8 revealed.
Change-Id: I3ae1e834f01f477be88dfc48de954eeaf19e43cf
- Add a docstring, since I can never remember the **kwargs.
- Drop the (unused) *args.
- Raise an error earlier if neither ec_type nor library_import_str
is provided.
Change-Id: I38b71ede59b6b0e249223792207b0f48438f7b97
Currently, there are several implementations of erasure codes that are
available within OpenStack Swift. Most, if not all, of which are based
on the Reed Solomon coding algorithm.
Phazr.IO’s Erasure Coding technology uses a patented algorithm which are
significantly more efficient and improves the speed of coding, decoding
and reconstruction. In addition, Phazr.IO Erasure Code use a non-systematic
algorithm which provides data protection at rest and in transport without
the need to use encryption.
Please contact support@phazr.io for more info on our technology.
Change-Id: I9377fa32426a190efd0a7f0675ecf13d7e90367d
This is for supporting ISA-L cauchy based matrix. The difference
from isa_l_rs_vand is only the matrix to use the encode/decode
calculation.
As a known issue, isa_l_rs_vand backend has constraint for the
combinations of the available fragment to be able to
decode/reconstuct. (See related change in detail)
To avoid the constraint, this patch adds another isa-l backend to use
cauchy matrix. The reason I try to add this intead of changing at
sa_l_rs_vand, the isa_l_rs_vand backend may be already used and if we
change the matrix, the current users won't be able to decode the data.
To avoid the problem and keep the backward compatibility, this is in
another isa_l_rs_cauchy namespace.
NOTE: this depends on tag may be meaningless because the depending target
is a c lang project so probably no scripts to install it we have and then,
almost of the tests for isa-l will be skipped due to a lack of isa-l
backend installation.
Related-Change: Icee788a0931fe692fe0de31fabc4ba450e338a87
Depends-On: I6eb150d9d0c3febf233570fa7729f9f72df2e9be
Change-Id: I3a5516545d17ab7ac67a9a3627c85243e2110764
To apply the fix for a liberasurecode issue [1], we need hard depencency
of liberasurecode requires >=1.3.1. However current binary dependency
maintainance tool "bindep" works only for packagers' repository. (i.e. it
refers the version of apt/yum/etc...) And nothing is cared for the binary
built from source.
This patch provides a way to detect incompatible liberasurecode and
makes a warning log line to syslog which suggest "you're using older
liberasurecode which will be deprecated, please upgrade it".
NOTE:
- This dependency managemnet depends on erasurecode_version.h header
file in liberasurecode. i.e. it cannot care of overwritten .so library
after PyECLib built once.
Partial-Bug: #1639691
1: Icee788a0931fe692fe0de31fabc4ba450e338a87
Change-Id: Ice5e96f0a59096cc9067823f0d62d6c7065ed62f
* Test flat_xor_hd decoding/reconstruction
* Use random input
* Make py3-friendly
Additionally:
* Accept iterables as fragment payloads, rather than just lists
* Add a __repr__ for ECDrivers
Change-Id: Ic5b5e5ef2420afdc318b403fcbea1ff106e16a33
Right now ECDriver doesn't check if k, m exist in the kwargs for init.
That can tigger unfortunately success to init and that will fail at
encode/decode (or result in odd with get_segment_info)
Once, we have jerasure_rs_vand in default, that worked becuase jerasure
did the assertion for the k, m parameters but we can reproduce the
failures which this patch want fix with like:
driver = ECDriver(ec_type='liberasurecode_rs_vand') # <- this is
default and it succeeded!
driver.encode(' ') # <- And then, this will result in ECDriverError:
Out of memory, whooa!
This patch fixes this to check the k, m existence in the init process.
Change-Id: I0757c0a4e510ba42f357db0cac22861919d0ca26
Plus, we need liberasurecode version handling for a few place because
some tests/engine itself is broken with a lack of backword
compatibility.
Closes-Bug: #1586220
Change-Id: I72adaefa10875a73e3e5304eb40fe5d9f6d2598a
* Use relative imports
* Fix bytes/unicode issues in tests
* Replace long() with int()
* Replace a/b with a//b to get integer division
* Use a key function to sort list
* Replace zip() with list(zip()) in a test to get a list on Python 3
If ECDriverError is initialized with a non-string argument then its
str method returns non-string, it will return a confusable message
for users.
This patch fixes ECDriverError to set a string message when
the argument doesn't have str method which return a string.