Bug #69758
closedstandalone: test_ceph_helpers.sh fails in erasure_code_plugin_exists
0%
Description
(Can be recreated locally, simply by running this standalone test)
Appear, for example, in:
https://pulpito.ceph.com/?branch=wip-yuri-testing-2025-01-28-0809/8099193
From a local run:
Sun Feb 2 01:07:46 CST 2025 ../qa/standalone/ceph-helpers.sh:2107: erasure_code_plugin_exists: local grepstr Sun Feb 2 01:07:46 CST 2025 ../qa/standalone/ceph-helpers.sh:2108: erasure_code_plugin_exists: local s Sun Feb 2 01:07:46 CST 2025 ../qa/standalone/ceph-helpers.sh:2109: erasure_code_plugin_exists: case `uname` in Sun Feb 2 01:07:46 CST 2025 .../qa/standalone/ceph-helpers.sh:2109: erasure_code_plugin_exists: uname Sun Feb 2 01:07:46 CST 2025 ../qa/standalone/ceph-helpers.sh:2111: erasure_code_plugin_exists: grepstr='jerasure.*No such file' Sun Feb 2 01:07:46 CST 2025 .../qa/standalone/ceph-helpers.sh:2114: erasure_code_plugin_exists: ceph osd erasure-code-profile set TESTPROFILE plugin=jerasure Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2114: erasure_code_plugin_exists: s='*** DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH *** Sun Feb 2 01:07:47 CST 2025 Error ENOENT: technique= is not a valid coding technique. Choose one of the following: reed_sol_van, reed_sol_r6_op, cauchy_orig, cauchy_good, liberation, blaum_roth, liber8tion' Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2115: erasure_code_plugin_exists: local status=2 Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2116: erasure_code_plugin_exists: '[' 2 -eq 0 ']' Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2118: erasure_code_plugin_exists: grep --quiet 'jerasure.*No such file' Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2118: erasure_code_plugin_exists: echo bin boost build.ninja build.ninja.tmp3ccaa ceph.conf CMakeCache.txt CMakeFiles cmake_install.cmake compile_commands.json compile_commands.json.tmpaa453 CTestTestfile.cmake dev doc etc include keyring lib liburing_ext-prefix loglines_main loglines_store2 logrotate.conf monitoring\ out qa qatlib_ext-prefix src systemd td user-config.jam vstart_environment.sh DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH bin boost build.ninja build.ninja.tmp3ccaa ceph.conf CMakeCache.txt CMakeFiles cmake_install.cmake compile_commands.json compile_commands.json.tmpaa453 CTestTestfile.cmake dev doc etc include keyring lib liburing_ext-prefix loglines_main log\ lines_store2 logrotate.conf monitoring out qa qatlib_ext-prefix src systemd td user-config.jam vstart_environment.sh Error ENOENT: technique= is not a valid coding technique. Choose one of the following: reed_sol_van, reed_sol_r6_op, cauchy_orig, cauchy_good, liberation, blaum_roth, liber8tion Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2119: erasure_code_plugin_exists: status=1 Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2121: erasure_code_plugin_exists: echo bin boost build.ninja build.ninja.tmp3ccaa ceph.conf CMakeCache.txt CMakeFiles cmake_install.cmake compile_commands.json compile_commands.json.tmpaa453 CTestTestfile.cmake dev doc etc include keyring lib liburing_ext-prefix loglines_main loglines_store2 logrotate.conf monitoring\ out qa qatlib_ext-prefix src systemd td user-config.jam vstart_environment.sh DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH bin boost build.ninja build.ninja.tmp3ccaa ceph.conf CMakeCache.txt CMakeFiles cmake_install.cmake compile_commands.json compile_commands.json.tmpaa453 CTestTestfile.cmake dev doc etc include keyring lib liburing_ext-prefix loglines_main log\ lines_store2 logrotate.conf monitoring out qa qatlib_ext-prefix src systemd td user-config.jam vstart_environment.sh Error ENOENT: technique= is not a valid coding technique. Choose one of the following: reed_sol_van, reed_sol_r6_op, cauchy_orig, cauchy_good, liberation, blaum_roth, liber8tion Sun Feb 2 01:07:47 CST 2025 bin boost build.ninja build.ninja.tmp3ccaa ceph.conf CMakeCache.txt CMakeFiles cmake_install.cmake compile_commands.json compile_commands.json.tmpaa453 CTestTestfile.cmake dev doc etc include keyring lib liburing_ext-prefix loglines_main loglines_store2 logrotate.conf monitoring out qa qatlib_ext-prefix src systemd td user-config.jam vstart_environme\ nt.sh DEVELOPER MODE: setting PATH, PYTHONPATH and LD_LIBRARY_PATH bin boost build.ninja build.ninja.tmp3ccaa ceph.conf CMakeCache.txt CMakeFiles cmake_install.cmake compile_commands.json compile_commands.json.tmpaa453 CTestTestfile.cmake dev doc etc include keyring lib liburing_ext-prefix loglines_main loglines_store2 logrotate.conf monitoring out qa qatlib_ext-prefix src syste\ md td user-config.jam vstart_environment.sh Error ENOENT: technique= is not a valid coding technique. Choose one of the following: reed_sol_van, reed_sol_r6_op, cauchy_orig, cauchy_good, liberation, blaum_roth, liber8tion Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2123: erasure_code_plugin_exists: return 1 Sun Feb 2 01:07:47 CST 2025 ../qa/standalone/ceph-helpers.sh:2132: test_erasure_code_plugin_exists: return 1
Updated by Ronen Friedman about 1 year ago
Test was OK for 'main' of 14.1.25 (f992060449337cc370ed9bda1e001bf7f4e78040)
Updated by Ronen Friedman about 1 year ago
Failure tracked to a87a77c63fd6b14b197ff414f5b92b6ffb61b808
"core: Change the default plugin for Ceph erasure coded pools from Jerasure to ISA-L"
Updated by Aishwarya Mathuria about 1 year ago
- Related to Bug #69762: Failure in erasure code tests: technique= is not a valid coding technique added
Updated by Bill Scales about 1 year ago
This is indeed a regression caused by https://github.com/ceph/ceph/pull/58052 changing the default plugin in global.yaml.in but I think the underlying problem is a faulty test case.
In qa/standalone/ceph-helpers.sh:
This function claims to test whether an erasure code plugin is available by trying to create an erasure code profile with just "plugin=$plugin":
function erasure_code_plugin_exists() {
local plugin=$1
local status
local grepstr
local s
case `uname` in
FreeBSD) grepstr="Cannot open.*$plugin" ;;
*) grepstr="$plugin.*No such file" ;;
esac
s=$(ceph osd erasure-code-profile set TESTPROFILE plugin=$plugin 2>&1)
local status=$?
if [ $status -eq 0 ]; then
ceph osd erasure-code-profile rm TESTPROFILE
elif ! echo $s | grep --quiet "$grepstr" ; then
status=1
# display why the string was rejected.
echo $s
fi
return $status
}
This used to work for jerasure because the profile would inherit the options from the osd_pool_default_erasure_code_profile conf file setting which set the default plugin to jerasure, which meant that the erasure code profile was successfully created. When the conf file setting is changed to isal this stops working because it is invalid to create a jerasure profile without specifying a technique , k and m (although the documentation says technique should default to reed_sol_van which we will fix in 69762). This causes the "osd erasure-code-profile set" command to fail and the elif statement is evaluated. This tries to differentiate between a failure due to a non existent plugin (No such file) and a failure due to missing parameters to the profile - it does this correctly but leaves status != 0 in both cases.
To make this function work we need to add
else # plugin exists, but profile requires extra parameters status=0 fi
Updated by Bill Scales about 1 year ago
- Assignee changed from Bill Scales to Connor Fawcett
Updated by Laura Flores about 1 year ago
- Related to deleted (Bug #69762: Failure in erasure code tests: technique= is not a valid coding technique)
Updated by Laura Flores about 1 year ago
- Has duplicate Bug #69762: Failure in erasure code tests: technique= is not a valid coding technique added
Updated by Laura Flores about 1 year ago
/a/yuriw-2025-01-31_15:46:33-rados-wip-yuri5-testing-2025-01-30-1311-distro-default-smithi/8107055
Updated by Connor Fawcett about 1 year ago
- Pull request ID set to 61674
Submitted a PR with a fix, I have done some preliminary testing but still need to pass a suite re-run. Will aim to have this done by Monday.
Updated by Laura Flores about 1 year ago
- Status changed from New to Fix Under Review
Updated by Laura Flores about 1 year ago
/a/lflores-2025-02-05_22:51:38-rados-wip-yuri5-testing-2025-01-30-1311-distro-default-smithi/8117744
Updated by Jaya Prakash about 1 year ago ยท Edited
/a/akupczyk-2025-01-27_13:10:42-rados-aclamk-testing-ganymede-2025-01-24-0925-distro-default-smithi/
8096556 , 8096422
Updated by Laura Flores about 1 year ago
/a/yuriw-2025-02-05_21:36:43-rados-wip-yuri8-testing-2025-02-04-1046-distro-default-smithi/8117319
Updated by Laura Flores about 1 year ago
/a/yuriw-2025-02-21_18:09:35-rados-wip-pdonnell-testing-20250218.200348-debug-distro-default-smithi/8147311
Updated by Bill Scales about 1 year ago
- Status changed from Fix Under Review to Resolved
https://github.com/ceph/ceph/commit/80660684d0018d755436ec85108e7e6f76d7fdf8
No backports required - only affects main
Updated by Jaya Prakash about 1 year ago
/a/akupczyk-2025-02-20_15:14:45-rados-aclamk-testing-ganymede-2025-02-20-0826-distro-default-smithi/8143715
Updated by Upkeep Bot 8 months ago
- Merge Commit set to 80660684d0018d755436ec85108e7e6f76d7fdf8
- Fixed In set to v19.3.0-7930-g80660684d00
- Upkeep Timestamp set to 2025-07-09T22:40:55+00:00
Updated by Upkeep Bot 8 months ago
- Fixed In changed from v19.3.0-7930-g80660684d00 to v19.3.0-7930-g80660684d0
- Upkeep Timestamp changed from 2025-07-09T22:40:55+00:00 to 2025-07-14T19:37:22+00:00
Updated by Upkeep Bot 5 months ago
- Released In set to v20.2.0~1002
- Upkeep Timestamp changed from 2025-07-14T19:37:22+00:00 to 2025-11-01T01:14:40+00:00