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')