gridmap icon indicating copy to clipboard operation
gridmap copied to clipboard

Error: too many values to unpack (expected 2)

Open RuABraun opened this issue 5 years ago • 1 comments

Python 3.7.6, running example:

sending function jobs to cluster

Traceback (most recent call last):
  File "testb.py", line 113, in <module>
    main()
  File "testb.py", line 105, in main
    job_outputs = process_jobs(functionJobs, max_processes=4)
  File "/idiap/temp/rbraun/programs/anaconda3/lib/python3.7/site-packages/gridmap/job.py", line 887, in process_jobs
    with JobMonitor(temp_dir=temp_dir) as monitor:
  File "/idiap/temp/rbraun/programs/anaconda3/lib/python3.7/site-packages/gridmap/job.py", line 299, in __init__
    for _, _, _, _, (ip, _) in getaddrinfo(getfqdn(), 0):
ValueError: too many values to unpack (expected 2)

I fixed it by changing the code to

for _, _, _, _, tpl in getaddrinfo(getfqdn(), 0):
    if len(tpl) > 2:
        continue
    ip = tpl[0]

RuABraun avatar Apr 08 '20 10:04 RuABraun

@RuABraun Thanks for filing this issue. I see you are indeed correct as the get_addrinfo function will return 5-tuples with the last element being either a 2-tuple or a 4-tuple, the latter of which we are not handling correctly. However, I think we should be filtering on AF_INET (which corresponds to the 2-tuple), e.g.

# from socket import AF_INET
for _, _, _, _, (ip, _) in getaddrinfo(getfqdn(), 0, AF_INET):
    ...

This way, the unpacking that assigns to the ip variable will be left intact. It is more readable, in my opinion.

@RuABraun Do you think this makes sense? And, if you are able to try with this instead, it would be much appreciated. I'd like to know that it works for you.

mulhod avatar Apr 15 '20 15:04 mulhod