Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 648, in cli_main
main()
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 338, in main
latest_link_components=latest_link_components,
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 506, in run_compose
essentials_phase.stop()
File "/usr/lib/python3.6/site-packages/pungi/phases/weaver.py", line 57, in stop
self.pool.stop()
File "/usr/lib/python3.6/site-packages/kobo/threads.py", line 117, in stop
i.join()
File "/usr/lib64/python3.6/threading.py", line 1059, in join
self._wait_for_tstate_lock()
File "/usr/lib64/python3.6/threading.py", line 1075, in _wait_for_tstate_lock
elif lock.acquire(block, timeout):
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 638, in sigterm_handler
sys.stdout.flush()
BrokenPipeError: [Errno 32] Broken pipe
Frame sigterm_handler in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 638
631 try_kill_children(signum)
632 COMPOSE.log_error("Compose run failed: signal %s" % signum)
633 COMPOSE.log_error("Traceback:\n%s" % "\n".join(traceback.format_stack(frame)))
634 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir)
635 COMPOSE.write_status("TERMINATED")
636 else:
637 print("Signal %s captured" % signum)
--> 638 sys.stdout.flush()
639 sys.stderr.flush()
640 sys.exit(1)
641
642
643 def cli_main():
644 signal.signal(signal.SIGINT, sigterm_handler)
frame =
signum = 2
Frame _wait_for_tstate_lock in /usr/lib64/python3.6/threading.py at line 1075
1068 # is removed from C data structures, C code releases our _tstate_lock.
1069 # This method passes its arguments to _tstate_lock.acquire().
1070 # If the lock is acquired, the C code is done, and self._stop() is
1071 # called. That sets ._is_stopped to True, and ._tstate_lock to None.
1072 lock = self._tstate_lock
1073 if lock is None: # already determined that the C code is done
1074 assert self._is_stopped
--> 1075 elif lock.acquire(block, timeout):
1076 lock.release()
1077 self._stop()
1078
1079 @property
1080 def name(self):
1081 """A string used for identification purposes only.
block = True
lock =
self =
self._args =
self._daemonic = False
self._ident = 140193418434304
self._initialized = True
self._is_stopped = False
self._kwargs = {}
self._name = 'Thread-36'
self._started =
self._stderr = <_io.TextIOWrapper name='' mode='w' encoding='UTF-8'>
self._target = None
self._tstate_lock =
self.daemon = False
self.failed = False
self.get_timeout = 1
self.ident = 140193418434304
self.kill = False
self.name = 'Thread-36'
self.pool =
self.running = False
timeout = -1
Frame join in /usr/lib64/python3.6/threading.py at line 1059
1052 raise RuntimeError("Thread.__init__() not called")
1053 if not self._started.is_set():
1054 raise RuntimeError("cannot join thread before it is started")
1055 if self is current_thread():
1056 raise RuntimeError("cannot join current thread")
1057
1058 if timeout is None:
--> 1059 self._wait_for_tstate_lock()
1060 else:
1061 # the behavior of a negative timeout isn't documented, but
1062 # historically .join(timeout=x) for x<0 has acted as if timeout=0
1063 self._wait_for_tstate_lock(timeout=max(timeout, 0))
1064
1065 def _wait_for_tstate_lock(self, block=True, timeout=-1):
self =
self._args =
self._daemonic = False
self._ident = 140193418434304
self._initialized = True
self._is_stopped = False
self._kwargs = {}
self._name = 'Thread-36'
self._started =
self._stderr = <_io.TextIOWrapper name='' mode='w' encoding='UTF-8'>
self._target = None
self._tstate_lock =
self.daemon = False
self.failed = False
self.get_timeout = 1
self.ident = 140193418434304
self.kill = False
self.name = 'Thread-36'
self.pool =
self.running = False
timeout = None
Frame stop in /usr/lib/python3.6/site-packages/kobo/threads.py at line 117
110 It is essential to call this method. If you do any work in between
111 ``start`` and ``stop``, make sure the ``stop`` method will always be
112 called, otherwise the program will never exit.
113 """
114 for i in self.threads:
115 i.running = False
116 for i in self.threads:
--> 117 i.join()
118 if self.exceptions:
119 exc_info = self.exceptions[0]
120 six.reraise(exc_info[0], exc_info[1], exc_info[2])
121
122 def kill(self):
123 for i in self.threads:
i =
self =
self._logger =
self.exceptions = []
self.queue =
self.queue_get_lock =
self.queue_processed = 4
self.queue_put_lock =
self.queue_total = 4
self.threads = [, , ,
Frame stop in /usr/lib/python3.6/site-packages/pungi/phases/weaver.py at line 57
50
51 self.pool.start()
52
53 def stop(self):
54 if self.finished:
55 return
56 if hasattr(self, "pool"):
--> 57 self.pool.stop()
58 self.finished = True
59 self.compose.log_info("[DONE ] %s" % self.msg)
60
61
62 class PipelineThread(WorkerThread):
63 """
self =
self._phases_schema =
self.compose =
self.finished = False
self.msg = '---------- PHASE: WEAVER ----------'
self.name = 'weaver'
self.pool =
Frame run_compose in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 506
499 buildinstall_phase,
500 (gather_phase, createrepo_phase),
501 extrafiles_phase,
502 (ostree_phase, ostree_installer_phase),
503 )
504 essentials_phase = pungi.phases.WeaverPhase(compose, essentials_schema)
505 essentials_phase.start()
--> 506 essentials_phase.stop()
507
508 # write treeinfo before ISOs are created
509 for variant in compose.get_variants():
510 for arch in variant.arches + ["src"]:
511 pungi.metadata.write_tree_info(
512 compose, arch, variant, bi=buildinstall_phase
buildinstall_phase =
combination =
compose =
config_copy_path = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20240222.1/logs/global/config-copy'
config_dump_full = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20240222.1/logs/global/config-dump.global.log'
config_file = '/root/opencloudos/compose/pungi-opencloudos/opencloudos/override.conf'
create_latest_link = True
createiso_phase =
createrepo_phase =
errors = []
essentials_phase =
essentials_schema =
extra_isos_phase =
extrafiles_phase =
f = <_io.TextIOWrapper name='/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20240222.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 =
latest_link_components = -1
latest_link_status = None
liveimages_phase =
livemedia_phase =
osbs_phase =
osbuild_phase =
ostree_installer_phase =
ostree_phase =
phase =
pkgset_phase =
pungi =
repoclosure_phase =
test_phase =
Frame main in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 338
331 notifier.compose = compose
332 COMPOSE = compose
333 try:
334 run_compose(
335 compose,
336 create_latest_link=create_latest_link,
337 latest_link_status=latest_link_status,
--> 338 latest_link_components=latest_link_components,
339 )
340 except UnsignedPackagesError:
341 # There was an unsigned package somewhere. It is not safe to reuse any
342 # package set from this compose (since we could leak the unsigned
343 # package). Let's make sure all reuse files are deleted.
344 for fp in glob.glob(compose.paths.work.pkgset_reuse_file("*")):
Compose =
PHASES_NAMES_MODIFIED = ['buildinstall', 'createiso', 'createrepo', 'extra_files', 'extra_isos', 'gather', 'image_build', 'image_checksum', 'image_container', 'init', 'live_images', 'live_media', 'osbs', 'osbuild', 'ostree',
abort = .abort at 0x7f8181232ea0>
compose =
compose_dir = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20240222.1'
compose_type = 'production'
conf = {'RELEASE_NAME': 'OpenCloudOS', 'RELEASE_SHORT': 'OpenCloudOS', 'RELEASE_VERSION': '9.0', 'PKGSET_KOJI_TAG': 'dist-oc9-compose', 'RUNROOT_CHANNEL': 'image', 'RUNROOT_TAG': 'dist-oc9-build', 'RELEASE_V
create_latest_link = True
errors = []
fail_to_start = .fail_to_start at 0x7f8181232e18>
group =
kobo =
latest_link_components = -1
latest_link_status = None
logger =
notifier =
opts = Namespace(compose_dir=None, compose_type='production', config='/root/opencloudos/compose/pungi-opencloudos/oc-updates.conf', just_phase=[], koji_event=None, label='RC-9.0', latest_link_components=-1,
parser = ArgumentParser(prog='pungi-koji', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True)
productmd =
pungi =
warning = 'WARNING: Unrecognized config option: GATHER_PREPOPULATE_REPO.'
warnings = ["WARNING: Config option runroot was removed and has no effect; remove it. Please specify 'runroot_method' if you want to enable runroot, otherwise run things locally.", 'WARNING: Config option bootab
Frame cli_main in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 648
641
642
643 def cli_main():
644 signal.signal(signal.SIGINT, sigterm_handler)
645 signal.signal(signal.SIGTERM, sigterm_handler)
646
647 try:
--> 648 main()
649 except (Exception, KeyboardInterrupt) as ex:
650 if COMPOSE:
651 tb_path = COMPOSE.paths.log.log_file("global", "traceback")
652 COMPOSE.log_error("Compose run failed: %s" % ex)
653 COMPOSE.log_error("Extended traceback in: %s" % tb_path)
654 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir)
ex = BrokenPipeError(32, 'Broken pipe')
f = <_io.BufferedWriter name='/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20240222.1/logs/global/traceback.global.log'>
kobo =
tb_path = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20240222.1/logs/global/traceback.global.log'