Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unarchive failed #582

Closed
SQGE opened this issue Apr 23, 2019 · 3 comments

Comments

@SQGE
Copy link

commented Apr 23, 2019

Hello, run playbook with Mitogen configuration to prompt for error

ansible version = ansible 2.4.3.0

python version = 2.7.12

playbook

 unarchive:
    src: "{{pkg_file}}"
    dest: "{{app_prefix}}/{{product}}"
An exception occurred during task execution. To see the full traceback, use -vvv. The error was:     fd = _os.open(file, flags, 0600)
fatal: [10.80.176.196]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}
	to retry, use: --limit @/data/ftp/ops/ansible2/appdeploy/site.retry

-vvv information

task path: /data/ftp/ops/ansible2/appdeploy/roles/deploy/tasks/main.yml:72
[task 25310] 16:02:20.441436 D ansible_mitogen.mixins: _make_tmp_path(remote_user=None)
[task 25310] 16:02:20.445080 D mitogen: unix.connect(path='/tmp/mitogen_unix_XQZPTe.sock')
[task 25310] 16:02:20.446001 D mitogen: unix.connect(): local ID is 2013, remote is 0
[mux  25152] 16:02:20.445966 D mitogen: mitogen.unix.Listener('/tmp/mitogen_unix_XQZPTe.sock'): accepted mitogen.core.Stream('unix_client.25310')
[task 25310] 16:02:20.450612 D ansible_mitogen.mixins: Temporary directory: u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd'
[task 25310] 16:02:20.451655 D mitogen: CallChain(Context(2, u'ssh.10.80.176.196:6868')).call_no_reply(): posix.mkdir(u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd')
[task 25310] 16:02:20.452452 D ansible_mitogen.mixins: _remote_expand_user(u'/data/ftp/app/nethos', sudoable=True)
[task 25310] 16:02:20.455808 D ansible_mitogen.planner: BinaryPlanner() rejected u'stat'
[task 25310] 16:02:20.456450 D ansible_mitogen.planner: NewStylePlanner() accepted u'stat' (filename u'/usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py')
[mux  25152] 16:02:20.458821 D mitogen: PushFileService().propagate_to(Context(2, u'ssh.10.80.176.196:6868'), u'/usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py')
[mux  25152] 16:02:20.459883 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_one(('iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76', u'posix', None, u'mkdir', (u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd',), Kwargs({})))
[task 25310] 16:02:20.460055 D mitogen: CallChain(Context(2, u'ssh.10.80.176.196:6868')).call_async(): ansible_mitogen.target.run_module(kwargs={u'module_map': {u'builtin': [u'ansible.module_utils._text', u'ansible.module_utils.basic', u'ansible.module_utils.parsing', u'ansible.module_utils.parsing.convert_bool', u'ansible.module_utils.pycompat24', u'ansible.module_utils.six'], u'custom': []}, u'emulate_tty': True, u'good_temp_dir': u'/home/hsyun/.ansible/tmp', u'module': u'stat', u'cwd': None, u'service_context': Context(0, None), u'extra_env': None, u'is_python': None, u'env': {}, u'path': u'/usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py', u'runner_name': u'NewStyleRunner', u'interpreter_fragment': None, u'json_args': '{"_ansible_version": "2.4.3.0", "follow": true, "_ansible_selinux_special_fs": ["fuse", "nfs", "vboxsf", "ramfs", "9p"], "_ansible_no_log": false, "_ansible_module_name": "stat", "_ansible_verbosity": 3, "_ansible_syslog_facility": "LOG_USER", "_ansible_socket": null, "checksum_algo": "sha1", "_ansible_diff": false, "get_checksum": true, "_ansible_debug": false, "_ansible_shell_executable": "/bin/sh", "_ansible_check_mode": false, "get_md5": false, "path": "/data/ftp/app/nethos"}'})
[mux  25152] 16:02:20.460299 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_calls: Message(2, 2013, 0, 101, 0, '\x80\x02(U-iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76'..179) -> None
[mux  25152] 16:02:20.463961 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_one(('iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76', u'ansible_mitogen.target', None, u'run_module', (), Kwargs({'kwargs': {u'module_map': {u'builtin': [u'ansible.module_utils._text', u'ansible.module_utils.basic', u'ansible.module_utils.parsing', u'ansible.module_utils.parsing.convert_bool', u'ansible.module_utils.pycompat24', u'ansible.module_utils.six'], u'custom': []}, u'emulate_tty': True, u'good_temp_dir': u'/home/hsyun/.ansible/tmp', u'module': u'stat', u'interpreter_fragment': None, u'service_context': Context(0, 'master'), u'extra_env': None, u'is_python': None, u'env': {}, u'path': u'/usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py', u'json_args': '{"_ansible_version": "2.4.3.0", "follow": true, "_ansible_selinux_special_fs": ["fuse", "nfs", "vboxsf", "ramfs", "9p"], "_ansible_no_log": false, "_ansible_module_name": "stat", "_ansible_verbosity": 3, "_ansible_syslog_facility": "LOG_USER", "_ansible_socket": null, "checksum_algo": "sha1", "_ansible_diff": false, "get_checksum": true, "_ansible_debug": false, "_ansible_shell_executable": "/bin/sh", "_ansible_check_mode": false, "get_md5": false, "path": "/data/ftp/app/nethos"}', u'cwd': None, u'runner_name': u'NewStyleRunner'}})))
[mux  25152] 16:02:20.465055 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: Importer().find_module('ansible.module_utils.parsing.')
[mux  25152] 16:02:20.465669 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: Importer(): master doesn't know u'ansible.module_utils.parsing.'
[mux  25152] 16:02:20.466272 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: Importer().find_module('ansible.module_utils.six.')
[mux  25152] 16:02:20.466913 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: Importer(): master doesn't know u'ansible.module_utils.six.'
[mux  25152] 16:02:20.483319 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_calls: Message(2, 2013, 0, 101, 1003, '\x80\x02(U-iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76'..1272) -> {u'stdout': u'\n{"invocation": {"module_args": {"checksum_algorithm": "sha1", "get_checksum": true, "path": "/data/ftp/app/nethos", "checksum_algo": "sha1", "follow": true, "get_md5": false, "get_mime": true, "get_attributes": true}}, "stat": {"charset": "binary", "uid": 1000, "exists": true, "attr_flags": "e", "woth": false, "isreg": false, "device_type": 0, "mtime": 1556006540.2606115, "block_size": 4096, "inode": 2621447, "isgid": false, "size": 4096, "executable": true, "isuid": false, "readable": true, "version": "18446744071844106845", "pw_name": "hsyun", "gid": 1000, "ischr": false, "wusr": true, "writeable": true, "mimetype": "inode/directory", "blocks": 8, "xoth": true, "islnk": false, "nlink": 14, "issock": false, "rgrp": true, "gr_name": "hsyun", "path": "/data/ftp/app/nethos", "xusr": true, "atime": 1555998390.3124804, "isdir": true, "ctime": 1556006540.2606115, "isblk": false, "wgrp": false, "xgrp": true, "dev": 64769, "roth": true, "isfifo": false, "mode": "0755", "rusr": true, "attributes": ["extents"]}, "changed": false}\n', u'stderr': u'', u'rc': 0}
[task 25310] 16:02:20.484910 D ansible_mitogen.connection: Call took 24 ms: ansible_mitogen.target.run_module(kwargs={u'module_map': {u'builtin': [u'ansible.module_utils._text', u'ansible.module_utils.basic', u'ansible.module_utils.parsing', u'ansible.module_utils.parsing.convert_bool', u'ansible.module_utils.pycompat24', u'ansible.module_utils.six'], u'custom': []}, u'emulate_tty': True, u'good_temp_dir': u'/home/hsyun/.ansible/tmp', u'module': u'stat', u'cwd': None, u'service_context': Context(0, None), u'extra_env': None, u'is_python': None, u'env': {}, u'path': u'/usr/local/lib/python2.7/site-packages/ansible/modules/files/stat.py', u'runner_name': u'NewStyleRunner', u'interpreter_fragment': None, u'json_args': '{"_ansible_version": "2.4.3.0", "follow": true, "_ansible_selinux_special_fs": ["fuse", "nfs", "vboxsf", "ramfs", "9p"], "_ansible_no_log": false, "_ansible_module_name": "stat", "_ansible_verbosity": 3, "_ansible_syslog_facility": "LOG_USER", "_ansible_socket": null, "checksum_algo": "sha1", "_ansible_diff": false, "get_checksum": true, "_ansible_debug": false, "_ansible_shell_executable": "/bin/sh", "_ansible_check_mode": false, "get_md5": false, "path": "/data/ftp/app/nethos"}'})
[task 25310] 16:02:20.485757 D ansible_mitogen.mixins: _remove_tmp_path(u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd')
[task 25310] 16:02:20.486032 D mitogen: CallChain(Context(2, u'ssh.10.80.176.196:6868')).call_no_reply(): ansible_mitogen.target.prune_tree(u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd')
[mux  25152] 16:02:20.487409 D mitogen: FileService(): registering u'/data/ftp/pkg/test/nethos/nethos-baseinfo-server/174/nethos-baseinfo-server-bin.zip'
[task 25310] 16:02:20.488182 D mitogen: CallChain(Context(2, u'ssh.10.80.176.196:6868')).call_async(): ansible_mitogen.target.transfer_file(in_path=u'/data/ftp/pkg/test/nethos/nethos-baseinfo-server/174/nethos-baseinfo-server-bin.zip', context=Context(0, None), out_path=u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd/source')
[mux  25152] 16:02:20.489813 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_one(('iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76', u'ansible_mitogen.target', None, u'prune_tree', (u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd',), Kwargs({})))
[mux  25152] 16:02:20.490360 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_calls: Message(2, 2013, 0, 101, 0, '\x80\x02(U-iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76'..201) -> None
[mux  25152] 16:02:20.492112 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_one(('iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76', u'ansible_mitogen.target', None, u'transfer_file', (), Kwargs({'in_path': u'/data/ftp/pkg/test/nethos/nethos-baseinfo-server/174/nethos-baseinfo-server-bin.zip', 'out_path': u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd/source', 'context': Context(0, 'master')})))
[mux  25152] 16:02:20.492810 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_calls: Message(2, 2013, 0, 101, 1005, '\x80\x02(U-iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76'..378) -> CallError(u'exceptions.OSError: [Errno 2] \u6ca1\u6709\u90a3\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55: \'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd/.ansible_mitogen_transfer-nqv9Q_.tmp\'\n  File "<stdin>", line 3107, in _dispatch_one\n  File "master:/home/hswk/ansible-plugin/mitogen-0.2.6/ansible_mitogen/target.py", line 198, in transfer_file\n    dir=os.path.dirname(out_path))\n  File "/usr/lib64/python2.7/tempfile.py", line 304, in mkstemp\n    return _mkstemp_inner(dir, prefix, suffix, flags)\n  File "/usr/lib64/python2.7/tempfile.py", line 239, in _mkstemp_inner\n    fd = _os.open(file, flags, 0600)\n',)
[task 25310] 16:02:20.493363 D ansible_mitogen.connection: Call took 5 ms: ansible_mitogen.target.transfer_file(in_path=u'/data/ftp/pkg/test/nethos/nethos-baseinfo-server/174/nethos-baseinfo-server-bin.zip', out_path=u'/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd/source', context=Context(0, None))
[task 25310] 16:02:20.496966 D mitogen: CallChain(Context(2, u'ssh.10.80.176.196:6868')).call_no_reply(): mitogen.core.Dispatcher.forget_chain('iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76')
[mux  25152] 16:02:20.498089 D ansible_mitogen.services: ContextService().put(Context(2, u'ssh.10.80.176.196:6868'))
[task 25310] 16:02:20.499007 D mitogen: mitogen.core.Stream('unix_listener.25152').on_disconnect()
[mux  25152] 16:02:20.499695 D mitogen: mitogen.core.Stream('unix_client.25310').on_disconnect()
[task 25310] 16:02:20.499746 D mitogen: Waker(Broker(0x7f184499bed0) rfd=14, wfd=15).on_disconnect()
[task 25310] 16:02:20.500662 D mitogen: Router(Broker(0x7f184499bed0)): stats: 0 module requests in 0 ms, 0 sent (0 ms minify time), 0 negative responses. Sent 0.0 kb total, 0.0 kb avg.
[mux  25152] 16:02:20.501621 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_one((None, u'mitogen.core', u'Dispatcher', u'forget_chain', ('iZ230up6i05Z-25310-7f1856ea5740-5872e011c9a76',), Kwargs({})))
[mux  25152] 16:02:20.502051 D mitogen.ctx.ssh.10.80.176.196:6868: mitogen: _dispatch_calls: Message(2, 2013, 0, 101, 0, '\x80\x02(NX\x0c\x00\x00\x00mitogen.coreX\n\x00\x00\x00Dispatcherq\x01X\x0c\x00\x00\x00forget_'..139) -> None
The full traceback is:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 130, in run
    res = self._execute()
  File "/usr/local/lib/python2.7/site-packages/ansible/executor/task_executor.py", line 528, in _execute
    result = self._handler.run(task_vars=variables)
  File "/home/hswk/ansible-plugin/mitogen-0.2.6/ansible_mitogen/mixins.py", line 116, in run
    return super(ActionModuleMixin, self).run(tmp, task_vars)
  File "/usr/local/lib/python2.7/site-packages/ansible/plugins/action/unarchive.py", line 105, in run
    self._transfer_file(source, tmp_src)
  File "/usr/local/lib/python2.7/site-packages/ansible/plugins/action/__init__.py", line 310, in _transfer_file
    self._connection.put_file(local_path, remote_path)
  File "/home/hswk/ansible-plugin/mitogen-0.2.6/ansible_mitogen/connection.py", line 999, in put_file
    out_path=out_path
  File "/home/hswk/ansible-plugin/mitogen-0.2.6/ansible_mitogen/connection.py", line 413, in call
    return self._rethrow(recv)
  File "/home/hswk/ansible-plugin/mitogen-0.2.6/ansible_mitogen/connection.py", line 399, in _rethrow
    return recv.get().unpickle()
  File "/home/hswk/ansible-plugin/mitogen-0.2.6/mitogen/core.py", line 835, in unpickle
    raise obj
CallError: exceptions.OSError: [Errno 2] \u6ca1\u6709\u90a3\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55: '/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd/.ansible_mitogen_transfer-nqv9Q_.tmp'
  File "<stdin>", line 3107, in _dispatch_one
  File "master:/home/hswk/ansible-plugin/mitogen-0.2.6/ansible_mitogen/target.py", line 198, in transfer_file
    dir=os.path.dirname(out_path))
  File "/usr/lib64/python2.7/tempfile.py", line 304, in mkstemp
    return _mkstemp_inner(dir, prefix, suffix, flags)
  File "/usr/lib64/python2.7/tempfile.py", line 239, in _mkstemp_inner
    fd = _os.open(file, flags, 0600)


fatal: [10.80.176.196]: FAILED! => {
    "msg": "Unexpected failure during module execution.", 
    "stdout": ""
}
@fdutheil

This comment has been minimized.

Copy link

commented Apr 25, 2019

Please use "code" markdown syntax to paste your output, it's very difficult to read otherwise. And specify which version of Mitogen you're using.
Linking #558 here but I'm not sure it's the same issue, related to unarchive ansible module too though.

@dw

This comment has been minimized.

Copy link
Owner

commented Jun 4, 2019

From the error,

CallError: exceptions.OSError: [Errno 2] \u6ca1\u6709\u90a3\u4e2a\u6587\u4ef6\u6216\u76ee\u5f55: '/home/hsyun/.ansible/tmp/ansible_mitogen_action_eb933806a2b42edd/.ansible_mitogen_transfer-nqv9Q_.tmp'

The Unicode "没有那个文件或目录" translates to No such file or directory

It's definitely the same as #558 -- thanks for ferreting, @fdutheil :)

dw added a commit that referenced this issue Aug 12, 2019

issue #558, #582: preserve remote tmpdir if caller did not supply one
The undocumented 'tmp' parameter controls whether _execute_module()
would delete anything on 2.3, so mimic that. This means
_execute_remove_stat() calls will not blow away the temp directory,
which broke the unarchive plugin.

dw added a commit that referenced this issue Aug 12, 2019

issue #558, #582: preserve remote tmpdir if caller did not supply one
The undocumented 'tmp' parameter controls whether _execute_module()
would delete anything on 2.3, so mimic that. This means
_execute_remove_stat() calls will not blow away the temp directory,
which broke the unarchive plugin.

dw added a commit that referenced this issue Aug 12, 2019

Merge remote-tracking branch 'origin/dmw'
* origin/dmw:
  issue #558: disable test on OSX to cope with boundless mediocrity
  issue #558, #582: preserve remote tmpdir if caller did not supply one
@dw

This comment has been minimized.

Copy link
Owner

commented Aug 12, 2019

This is now on the master branch and will make it into the next release. To be updated when a new release is made, subscribe to https://networkgenomics.com/mail/mitogen-announce/

Thanks for reporting this!

@dw dw closed this Aug 12, 2019

dw added a commit that referenced this issue Aug 18, 2019

Merge remote-tracking branch 'origin/v028' into stable
* origin/v028: (383 commits)
  Bump version for release.
  docs: update Changelog for 0.2.8.
  issue #627: add test and tweak Reaper behaviour.
  docs: lots more changelog concision
  docs: changelog concision
  docs: more changelog tweaks
  docs: reorder chapters
  docs: versionless <title>
  docs: update supported Ansible version, mention unsupported features
  docs: changelog fixes/tweaks
  issue #590: update Changelog.
  issue #621: send ADD_ROUTE earlier and add test for early logging.
  issue #590: whoops, import missing test modules
  issue #590: rework ParentEnumerationMethod to recursively handle bad modules
  issue #627: reduce the default pool size in a child to 2.
  tests: add a few extra service tests.
  docs: some more hyperlink joy
  docs: more hyperlinks
  docs: add domainrefs plugin to make link aliases everywhere \o/
  docs: link IS_DEAD in changelog
  docs: tweaks to better explain changelog race
  issue #533: update routing to account for DEL_ROUTE propagation race
  tests: use defer_sync() Rather than defer() + ancient sync_with_broker()
  tests: one case from doas_test was invoking su
  tests: hide memory-mapped files from lsof output
  issue #615: remove meaningless test
  issue #625: ignore SIGINT within MuxProcess
  issue #625: use exec() instead of subprocess in mitogen_ansible_playbook
  issue #615: regression test
  issue #615: update Changelog.
  issue #615: ensure 4GB max_message_size is configured for task workers.
  issue #615: update Changelog.
  issue #615: route a dead message to recipients when no reply is expected
  issue #615: fetch_file() might be called with AnsibleUnicode.
  issue #615: redirect 'fetch' action to 'mitogen_fetch'.
  issue #615: extricate slurp brainwrong from mitogen_fetch
  issue #615: ansible: import Ansible fetch.py action plug-in
  issue #533: include object identity of Stream in repr()
  docs: lots more changelog
  issue #595: add buildah to docs and changelog.
  docs: a few more internals.rst additions
  ci: update to Ansible 2.8.3
  tests: another random string changed in 2.8.3
  tests: fix sudo_flags_failure for Ansible 2.8.3
  ci: fix procps command line format warning
  Whoops, merge together lgtm.yml and .lgtm.yml
  issue #440: log Python version during bootstrap.
  docs: update changelog
  issue #558: disable test on OSX to cope with boundless mediocrity
  issue #558, #582: preserve remote tmpdir if caller did not supply one
  issue #613: must await 'exit' and 'disconnect' in wait=False test
  Import LGTM config to disable some stuff
  Fix up another handful of LGTM errors.
  tests: work around AnsibleModule.run_command() race.
  docs: mention another __main__ safeguard
  docs: tweaks
  formatting error
  docs: make Sphinx install soft fail on Python 2.
  issue #598: allow disabling preempt in terraform
  issue #598: update Changelog.
  issue #605: update Changelog.
  issue #605: ansible: share a sem_t instead of a pthread_mutex_t
  issue #613: add tests for all the weird shutdown methods
  Add mitogen.core.now() and use it everywhere; closes #614.
  docs: move decorator docs into core.py and use autodecorator
  preamble_size: make it work on Python 3.
  docs: upgrade Sphinx to 2.1.2, require Python 3 to build docs.
  docs: fix Sphinx warnings, add LogHandler, more docstrings
  docs: tidy up some Changelog text
  issue #615: fix up FileService tests for new logic
  issue #615: another Py3x fix.
  issue #615: Py3x fix.
  issue #615: update Changelog.
  issue #615: use FileService for target->controll file transfers
  issue #482: another Py3 fix
  ci: try removing exclude: to make Azure jobs work again
  compat: fix Py2.4 SyntaxError
  issue #482: remove 'ssh' from checked processes
  ci: Py3 fix
  issue #279: add one more test for max_message_size
  issue #482: ci: add stray process checks to all jobs
  tests: fix format string error
  core: MitogenProtocol.is_privileged was not set in children
  issue #482: tests: fail DockerMixin tests if stray processes exist
  docs: update Changelog.
  issue #586: update Changelog.
  docs: update Changelog.
  [security] core: undirectional routing wasn't respected in some cases
  docs: tidy up Select.all()
  issue #612: update Changelog.
  master: fix TypeError
  pkgutil: fix Python3 compatibility
  parent: use protocol for getting remote_id
  docs: merge signals.rst into internals.rst
  os_fork: do not attempt to cork the active thread.
  parent: fix get_log_level() for split out loggers.
  issue #547: fix service_test failures.
  issue #547: update Changelog.
  issue #547: core/service: race/deadlock-free service pool init
  docs: update Changelog.
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants
You can’t perform that action at this time.