kyungeonchoi/ServiceXDataBinder

ServiceX error (I/O operation on closed file) from Uproot transformer

Closed this issue · 1 comments

The following error occurs for some DIDs
WARNING - Transform 3ff9ed3c-36fc-4e72-b72c-4a55365b60e5 had 3 errors:
WARNING -   Error transforming file: root://fax.mwt2.org:1094//pnfs/uchicago.edu/atlaslocalgroupdisk/rucio/user/mgeyik/20/52/user.mgeyik.26575883._000002.out.root
WARNING -   -> error: Failed to transform input file root://fax.mwt2.org:1094//pnfs/uchicago.edu/atlaslocalgroupdisk/rucio/user/mgeyik/20/52/user.mgeyik.26575883._000002.out.root: I/O operation on closed file
WARNING -   Error transforming file: root://fax.mwt2.org:1094//pnfs/uchicago.edu/atlaslocalgroupdisk/rucio/user/mgeyik/e4/99/user.mgeyik.26575883._000001.out.root
WARNING -   -> error: Failed to transform input file root://fax.mwt2.org:1094//pnfs/uchicago.edu/atlaslocalgroupdisk/rucio/user/mgeyik/20/52/user.mgeyik.26575883._000002.out.root: I/O operation on closed file
WARNING -   Error transforming file: root://fax.mwt2.org:1094//pnfs/uchicago.edu/atlaslocalgroupdisk/rucio/user/mgeyik/6e/9c/user.mgeyik.26575883._000003.out.root
WARNING -   -> error: Failed to transform input file root://fax.mwt2.org:1094//pnfs/uchicago.edu/atlaslocalgroupdisk/rucio/user/mgeyik/20/52/user.mgeyik.26575883._000002.out.root: I/O operation on closed file
ERROR - Exception occured while gettting data via ServiceX
Traceback (most recent call last):
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 654, in _get_files
    async for r in stream_local_files:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 767, in _get_files_from_servicex
    async for info in stream_downloaded:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 736, in _download_a_file
    async for f in stream:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 814, in _get_minio_bucket_files_from_servicex
    async for info in stream_new_object:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/minio_adaptor.py", line 181, in find_new_bucket_files
    async for _ in update:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/utils.py", line 209, in stream_unique_updates_only
    async for p in stream:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex_adaptor.py", line 239, in trap_servicex_failures
    raise ServiceXFailedFileTransform(f'ServiceX failed to transform {did_fail} '
servicex.utils.ServiceXFailedFileTransform: (ServiceXFailedFileTransform(...), 'ServiceX failed to transform 1 files - data incomplete (remaining: 0, processed: 2).')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex_databinder/servicex_databinder.py", line 26, in deliver
    output_parquet_list = self._sx.get_servicex_data()
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex_databinder/frontend.py", line 67, in get_servicex_data
    data = newloop.run_until_complete(_get_my_data())
  File "/home/kyungeon/.local/lib/python3.6/site-packages/nest_asyncio.py", line 70, in run_until_complete
    return f.result()
  File "/usr/lib64/python3.6/asyncio/tasks.py", line 180, in _step
    result = coro.send(None)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex_databinder/frontend.py", line 64, in _get_my_data
    return await asyncio.gather(*tasks)
  File "/usr/lib64/python3.6/asyncio/tasks.py", line 250, in _wakeup
    future.result()
  File "/usr/lib64/python3.6/asyncio/tasks.py", line 180, in _step
    result = coro.send(None)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex_databinder/frontend.py", line 47, in bound_get_data
    return await sx_ds.get_data_parquet_async(query)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex_utils.py", line 49, in cached_version_of_fn
    result = await fn(*args, **kwargs)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 302, in get_data_parquet_async
    return await self._file_return(selection_query, 'parquet', title)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 428, in _file_return
    return await self._data_return(selection_query, convert_to_file, title, data_format)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/backoff/_async.py", line 133, in retry
    ret = await target(*args, **kwargs)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/backoff/_async.py", line 133, in retry
    ret = await target(*args, **kwargs)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 528, in _data_return
    async for f in self._stream_return(selection_query, title, converter, data_format)
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 526, in <dictcomp>
    all_data = {
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 565, in _stream_return
    async for r in as_data:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 561, in <genexpr>
    as_data = (StreamInfoData(f.file, await asyncio.ensure_future(converter(f.path)))
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 598, in _stream_local_files
    async for name, a_path in as_files:
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 595, in <genexpr>
    (f async for f in
  File "/home/kyungeon/.local/lib/python3.6/site-packages/servicex/servicex.py", line 678, in _get_files
    raise ServiceXException(f'Failed to transform all files in {request_id}') from e
servicex.utils.ServiceXException: (ServiceXException(...), 'Failed to transform all files in 3ff9ed3c-36fc-4e72-b72c-4a55365b60e5')
  • Investigated messages in Kibana and localized the error
  • New Uproot transformer (PR) which includes the newer version of uproot crashes.
  • Tested with the older version of Uproot transformer image and just works fine.

Issue is followed by ServiceX developers (ssl-hep/ServiceX_Uproot_Transformer#22) and fix is published to Docker hub on Oct 27.
ServiceX Binder 0.1.8 includes the fixed uproot transformer image.