Traceback (most recent call last): File "/usr/lib/python3.13/site-packages/pungi/scripts/pungi_koji.py", line 651, in cli_main main() ~~~~^^ File "/usr/lib/python3.13/site-packages/pungi/scripts/pungi_koji.py", line 353, in main run_compose( ~~~~~~~~~~~^ compose, ^^^^^^^^ ...<2 lines>... latest_link_components=latest_link_components, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3.13/site-packages/pungi/scripts/pungi_koji.py", line 471, in run_compose pkgset_phase.start() ~~~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/pungi/phases/base.py", line 66, in start self.run() ~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/pungi/phases/pkgset/__init__.py", line 36, in run self.package_sets, self.path_prefix = SourceClass(self.compose)() ~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/lib/python3.13/site-packages/pungi/phases/pkgset/sources/source_koji.py", line 196, in __call__ package_sets = get_pkgset_from_koji(self.compose, self.koji_wrapper) File "/usr/lib/python3.13/site-packages/pungi/phases/pkgset/sources/source_koji.py", line 202, in get_pkgset_from_koji return populate_global_pkgset(compose, koji_wrapper, event_info) File "/usr/lib/python3.13/site-packages/pungi/phases/pkgset/sources/source_koji.py", line 911, in populate_global_pkgset pkgset.populate( ~~~~~~~~~~~~~~~^ compose_tag, ^^^^^^^^^^^^ ...<8 lines>... include_packages=modular_packages, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/usr/lib/python3.13/site-packages/pungi/phases/pkgset/pkgsets.py", line 628, in populate rpms, builds = self.get_latest_rpms(tag, event, inherit=inherit) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/pungi/phases/pkgset/pkgsets.py", line 517, in get_latest_rpms response = self.koji_proxy.listTaggedRPMS( tag, event=event, inherit=inherit, latest=True ) File "/usr/lib/python3.13/site-packages/koji/__init__.py", line 2536, in __call__ return self.__func(self.__name, args, opts) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/site-packages/koji/__init__.py", line 3120, in _renew_expired_session return func(self, *args, **kwargs) File "/usr/lib/python3.13/site-packages/koji/__init__.py", line 3199, in _callMethod raise err koji.ServerOffline: database outage Frame _callMethod in /usr/lib/python3.13/site-packages/koji/__init__.py at line 3199 3192 # otherwise keep retrying 3193 if self.logger.isEnabledFor(logging.DEBUG): 3194 self.logger.debug(tb_str) 3195 self.logger.info("Try #%s for call %s (%s) failed: %s", 3196 tries, self.callnum, name, e) 3197 if err: 3198 # raise the converted fault from above --> 3199 raise err 3200 if tries > 1: 3201 # first retry is immediate, after that we honor retry_interval 3202 time.sleep(interval) 3203 # not reached 3204 3205 def multiCall(self, strict=False, batch=None): args = 'epel8' err = ServerOffline('database outage') handler = 'https://koji.fedoraproject.org/kojihub' headers = [('User-Agent', 'koji/1'), ('Content-Type', 'text/xml'), ('Content-Length', '518')] interval = 20 kwargs = {'event': 142000989, 'inherit': False, 'latest': True} max_retries = 30 name = 'listTaggedRPMS' request = b"\n\nlistTaggedRPMS\n\n\nepel8\n\n\n\n\nevent self._ClientSession__hub_version = '1.35.1' self._apidoc = None self._calls = [] self.auth_method = None self.authtype = None self.baseurl = 'https://koji.fedoraproject.org/kojihub' self.callnum = None self.exclusive = False self.hub_version = self.hub_version_str = '1.35.1' self.logged_in = False self.logger = self.opts = {'timeout': 43200, 'max_retries': 30, 'retry_interval': 20, 'anon_retry': True, 'offline_retry': False, 'offline_retry_interval': 20, 'debug': False, 'debug_xmlrpc': False, 'serverca': '', 'use_fast_u self.retries = 2 self.rsession = self.sinfo = None tb_str = 'Traceback (most recent call last):\n File "/usr/lib/python3.13/site-packages/koji/__init__.py", line 3146, in _callMethod\n return self._sendCall(handler, headers, request)\n ~~~~~~~~~~ tries = 2 Frame _renew_expired_session in /usr/lib/python3.13/site-packages/koji/__init__.py at line 3120 3113 self.logged_in = False 3114 auth_method(*args, **kwargs) 3115 3116 def renew_expired_session(func): 3117 """Decorator to renew expirated session or subsession.""" 3118 def _renew_expired_session(self, *args, **kwargs): 3119 try: --> 3120 return func(self, *args, **kwargs) 3121 except AuthExpired: 3122 self._renew_session() 3123 return func(self, *args, **kwargs) 3124 return _renew_expired_session 3125 3126 @renew_expired_session args = func = kwargs = {} self = self._ClientSession__hub_version = '1.35.1' self._apidoc = None self._calls = [] self.auth_method = None self.authtype = None self.baseurl = 'https://koji.fedoraproject.org/kojihub' self.callnum = None self.exclusive = False self.hub_version = self.hub_version_str = '1.35.1' self.logged_in = False self.logger = self.opts = {'timeout': 43200, 'max_retries': 30, 'retry_interval': 20, 'anon_retry': True, 'offline_retry': False, 'offline_retry_interval': 20, 'debug': False, 'debug_xmlrpc': False, 'serverca': '', 'use_fast_u self.retries = 2 self.rsession = self.sinfo = None Frame __call__ in /usr/lib/python3.13/site-packages/koji/__init__.py at line 2536 2529 self.__name = name 2530 self.__session = session 2531 2532 def __getattr__(self, name): 2533 return type(self)(self.__func, "%s.%s" % (self.__name, name)) 2534 2535 def __call__(self, *args, **opts): --> 2536 return self.__func(self.__name, args, opts) 2537 2538 @property 2539 def __doc__(self): 2540 if self.__session is None: 2541 # There could be potentially session-less object 2542 return None args = 'epel8' opts = {'event': 142000989, 'inherit': False, 'latest': True} self = self._VirtualMethod__name = 'listTaggedRPMS' self._VirtualMethod__session = Frame get_latest_rpms in /usr/lib/python3.13/site-packages/pungi/phases/pkgset/pkgsets.py at line 517 510 ) 511 try: 512 response = self.cache_region.get(cache_key) 513 except Exception: 514 pass 515 516 if not response: --> 517 response = self.koji_proxy.listTaggedRPMS( 518 tag, event=event, inherit=inherit, latest=True 519 ) 520 if self.cache_region: 521 try: 522 self.cache_region.set(cache_key, response) 523 except Exception: cache_key = 'KojiPackageSet.get_latest_rpms_epel8_142000989_False' event = 142000989 inherit = False response = self = self._allow_invalid_sigkeys = True self._invalid_sigkey_rpms = [] self._logger = self.arches = {'s390', 'i686', 'athlon', 'i486', 'src', 's390x', 'noarch', 'i386', 'x86_64', 'i586', 'aarch64', 'ppc64le'} self.cache_region = self.downloader = self.extra_builds = [] self.extra_tasks = [] self.file_cache = self.invalid_sigkey_rpms = [] self.koji_proxy = self.koji_wrapper = self.name = 'epel8' self.old_file_cache = self.packages = {'krusader', 'kscreenlocker', 'gwenview', 'firefox', 'extra-cmake-modules', 'abattis-cantarell-fonts', 'kmahjongg', 'okteta', 'qt5-qtlocation-devel', 'klettres', 'kamera', 'xfce4-panel', 'blinken', 'a self.populate_only_packages = False self.reuse = None self.rpms_by_arch = {} self.sigkey_ordering = '2f86d6a1' self.signed_packages_retries = 0 self.signed_packages_wait = 30 self.srpms_by_name = {} tag = 'epel8' Frame populate in /usr/lib/python3.13/site-packages/pungi/phases/pkgset/pkgsets.py at line 628 621 tag, 622 event, 623 inherit, 624 ) 625 self.log_info("[BEGIN] %s" % msg) 626 rpms, builds = [], [] 627 if tag != MISSING_KOJI_TAG: --> 628 rpms, builds = self.get_latest_rpms(tag, event, inherit=inherit) 629 extra_rpms, extra_builds = self.get_extra_rpms() 630 rpms += extra_rpms 631 builds += extra_builds 632 633 extra_builds_by_name = {} 634 for build_info in extra_builds: builds = [] event = 142000989 include_packages = set() inherit = False msg = 'Getting latest RPMs (tag: epel8, event: 142000989, inherit: False)' result_rpms = [] result_srpms = [] rpms = [] self = self._allow_invalid_sigkeys = True self._invalid_sigkey_rpms = [] self._logger = self.arches = {'s390', 'i686', 'athlon', 'i486', 'src', 's390x', 'noarch', 'i386', 'x86_64', 'i586', 'aarch64', 'ppc64le'} self.cache_region = self.downloader = self.extra_builds = [] self.extra_tasks = [] self.file_cache = self.invalid_sigkey_rpms = [] self.koji_proxy = self.koji_wrapper = self.name = 'epel8' self.old_file_cache = self.packages = {'krusader', 'kscreenlocker', 'gwenview', 'firefox', 'extra-cmake-modules', 'abattis-cantarell-fonts', 'kmahjongg', 'okteta', 'qt5-qtlocation-devel', 'klettres', 'kamera', 'xfce4-panel', 'blinken', 'a self.populate_only_packages = False self.reuse = None self.rpms_by_arch = {} self.sigkey_ordering = '2f86d6a1' self.signed_packages_retries = 0 self.signed_packages_wait = 30 self.srpms_by_name = {} tag = 'epel8' Frame populate_global_pkgset in /usr/lib/python3.13/site-packages/pungi/phases/pkgset/sources/source_koji.py at line 911 904 compose, 905 compose_tag, 906 inherit=should_inherit, 907 include_packages=modular_packages, 908 ) 909 910 if pkgset.reuse is None: --> 911 pkgset.populate( 912 compose_tag, 913 # We care about packages as they existed on the specified 914 # event. However, modular content tags are not expected to 915 # change, so the event doesn't matter there. If an exact NSVC 916 # of a module is specified, the code above would happily find 917 # its content tag, but fail here if the content tag doesn't all_arches = {'s390', 'i686', 'athlon', 'i486', 'src', 's390x', 'noarch', 'i386', 'x86_64', 'i586', 'aarch64', 'ppc64le'} allow_invalid_sigkeys = True compose = compose_tag = 'epel8' compose_tags = ['epel8'] comps = event = {'id': 142000989, 'ts': 1733553861.810425} exclude_module_ns = [] extra_builds = [] extra_modules = [] extra_tasks = [] group = 'hardware-support' groups = ['core', 'base-x', 'print-client', 'firefox', 'guest-desktop-agents', 'fonts', 'fedora-packager', 'networkmanager-submodules', 'standard', 'kde-education', 'kde-desktop', 'xfce-desktop', 'critical-pat inherit = False inherit_modules = False is_traditional = True koji_wrapper = kwargs = {'extra_builds': [], 'extra_tasks': []} modular_koji_tags = [] modular_packages = set() old_cache_path = '/mnt/koji/compose/updates/Fedora-Epel-8-updates-20241207.0/work/global/pkgset_epel8_file_cache.pickle' packages_to_gather = ['*', '*-debuginfo', 'bash', 'glx-utils', 'cups', 'firefox', 'spice-streaming-agent', 'abattis-cantarell-fonts', 'bodhi-client', 'fedora-easy-karma', 'fedora-packager', 'fedrepo-req', 'git', 'koji', ' pkgset = pkgset_koji_tags = ['epel8'] pkgsets = [] populate_only_packages_to_gather = False should_inherit = False tag_to_mmd = {} variant = Variant(id="Silverblue", name="Silverblue", type="variant", parent=None) variant_scratch_modules = [] variant_tags = {Variant(id="Everything", name="Everything", type="variant", parent=None): ['epel8'], Variant(id="Kinoite", name="Kinoite", type="variant", parent=None): ['epel8'], Variant(id="Onyx", name="Onyx", typ Frame get_pkgset_from_koji in /usr/lib/python3.13/site-packages/pungi/phases/pkgset/sources/source_koji.py at line 202 195 self.koji_wrapper = pungi.wrappers.kojiwrapper.KojiWrapper(compose) 196 package_sets = get_pkgset_from_koji(self.compose, self.koji_wrapper) 197 return (package_sets, self.compose.koji_downloader.path_prefix) 198 199 200 def get_pkgset_from_koji(compose, koji_wrapper): 201 event_info = get_koji_event_info(compose, koji_wrapper) --> 202 return populate_global_pkgset(compose, koji_wrapper, event_info) 203 204 205 def _add_module_to_variant( 206 koji_wrapper, 207 variant, 208 build, compose = event_info = {'id': 142000989, 'ts': 1733553861.810425} koji_wrapper = Frame __call__ in /usr/lib/python3.13/site-packages/pungi/phases/pkgset/sources/source_koji.py at line 196 189 return modules 190 191 192 class PkgsetSourceKoji(pungi.phases.pkgset.source.PkgsetSourceBase): 193 def __call__(self): 194 compose = self.compose 195 self.koji_wrapper = pungi.wrappers.kojiwrapper.KojiWrapper(compose) --> 196 package_sets = get_pkgset_from_koji(self.compose, self.koji_wrapper) 197 return (package_sets, self.compose.koji_downloader.path_prefix) 198 199 200 def get_pkgset_from_koji(compose, koji_wrapper): 201 event_info = get_koji_event_info(compose, koji_wrapper) 202 return populate_global_pkgset(compose, koji_wrapper, event_info) compose = self = self.compose = self.koji_wrapper = Frame run in /usr/lib/python3.13/site-packages/pungi/phases/pkgset/__init__.py at line 36 29 self.path_prefix = None 30 31 def run(self): 32 from . import sources 33 34 SourceClass = sources.ALL_SOURCES[self.compose.conf["pkgset_source"].lower()] 35 --> 36 self.package_sets, self.path_prefix = SourceClass(self.compose)() 37 38 def validate(self): 39 extra_tasks = self.compose.conf.get("pkgset_koji_scratch_tasks", None) 40 sigkeys = tuple(self.compose.conf["sigkeys"] or [None]) 41 if extra_tasks is not None and None not in sigkeys and "" not in sigkeys: 42 raise ValueError( SourceClass = self = self._skipped = False self._start_time = 1733553860.9003527 self.compose = self.finished = False self.msg = '---------- PHASE: PKGSET ----------' self.name = 'pkgset' self.package_sets = [] self.path_prefix = None self.used_patterns = None sources = Frame start in /usr/lib/python3.13/site-packages/pungi/phases/base.py at line 66 59 if self._skipped: 60 self.compose.log_warning("[SKIP ] %s" % self.msg) 61 self.finished = True 62 return 63 self._start_time = time.time() 64 self.compose.log_info("[BEGIN] %s" % self.msg) 65 self.compose.notifier.send("phase-start", phase_name=self.name) --> 66 self.run() 67 68 def get_config_block(self, variant, arch=None): 69 """In config for current phase, find a block corresponding to given 70 variant and arch. The arch should be given if and only if the config 71 uses variant/arch mapping. 72 """ self = self._skipped = False self._start_time = 1733553860.9003527 self.compose = self.finished = False self.msg = '---------- PHASE: PKGSET ----------' self.name = 'pkgset' self.package_sets = [] self.path_prefix = None self.used_patterns = None Frame run_compose in /usr/lib/python3.13/site-packages/pungi/scripts/pungi_koji.py at line 471 464 compose.log_error(i) 465 print(i) 466 raise RuntimeError("Configuration is not valid") 467 468 init_phase.start() 469 init_phase.stop() 470 --> 471 pkgset_phase.start() 472 pkgset_phase.stop() 473 474 # WEAVER phase - launches other phases which can safely run in parallel 475 essentials_schema = ( 476 buildinstall_phase, 477 (gather_phase, createrepo_phase), buildinstall_phase = compose = config_copy_path = '/mnt/koji/compose/updates/Fedora-Epel-8-updates-20241207.1/logs/global/config-copy' config_dump_full = '/mnt/koji/compose/updates/Fedora-Epel-8-updates-20241207.1/logs/global/config-dump.global.log' config_file = '/tmp/bodhi-pungi-epel8-6bec3lw_/pungi_multilib.conf' create_latest_link = False createiso_phase = createrepo_phase = errors = [] extra_isos_phase = extrafiles_phase = f = <_io.TextIOWrapper name='/mnt/koji/compose/updates/Fedora-Epel-8-updates-20241207.1/logs/global/config-dump.global.log' mode='w' encoding='UTF-8'> gather_phase = image_build_phase = image_checksum_phase = image_container_phase = init_phase = installed_pkgs_log = '/mnt/koji/compose/updates/Fedora-Epel-8-updates-20241207.1/logs/global/installed-pkgs.global.log' kiwibuild_phase = latest_link_components = -1 latest_link_status = None livemedia_phase = osbs_phase = osbuild_phase = ostree_container_phase = ostree_installer_phase = ostree_phase = phase = pkgset_phase = pungi = repoclosure_phase = test_phase = Frame main in /usr/lib/python3.13/site-packages/pungi/scripts/pungi_koji.py at line 353 346 logger.error("Config validation failed with the error: %s" % error) 347 fail_to_start("Config validation failed", errors=errors) 348 sys.exit(1) 349 350 notifier.compose = compose 351 COMPOSE = compose 352 try: --> 353 run_compose( 354 compose, 355 create_latest_link=create_latest_link, 356 latest_link_status=latest_link_status, 357 latest_link_components=latest_link_components, 358 ) 359 except UnsignedPackagesError: Compose = PHASES_NAMES_MODIFIED = ['buildinstall', 'createiso', 'createrepo', 'extra_files', 'extra_isos', 'gather', 'image_build', 'image_checksum', 'image_container', 'init', 'kiwibuild', 'live_media', 'osbs', 'osbuild', 'ostree_con abort = .abort at 0x7fb40bef00e0> compose = compose_dir = '/mnt/koji/compose/updates/Fedora-Epel-8-updates-20241207.1' compose_type = 'production' conf = {'release_is_layered': False, 'hashed_directories': True, 'pkgset_source': 'koji', 'filter_system_release_packages': False, 'greedy_method': 'build', 'createrepo_c': True, 'createrepo_checksum': 'sha2 create_latest_link = False errors = [] fail_to_start = .fail_to_start at 0x7fb40bed3f60> group = kobo = latest_link_components = -1 latest_link_status = None logger = notifier = opts = Namespace(target_dir='/mnt/koji/compose/updates', compose_dir=None, label='Update-20241207.0642', no_label=False, supported=False, old_composes=['/mnt/koji/compose/updates/'], config='/tmp/bodhi-pungi parser = ArgumentParser(prog='pungi-koji', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) productmd = pungi = rv = None warnings = ["WARNING: Config option release_is_layered was removed and has no effect; remove it. It's layered if there's configuration for base product.", "WARNING: Config option runroot was removed and has no e Frame cli_main in /usr/lib/python3.13/site-packages/pungi/scripts/pungi_koji.py at line 651 644 645 646 def cli_main(): 647 signal.signal(signal.SIGINT, sigterm_handler) 648 signal.signal(signal.SIGTERM, sigterm_handler) 649 650 try: --> 651 main() 652 except (Exception, KeyboardInterrupt) as ex: 653 if COMPOSE: 654 COMPOSE.log_error("Compose run failed: %s" % ex) 655 COMPOSE.traceback(show_locals=getattr(ex, "show_locals", True)) 656 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir) 657 COMPOSE.write_status("DOOMED") ex = ServerOffline('database outage')