)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6c7ee720b164122a6c6571875a612d9859e77ecf","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-07 09:23:15 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Drop support for old liberasurecode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Five years seems like more than enough warning, and the data corruption"},{"line_number":10,"context_line":"bug is pretty bad."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"a7c764ed_6d3a432e","line":7,"updated":"2022-12-19 19:35:27.000000000","message":"This really needs to specify what the new minimum version is.","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7547fb5d57837cd15558775f70735246a4adc7ea","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Tim Burke \u003ctim.burke@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2022-11-07 09:23:15 -0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Drop support for old liberasurecode"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Five years seems like more than enough warning, and the data corruption"},{"line_number":10,"context_line":"bug is pretty bad."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"af6fed5f_f436d15c","line":7,"in_reply_to":"a7c764ed_6d3a432e","updated":"2023-05-02 20:49:20.000000000","message":"Done","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f3adfb5fe500bde5f30d8e8b27c7c10dfe40065b","unresolved":true,"context_lines":[{"line_number":9,"context_line":"Six years seems like more than enough warning, and the data corruption"},{"line_number":10,"context_line":"bug fixed in 1.3.1 is pretty bad."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note that you can still *build bdists* with old libec, and you won\u0027t be"},{"line_number":13,"context_line":"able to tell that things are broken until run time. Even if we could"},{"line_number":14,"context_line":"reliably block that, though, you could still do some pathological things"},{"line_number":15,"context_line":"like build with new libec, then install with old libec, so..."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1eb0fa37_92647959","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":53},"updated":"2023-04-28 21:10:54.000000000","message":"Actually, I\u0027m not sure that\u0027s true since I rewrote \u0026 simplified `pyeclib_c_liberasurecode_version`...","commit_id":"6728e5d1f59d00a4fc5a369be62090054969fd21"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc16a0ac715572742e44cbe7759e6bb6e72a0a02","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Six years seems like more than enough warning, and the data corruption"},{"line_number":10,"context_line":"bug fixed in 1.3.1 is pretty bad."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Note that you can still *build bdists* with old libec, and you won\u0027t be"},{"line_number":13,"context_line":"able to tell that things are broken until run time. Even if we could"},{"line_number":14,"context_line":"reliably block that, though, you could still do some pathological things"},{"line_number":15,"context_line":"like build with new libec, then install with old libec, so..."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"30f0db03_95a04cde","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":53},"in_reply_to":"1eb0fa37_92647959","updated":"2023-11-09 17:36:10.000000000","message":"Ack","commit_id":"6728e5d1f59d00a4fc5a369be62090054969fd21"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"07662ea001b668cbf54a55d705b1af5158b6ad87","unresolved":true,"context_lines":[{"line_number":12,"context_line":"Note that you can still *build bdists* with old libec, and you won\u0027t be"},{"line_number":13,"context_line":"able to tell that things are broken until run time. Even if we could"},{"line_number":14,"context_line":"reliably block that, though, you could still do some pathological things"},{"line_number":15,"context_line":"like build with new libec, then install with old libec, so..."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"This also gives us an opportunity to clean up a DeprecationWarning:"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"323ddcbf_c26da3fa","line":15,"range":{"start_line":15,"start_character":5,"end_line":15,"end_character":54},"updated":"2023-08-03 23:29:12.000000000","message":"FWIW, this failure mode looks like\n```\nImportError: .../pyeclib_c.abi3.so: undefined symbol: liberasurecode_get_version\n```","commit_id":"559e926c6dea24ae025d0a08cab89e34933ea1d3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a0d7a11ed5da0eccbfa76ffa02413c46648da5f2","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Drop support for liberasurecode\u003c1.4.0"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Six years seems like more than enough warning, and the data corruption"},{"line_number":10,"context_line":"bug fixed in 1.3.1 is pretty bad."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This also gives us an opportunity to clean up a DeprecationWarning:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"a88c4c69_d361842e","line":9,"range":{"start_line":9,"start_character":0,"end_line":9,"end_character":3},"updated":"2024-03-06 20:58:38.000000000","message":"Seven, now! 7.25 even","commit_id":"f28ccb389a74531e54162a711f3a9f86864251d2"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"12c45d9b2e95bbd9aaa2b6a242763a82323dfcea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"4c296604_2dd4bbd3","updated":"2022-04-28 17:04:46.000000000","message":"that py3.5 failure might be tricky\n\n  ___________________ ERROR collecting test/test_pyeclib_c.py ____________________\n  ImportError while importing test module \u0027/home/zuul/src/opendev.org/openstack/pyeclib/test/test_pyeclib_c.py\u0027.\n  Hint: make sure your test modules/packages have valid Python names.\n  Traceback:\n  /usr/lib/python3.5/importlib/__init__.py:126: in import_module\n      return _bootstrap._gcd_import(name[level:], package, level)\n  test/test_pyeclib_c.py:33: in \u003cmodule\u003e\n      from pyeclib.ec_iface import PyECLib_EC_Types\n  pyeclib/ec_iface.py:577: in \u003cmodule\u003e\n      LIBERASURECODE_VERSION \u003d _liberasurecode_version()\n  pyeclib/ec_iface.py:570: in _liberasurecode_version\n      \u0027liberasurecode \u003d\u003d %s (\u003c1.3.1) is no longer supported \u0027\n  E   ImportError: liberasurecode \u003d\u003d %s (\u003c1.3.1) is no longer supported due to the possibility of data corruption. See https://bugs.launchpad.net/swift/+bug/1639691\n\n","commit_id":"51e431fd06f5a2368886e56636d38a838e6cb351"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"71ec1f503cfb1a19d46d991eec7d687bc3bdba71","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2642acb0_47232cda","in_reply_to":"4c296604_2dd4bbd3","updated":"2022-05-02 18:42:58.000000000","message":"Not so tricky: https://review.opendev.org/c/openstack/pyeclib/+/840223","commit_id":"51e431fd06f5a2368886e56636d38a838e6cb351"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6c7ee720b164122a6c6571875a612d9859e77ecf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"f7d0b9a4_5922db89","updated":"2022-12-19 19:35:27.000000000","message":"Would still be good for us to get rid of\n\n- all references to logging\n- the deprecation warning","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"041f48789059c4372b5c7fb76dcad162c71dd206","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"6732a7ff_b184d93c","updated":"2023-12-30 00:27:23.000000000","message":"recheck\n\nIDK why a liberasurecode_rs_vand 12+4 policy would raise `ECInvalidParameter` on 4 missing frags...\n\nAny particular reason we wanted a rebase?","commit_id":"f28ccb389a74531e54162a711f3a9f86864251d2"}],"pyeclib/ec_iface.py":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"12c45d9b2e95bbd9aaa2b6a242763a82323dfcea","unresolved":true,"context_lines":[{"line_number":34,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":35,"context_line":"logger \u003d logging.getLogger(\u0027pyeclib\u0027)"},{"line_number":36,"context_line":"syslog_handler \u003d SysLogHandler()"},{"line_number":37,"context_line":"logger.addHandler(syslog_handler)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def check_backend_available(backend_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7fbbe9_336d5b22","side":"PARENT","line":37,"updated":"2022-04-28 17:04:46.000000000","message":"this probably should never have been here:\n\nhttps://github.com/python/cpython/blob/3.7/Lib/warnings.py\n\n^ let\u0027s use this next time.","commit_id":"008840ca19e434f698f1f0726bdc973724fe1d76"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"71ec1f503cfb1a19d46d991eec7d687bc3bdba71","unresolved":true,"context_lines":[{"line_number":34,"context_line":"from logging.handlers import SysLogHandler"},{"line_number":35,"context_line":"logger \u003d logging.getLogger(\u0027pyeclib\u0027)"},{"line_number":36,"context_line":"syslog_handler \u003d SysLogHandler()"},{"line_number":37,"context_line":"logger.addHandler(syslog_handler)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def check_backend_available(backend_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ec841a4_02be8721","side":"PARENT","line":37,"in_reply_to":"df7fbbe9_336d5b22","updated":"2022-05-02 18:42:58.000000000","message":"That was my thinking, too 😊\n\nhttps://review.opendev.org/c/openstack/pyeclib/+/815410/2/pyeclib/ec_iface.py\n\nNote that there\u0027s some subtleties between DeprecationWarning and FutureWarning -- see also, https://peps.python.org/pep-0565/#additional-use-case-for-futurewarning","commit_id":"008840ca19e434f698f1f0726bdc973724fe1d76"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"12c45d9b2e95bbd9aaa2b6a242763a82323dfcea","unresolved":true,"context_lines":[{"line_number":569,"context_line":"        raise ImportError("},{"line_number":570,"context_line":"            \u0027liberasurecode \u003d\u003d %s (\u003c1.3.1) is no longer supported \u0027"},{"line_number":571,"context_line":"            \u0027due to the possibility of data corruption. See \u0027"},{"line_number":572,"context_line":"            \u0027https://bugs.launchpad.net/swift/+bug/1639691\u0027)"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    return version_str"},{"line_number":575,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"071ef942_bf44683f","line":572,"updated":"2022-04-28 17:04:46.000000000","message":"https://review.opendev.org/c/openstack/pyeclib/+/398744","commit_id":"51e431fd06f5a2368886e56636d38a838e6cb351"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc16a0ac715572742e44cbe7759e6bb6e72a0a02","unresolved":false,"context_lines":[{"line_number":569,"context_line":"        raise ImportError("},{"line_number":570,"context_line":"            \u0027liberasurecode \u003d\u003d %s (\u003c1.3.1) is no longer supported \u0027"},{"line_number":571,"context_line":"            \u0027due to the possibility of data corruption. See \u0027"},{"line_number":572,"context_line":"            \u0027https://bugs.launchpad.net/swift/+bug/1639691\u0027)"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    return version_str"},{"line_number":575,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5a7d8086_e7183664","line":572,"in_reply_to":"071ef942_bf44683f","updated":"2023-11-09 17:36:10.000000000","message":"Ack","commit_id":"51e431fd06f5a2368886e56636d38a838e6cb351"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7547fb5d57837cd15558775f70735246a4adc7ea","unresolved":true,"context_lines":[{"line_number":583,"context_line":"            \u0027%s will be deprecated in the near future because of the issue \u0027"},{"line_number":584,"context_line":"            \u0027https://bugs.launchpad.net/swift/+bug/1639691; \u0027"},{"line_number":585,"context_line":"            \u0027Please upgrade to \u003e\u003d1.3.1 and rebuild pyeclib to suppress \u0027"},{"line_number":586,"context_line":"            \u0027this message\u0027 % version_str)"},{"line_number":587,"context_line":"    return version_str"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"e5306692_12a31ecc","side":"PARENT","line":586,"range":{"start_line":586,"start_character":27,"end_line":586,"end_character":40},"updated":"2023-05-02 20:49:20.000000000","message":"Lost the `% version_str`!","commit_id":"415efe08f28216d94c220547b5e54e10e0b09b02"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc16a0ac715572742e44cbe7759e6bb6e72a0a02","unresolved":false,"context_lines":[{"line_number":583,"context_line":"            \u0027%s will be deprecated in the near future because of the issue \u0027"},{"line_number":584,"context_line":"            \u0027https://bugs.launchpad.net/swift/+bug/1639691; \u0027"},{"line_number":585,"context_line":"            \u0027Please upgrade to \u003e\u003d1.3.1 and rebuild pyeclib to suppress \u0027"},{"line_number":586,"context_line":"            \u0027this message\u0027 % version_str)"},{"line_number":587,"context_line":"    return version_str"},{"line_number":588,"context_line":""},{"line_number":589,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1fb70281_8f52e8c7","side":"PARENT","line":586,"range":{"start_line":586,"start_character":27,"end_line":586,"end_character":40},"in_reply_to":"e5306692_12a31ecc","updated":"2023-11-09 17:36:10.000000000","message":"Mooted.","commit_id":"415efe08f28216d94c220547b5e54e10e0b09b02"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"07662ea001b668cbf54a55d705b1af5158b6ad87","unresolved":true,"context_lines":[{"line_number":565,"context_line":"    rev \u003d (version_int \u003e\u003e 0) \u0026 0xff"},{"line_number":566,"context_line":"    version_str \u003d \u0027%d.%d.%d\u0027 % (major, minor, rev)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    if (major, minor, rev) \u003c (1, 4, 0):"},{"line_number":569,"context_line":"        raise ImportError("},{"line_number":570,"context_line":"            \u0027liberasurecode \u003d\u003d %s (\u003c1.4.0) is no longer supported \u0027"},{"line_number":571,"context_line":"            \u0027due to the possibility of data corruption. See \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"c359f779_bb91f135","line":568,"updated":"2023-08-03 23:29:12.000000000","message":"Hm. So, `get_liberasurecode_version` was [first released in 1.4.0](https://github.com/openstack/liberasurecode/commit/09d8bbf361955b986fbcbf172dfbef2ed78d5f24) -- do we actually need this?\n\nhttps://github.com/openstack/liberasurecode/commit/0a79a48 is a parent commit of https://github.com/openstack/liberasurecode/commit/dc77b68, so we don\u0027t even need to worry about some intermediate commit between 1.3.1 and 1.4.0 where we\u0027ve got `get_liberasurecode_version` reporting 1.3.1 but we\u0027re still corrupting data.","commit_id":"559e926c6dea24ae025d0a08cab89e34933ea1d3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dc16a0ac715572742e44cbe7759e6bb6e72a0a02","unresolved":false,"context_lines":[{"line_number":565,"context_line":"    rev \u003d (version_int \u003e\u003e 0) \u0026 0xff"},{"line_number":566,"context_line":"    version_str \u003d \u0027%d.%d.%d\u0027 % (major, minor, rev)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    if (major, minor, rev) \u003c (1, 4, 0):"},{"line_number":569,"context_line":"        raise ImportError("},{"line_number":570,"context_line":"            \u0027liberasurecode \u003d\u003d %s (\u003c1.4.0) is no longer supported \u0027"},{"line_number":571,"context_line":"            \u0027due to the possibility of data corruption. See \u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"74985545_bef0ffa6","line":568,"in_reply_to":"c359f779_bb91f135","updated":"2023-11-09 17:36:10.000000000","message":"Done","commit_id":"559e926c6dea24ae025d0a08cab89e34933ea1d3"}],"src/c/pyeclib_c/pyeclib_c.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6c7ee720b164122a6c6571875a612d9859e77ecf","unresolved":true,"context_lines":[{"line_number":1203,"context_line":"    err \u003d dlerror();"},{"line_number":1204,"context_line":"    if (err) {"},{"line_number":1205,"context_line":"        /* This is the important bit. Old version, doesn\u0027t have get_version"},{"line_number":1206,"context_line":"           support; fall back to old behavior. */"},{"line_number":1207,"context_line":"        dlclose(hLib);"},{"line_number":1208,"context_line":"        PyErr_SetString("},{"line_number":1209,"context_line":"            PyExc_RuntimeError,"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"d3a3847c_4ce272cd","line":1206,"range":{"start_line":1206,"start_character":20,"end_line":1206,"end_character":45},"updated":"2022-12-19 19:35:27.000000000","message":"Comment needs updating.","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7547fb5d57837cd15558775f70735246a4adc7ea","unresolved":false,"context_lines":[{"line_number":1203,"context_line":"    err \u003d dlerror();"},{"line_number":1204,"context_line":"    if (err) {"},{"line_number":1205,"context_line":"        /* This is the important bit. Old version, doesn\u0027t have get_version"},{"line_number":1206,"context_line":"           support; fall back to old behavior. */"},{"line_number":1207,"context_line":"        dlclose(hLib);"},{"line_number":1208,"context_line":"        PyErr_SetString("},{"line_number":1209,"context_line":"            PyExc_RuntimeError,"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c42491ce_020c681d","line":1206,"range":{"start_line":1206,"start_character":20,"end_line":1206,"end_character":45},"in_reply_to":"d3a3847c_4ce272cd","updated":"2023-05-02 20:49:20.000000000","message":"Done","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"6c7ee720b164122a6c6571875a612d9859e77ecf","unresolved":true,"context_lines":[{"line_number":1207,"context_line":"        dlclose(hLib);"},{"line_number":1208,"context_line":"        PyErr_SetString("},{"line_number":1209,"context_line":"            PyExc_RuntimeError,"},{"line_number":1210,"context_line":"            \"Failed to find liberasurecode_get_version in liberasurecode.so\");"},{"line_number":1211,"context_line":"        return NULL;"},{"line_number":1212,"context_line":"    }"},{"line_number":1213,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"c2d5ea45_c34ebca5","line":1210,"updated":"2022-12-19 19:35:27.000000000","message":"The ImportError over in ec_iface.py makes it look like the minimum supported version is 1.3.1 -- but liberasurecode_get_version was added in 1.4.0! That was released six years ago now, so I think I\u0027m OK with that being the minimum, but we need to make sure we\u0027re very clear about what\u0027s supported and what isn\u0027t.\n\nMaybe we could add a job to test with a pinned lowest-supported-version libec? Maybe use the py35 job, since it already needs to build libec from source -- should just need to get LIBERASURECODE_REF plumbed in.","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7547fb5d57837cd15558775f70735246a4adc7ea","unresolved":false,"context_lines":[{"line_number":1207,"context_line":"        dlclose(hLib);"},{"line_number":1208,"context_line":"        PyErr_SetString("},{"line_number":1209,"context_line":"            PyExc_RuntimeError,"},{"line_number":1210,"context_line":"            \"Failed to find liberasurecode_get_version in liberasurecode.so\");"},{"line_number":1211,"context_line":"        return NULL;"},{"line_number":1212,"context_line":"    }"},{"line_number":1213,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":4,"id":"f0f3f71b_28c079c8","line":1210,"in_reply_to":"c2d5ea45_c34ebca5","updated":"2023-05-02 20:49:20.000000000","message":"Done","commit_id":"4361cd57a174a3c563ef48a0eb687d29f69d3f31"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"0778b5fe035554a91d31aeea929110c3b422940f","unresolved":true,"context_lines":[{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"static PyObject*"},{"line_number":1186,"context_line":"pyeclib_c_liberasurecode_version(PyObject *self, PyObject *args) {"},{"line_number":1187,"context_line":"    return Py_BuildValue(\"k\", liberasurecode_get_version());"},{"line_number":1188,"context_line":"}"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"static PyMethodDef PyECLibMethods[] \u003d {"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"2c640cb9_7c6830a3","line":1187,"updated":"2024-03-06 22:25:21.000000000","message":"what\u0027s driving this change? previously pyeclib had to use dlopen and dlsym","commit_id":"f28ccb389a74531e54162a711f3a9f86864251d2"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"65a884134efa6596814f3ef09ab3b1b9231c789e","unresolved":true,"context_lines":[{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"static PyObject*"},{"line_number":1186,"context_line":"pyeclib_c_liberasurecode_version(PyObject *self, PyObject *args) {"},{"line_number":1187,"context_line":"    return Py_BuildValue(\"k\", liberasurecode_get_version());"},{"line_number":1188,"context_line":"}"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"static PyMethodDef PyECLibMethods[] \u003d {"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"582bcda2_0f190089","line":1187,"in_reply_to":"2c640cb9_7c6830a3","updated":"2024-03-07 16:43:35.000000000","message":"It\u0027s just a simplification -- part of why I wanted to up the minimum to 1.4.0 instead of 1.3.1 (which fixed the data corruption bug) was that it was the first release to have `liberasurecode_get_version`.\n\nThe only reason for the `dlopen`/`dlsym` was to support older versions without it -- you could have a pyeclib built against liberasurecode 1.1.0 (say), then have it installed alongside libec 1.1.0 *or* 1.4.0+ and get accurate version info. Using it with those in-between versions wasn\u0027t great (it\u0027d erroneously report it as 1.1.0), but it could\u0027ve been worse.","commit_id":"f28ccb389a74531e54162a711f3a9f86864251d2"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"c027ceb350f9bcd491c5b35289811770eb191a50","unresolved":false,"context_lines":[{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"static PyObject*"},{"line_number":1186,"context_line":"pyeclib_c_liberasurecode_version(PyObject *self, PyObject *args) {"},{"line_number":1187,"context_line":"    return Py_BuildValue(\"k\", liberasurecode_get_version());"},{"line_number":1188,"context_line":"}"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"static PyMethodDef PyECLibMethods[] \u003d {"}],"source_content_type":"text/x-csrc","patch_set":10,"id":"407c417c_0f3c2ae5","line":1187,"in_reply_to":"582bcda2_0f190089","updated":"2024-03-08 01:28:43.000000000","message":"static library function would be much better than dynamic library!","commit_id":"f28ccb389a74531e54162a711f3a9f86864251d2"}],"test/test_pyeclib_api.py":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"c027ceb350f9bcd491c5b35289811770eb191a50","unresolved":true,"context_lines":[{"line_number":690,"context_line":"                        (first_fragment_to_corrupt + i) % len(fragments)"},{"line_number":691,"context_line":"                        for i in range(num_to_corrupt)]"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"                    if StrictVersion(LIBERASURECODE_VERSION) \u003c \\"},{"line_number":694,"context_line":"                            StrictVersion(\u00271.2.0\u0027):"},{"line_number":695,"context_line":"                        # if liberasurecode is older than the version supports"},{"line_number":696,"context_line":"                        # fragment integrity check, skip following test"}],"source_content_type":"text/x-python","patch_set":10,"id":"a78bb3f0_0b939896","side":"PARENT","line":693,"updated":"2024-03-08 01:28:43.000000000","message":"maybe we can add a new statement saying LIBERASURECODE_VERSION needs \u003e\u003d 1.4.0?","commit_id":"eca7e3605eba547b05ab4f2c2474cce669a92202"},{"author":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"change_message_id":"9f509f76f2961e951a0d0c64aab1648a72acd39e","unresolved":true,"context_lines":[{"line_number":690,"context_line":"                        (first_fragment_to_corrupt + i) % len(fragments)"},{"line_number":691,"context_line":"                        for i in range(num_to_corrupt)]"},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"                    if StrictVersion(LIBERASURECODE_VERSION) \u003c \\"},{"line_number":694,"context_line":"                            StrictVersion(\u00271.2.0\u0027):"},{"line_number":695,"context_line":"                        # if liberasurecode is older than the version supports"},{"line_number":696,"context_line":"                        # fragment integrity check, skip following test"}],"source_content_type":"text/x-python","patch_set":10,"id":"83847ab5_90950cc1","side":"PARENT","line":693,"in_reply_to":"a78bb3f0_0b939896","updated":"2024-03-20 21:32:25.000000000","message":"+1.","commit_id":"eca7e3605eba547b05ab4f2c2474cce669a92202"}]}
