Skip to content

Commit

Permalink
backend: longer timeout for fallback generating GPG keys after build
Browse files Browse the repository at this point in the history
Fix #2911
Fix #2942

When frontend is creating a new project, it creates an action to
generate GPG keys. This may fail because of a temporary keygen
downtime or network issues.

Once a SRPM is built, we try to use the GPG key and it doesn't exist,
there is a fallback, trying to generate the key again. We can try
longer.

To trigger this fallback, you can do:

    docker-compose stop keygen-httpd
    copr create test-srpm-key --chroot fedora-38-x86_64
    copr buildscm --clone-url ... test-srpm-key
    # Wait few minutes until the action fails
    docker-compose start keygen-httpd
  • Loading branch information
FrostyX authored and praiskup committed Oct 20, 2023
1 parent 2789f06 commit d432577
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions backend/copr_backend/sign.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ def sign_rpms_in_dir(username, projectname, path, chroot, opts, log):
try:
get_pubkey(username, projectname, log, opts.sign_domain)
except CoprSignNoKeyError:
create_user_keys(username, projectname, opts)
create_user_keys(username, projectname, opts, try_indefinitely=True)

errors = [] # tuples (rpm_filepath, exception)
for rpm in rpm_list:
Expand All @@ -185,7 +185,7 @@ def sign_rpms_in_dir(username, projectname, path, chroot, opts, log):
.format([err[0] for err in errors]))


def create_user_keys(username, projectname, opts):
def create_user_keys(username, projectname, opts, try_indefinitely=False):
"""
Generate a new key-pair at sign host
Expand All @@ -204,7 +204,7 @@ def create_user_keys(username, projectname, opts):
keygen_url = "http://{}/gen_key".format(opts.keygen_host)
query = dict(url=keygen_url, data=data, method="post")
try:
request = SafeRequest(log=log)
request = SafeRequest(log=log, try_indefinitely=try_indefinitely)
response = request.send(**query)
except Exception as e:
raise CoprKeygenRequestError(
Expand Down

0 comments on commit d432577

Please sign in to comment.