)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"829da57232f09e4b110fe6fa50fa17d061815935","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  * Now that every node is capable of reading zlib CRCs, remove the"},{"line_number":24,"context_line":"    environment variable from each node to start writing new CRCs."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Related-Bug: #1666320"},{"line_number":27,"context_line":"Change-Id: I9adfbe631a2dddc592fd08f8a325f3e8331b92f1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"bf51134e_09ae79e6","line":26,"updated":"2020-07-03 21:18:21.000000000","message":"Now that I wrote up https://launchpad.net/bugs/1886088, this should have a Closes-Bug, too.","commit_id":"98228a41a95fada29a703c0eade122a9a1c4a89c"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"54fc0b0f41d17c767a1399855b6530319305d32e","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"in the environment; the value does not matter."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This option is intended to allow a smooth upgrade from liberasurecode"},{"line_number":16,"context_line":"1.5.0 and earlier in a system with multiple readers and writers:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  * Before upgrade, ensure the environment variable is set on all nodes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f560f44_3998e773","line":15,"updated":"2020-09-02 04:15:38.000000000","message":"This should probably have an UpgradeImpact, too. We should assume there are non-Swift consumers of liberasurecode.","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1048fac5093eae4454f92b540a9db4e140f3a450","unresolved":false,"context_lines":[{"line_number":15,"context_line":"This option is intended to allow a smooth upgrade from liberasurecode"},{"line_number":16,"context_line":"1.5.0 and earlier in a system with multiple readers and writers:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  * Before upgrade, ensure the environment variable is set on all nodes."},{"line_number":19,"context_line":"    This will be ignored by earlier versions."},{"line_number":20,"context_line":"  * Upgrade liberasurecode on each node in the system, restarting any"},{"line_number":21,"context_line":"    services that use it. Every node continues writing CRCs that are"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9f560f44_d6634719","line":18,"updated":"2020-07-31 17:50:57.000000000","message":"Oh, there should probably be a step 0, like in the Swift patch: check whether you\u0027re already writing zlib CRCs (which might happen if you\u0027re on 1.5.0 or earlier and link against zlib; the order of loading determines which CRC you\u0027ll write).","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a03088c958e1c77d3b77bc39d992d23efb8eeb76","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    LIBERASURECODE_WRITE_LEGACY_CRC"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"in the environment; the value does not matter."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This option is intended to allow a smooth upgrade from liberasurecode"},{"line_number":16,"context_line":"1.5.0 and earlier in a system with multiple readers and writers:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f560f44_87e02499","line":13,"range":{"start_line":13,"start_character":20,"end_line":13,"end_character":45},"updated":"2020-09-24 19:38:54.000000000","message":"Fah -- this is out of date.","commit_id":"3defa1db0a38fd46342372ed2740e1f4a372e00a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"a03088c958e1c77d3b77bc39d992d23efb8eeb76","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"in the environment; the value does not matter."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This option is intended to allow a smooth upgrade from liberasurecode"},{"line_number":16,"context_line":"1.5.0 and earlier in a system with multiple readers and writers:"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  * Before upgrade, ensure the environment variable is set on all nodes."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"9f560f44_4703ac42","line":15,"updated":"2020-09-24 19:38:54.000000000","message":"...and as long as I\u0027m updating, I should put an explicit\n\n UpgradeImpact\n\nbefore this, too.","commit_id":"3defa1db0a38fd46342372ed2740e1f4a372e00a"}],"src/erasurecode_postprocessing.c":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"0767cd1d6e77ad48e4421cb9071ecb0015fc4dc0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return;"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    if (getenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\")) {"},{"line_number":64,"context_line":"        header-\u003emetadata_chksum \u003d liberasurecode_crc32_alt("},{"line_number":65,"context_line":"            0, \u0026header-\u003emeta, sizeof(fragment_metadata_t));"},{"line_number":66,"context_line":"    } else {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f560f44_26963196","line":63,"updated":"2020-08-13 03:36:05.000000000","message":"To avoid complexity to parse the environ value, this is better. However, once I looked up and thought how to configure this value, it may be confused by *operators* because they may set false value (e.g. 0, false, no, etc...)\n\nIn current implementation, any value including such negative values will affect to keep legacy crc writes that could not be intended.\n\nI know handling the values will increase code and make the code less simplicity so it may be ok to keep current code with notification in the changelog in the latter version bump.\n\nWhat do you think?","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"},{"author":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"change_message_id":"797a26fb55da6994d50257ff7a9c0476bfa2417b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return;"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    if (getenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\")) {"},{"line_number":64,"context_line":"        header-\u003emetadata_chksum \u003d liberasurecode_crc32_alt("},{"line_number":65,"context_line":"            0, \u0026header-\u003emeta, sizeof(fragment_metadata_t));"},{"line_number":66,"context_line":"    } else {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f560f44_2c7194df","line":63,"in_reply_to":"9f560f44_26963196","updated":"2020-08-20 00:01:03.000000000","message":"The hope is to keep this if not hidden, then de-emphasized.","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"54fc0b0f41d17c767a1399855b6530319305d32e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return;"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    if (getenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\")) {"},{"line_number":64,"context_line":"        header-\u003emetadata_chksum \u003d liberasurecode_crc32_alt("},{"line_number":65,"context_line":"            0, \u0026header-\u003emeta, sizeof(fragment_metadata_t));"},{"line_number":66,"context_line":"    } else {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f560f44_79909f43","line":63,"in_reply_to":"9f560f44_2c7194df","updated":"2020-09-02 04:15:38.000000000","message":"I don\u0027t know that I really want to add a bunch of string comparisons here, and then there\u0027s the casing issue... and what should we do if someone exports something unexpected like\n\n LIBERASURECODE_WRITE_LEGACY_CRC\u003dsí\n\nor\n\n LIBERASURECODE_WRITE_LEGACY_CRC\u003dnein\n\n? libec just doesn\u0027t have the same config expectations as swift... or indeed *any* config expectations, really...\n\nThat said, I could see an argument for requiring a non-empty value to get the legacy behavior -- what do you guys think?","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"},{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"1f0d7efc84f27e0d111bce15493bcd03042f454e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        return;"},{"line_number":61,"context_line":"    }"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    if (getenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\")) {"},{"line_number":64,"context_line":"        header-\u003emetadata_chksum \u003d liberasurecode_crc32_alt("},{"line_number":65,"context_line":"            0, \u0026header-\u003emeta, sizeof(fragment_metadata_t));"},{"line_number":66,"context_line":"    } else {"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f560f44_6153c5e3","line":63,"in_reply_to":"9f560f44_79909f43","updated":"2020-09-02 10:01:36.000000000","message":"Hmm... i didn\u0027t mean we have to supports every native language expression. \n\nPossibly, I may be nice to have:\n\nCase 1. negative (i.e. not use legacy crc) patterns:\n\n- LIBERASURECODE_WRITE_LEGACY_CRC \u003d\u003d 0 or (not defined)\n\nCase 2. positive patterns(i.e. use legacy crc) patterns:\n\n- LIBERASURECODE_WRITE_LEGACY_CRC \u003e\u003d 1\n\nCase 3. warning (i.e. ignore the value even if it\u0027s defined) patterns:\n\n- LIBERASURECODE_WRITE_LEGACY_CRC is neither a natural number greater than nor equal to 0\n\nthe case 3 performs as well as case 1 but the case 3 emits the warning log like as \"WARNING: LIBERASURECODE_WRITE_LEGACY_CRC is set with unexpected value, ignoring.\"\n\nI mainly focus on how to avoid misconfiguration (or how operator can notify the mistake). \n\nPlus, we should like to have well-documented definition of the variable somewhere.\n\nHow does this look like?","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"}],"test/liberasurecode_test.c":[{"author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"change_message_id":"0767cd1d6e77ad48e4421cb9071ecb0015fc4dc0","unresolved":false,"context_lines":[{"line_number":1347,"context_line":""},{"line_number":1348,"context_line":"static void test_write_legacy_fragment_metadata(const ec_backend_id_t be_id, struct ec_args *args)"},{"line_number":1349,"context_line":"{"},{"line_number":1350,"context_line":"    setenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\", \"1\", 0);"},{"line_number":1351,"context_line":"    test_get_fragment_metadata(be_id, args);"},{"line_number":1352,"context_line":"    unsetenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\");"},{"line_number":1353,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f560f44_06932da5","line":1350,"range":{"start_line":1350,"start_character":50,"end_line":1350,"end_character":53},"updated":"2020-08-13 03:36:05.000000000","message":"If we support value handling, the third argument should be 1 to test correctly.","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"12329aa27beb8bdf262828b17c244c41bc0deb45","unresolved":false,"context_lines":[{"line_number":1348,"context_line":"static void test_write_legacy_fragment_metadata(const ec_backend_id_t be_id, struct ec_args *args)"},{"line_number":1349,"context_line":"{"},{"line_number":1350,"context_line":"    setenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\", \"1\", 0);"},{"line_number":1351,"context_line":"    test_get_fragment_metadata(be_id, args);"},{"line_number":1352,"context_line":"    unsetenv(\"LIBERASURECODE_WRITE_LEGACY_CRC\");"},{"line_number":1353,"context_line":"}"},{"line_number":1354,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":2,"id":"9f560f44_36d603c5","line":1351,"updated":"2020-07-31 17:43:26.000000000","message":"So, this\u0027ll only cover one of the two changes; the postprocessing change isn\u0027t covered... but I\u0027m not sure we have any tests that validate the exact choice of metadata CRC at the moment; just that it\u0027s one of the two we\u0027re willing to read.","commit_id":"d5e5be836455cd767ad248eceba0258e8f7dab4b"}]}
