alien_cp: OSError: [Errno 36] File name too long
Using alien_cp, I observe the following error:
INFO:root:Request connection to : alice-jcentral.cern.ch:8097/websocket/json
INFO:root:GOT SOCKET TO: 137.138.99.136
INFO:root:CONNECTED: 137.138.99.136:8097
ERROR:root:Traceback (most recent call last):
File "/data/Work/software/alicesw/sw/archArch_x86-64/xjalienfs/1.0.5-1/lib/python3.6/site-packages/xjalienfs/alien.py", line 2173, in main
JAlien(cmd_string)
File "/data/Work/software/alicesw/sw/archArch_x86-64/xjalienfs/1.0.5-1/lib/python3.6/site-packages/xjalienfs/alien.py", line 2066, in JAlien
for token in cmds_tokens: ProcessInput(wb, token, None, True)
File "/data/Work/software/alicesw/sw/archArch_x86-64/xjalienfs/1.0.5-1/lib/python3.6/site-packages/xjalienfs/alien.py", line 1935, in ProcessInput
exitcode = ProcessXrootdCp(wb, args)
File "/data/Work/software/alicesw/sw/archArch_x86-64/xjalienfs/1.0.5-1/lib/python3.6/site-packages/xjalienfs/alien.py", line 930, in ProcessXrootdCp
create_metafile(meta_fn, lfn, dst, size_4meta, md5_4meta, url_list_4meta)
File "/data/Work/software/alicesw/sw/archArch_x86-64/xjalienfs/1.0.5-1/lib/python3.6/site-packages/xjalienfs/alien.py", line 519, in create_metafile
with open(meta_filename, 'w') as f:
OSError: [Errno 36] File name too long: '/tmp/%%alice%%cern.ch%%user%%t%%tpcdrop%%calib%%Splines%%LHC18q.pass1_4th_check%%Iteration1%%outputCheckShapeEtaTree_2020_02_28__14_39__mult0_499_CorrectedWithMap_outputCheckShapeEtaTree_2020_02_28__14_38__mult0_499_NewSplines___2020_02_28__14_37___2020_02_28__14_39.roo.meta4'
I temporarily solved this by:
--- /tmp/alien.py 2020-03-02 11:47:06.500377981 +0100
+++ /tmp/alien.py.fix 2020-03-02 11:47:17.153748765 +0100
@@ -925,7 +925,7 @@
url_list_dst.append({"url": dst}) # the local file destination
src = src_filelist[item_idx]
- meta_fn = tmpdir + "/" + src.replace("/", "%%") + ".meta4"
+ meta_fn = tmpdir + "/" + str(uuid.uuid4()) + ".meta4"
create_metafile(meta_fn, lfn, dst, size_4meta, md5_4meta, url_list_4meta)
if is_zip:
download_link = meta_fn + '?xrdcl.unzip=' + file_in_zip
But probably this is not the best solution.