This is an automated email from the ASF dual-hosted git repository. vatamane pushed a commit to branch wait-for-admin-passwords-to-be-hashed in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 343f9ad6db45c429654b506cb41dec8fbc1e19e3 Author: Nick Vatamaniuc <vatam...@gmail.com> AuthorDate: Wed Nov 8 12:24:36 2023 -0500 Wait for newly set admin creds to be hashed in setup Previously, in the setup app, we set admin creds but didn't wait for them to be hashed. The next setup step then could fail with the 401 error. Since we're doing setup, let's wait for the newly set creds to be hashed before continuing. --- src/setup/src/setup.erl | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/setup/src/setup.erl b/src/setup/src/setup.erl index 35830284d..7a38e69cb 100644 --- a/src/setup/src/setup.erl +++ b/src/setup/src/setup.erl @@ -169,7 +169,21 @@ enable_cluster_int(Options, false) -> couch_log:debug("Enable Cluster: ~p~n", [couch_util:remove_sensitive_data(Options)]). set_admin(Username, Password) -> - config:set("admins", binary_to_list(Username), binary_to_list(Password), #{sensitive => true}). + config:set("admins", binary_to_list(Username), binary_to_list(Password), #{sensitive => true}), + % 5 minutes + wait_admins_to_be_hashed(60 * 5). + +wait_admins_to_be_hashed(Tries) when is_integer(Tries), Tries > 0 -> + case couch_passwords:get_unhashed_admins() of + [] -> + ok; + [_ | _] -> + timer:sleep(1000), + couch_log:debug("Waiting for admins to be hashed. Seconds left: ~p", [Tries]), + wait_admins_to_be_hashed(Tries - 1) + end; +wait_admins_to_be_hashed(0) -> + throw({setup_error, "Admin passwords could not be hashed"}). setup_node(NewCredentials, NewBindAddress, NodeCount, Port) -> case NewCredentials of