Atom provider not URL-encoding hashes

9 views
Skip to first unread message

James Wettenhall

unread,
Oct 16, 2013, 8:27:43 AM10/16/13
to tardis...@googlegroups.com
Hi,

I just noticed that our Node.js atom provider instance isn't URL encoding hashes.

For this data file name: 

IT 100xoil#2.tif

the XML source in the atom feed looks like this:


When MyTardis tries to ingest this file and stage its replica, I see the following in our /var/log/mytardis/celeryd-1.log:

[2013-10-16 21:46:02,886: ERROR/MainProcess] Task tardis_portal.verify_replica[c5f5b818-d557-453f-8c7c-14708ebe964a] raised exception: TransferError('Not Found',)
Traceback (most recent call last):
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/eggs/celery-3.0.21-py2.7.egg/celery/task/trace.py", line 233, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/eggs/celery-3.0.21-py2.7.egg/celery/task/trace.py", line 420, in __protected_call__
    return self.run(*args, **kwargs)
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/tardis/tardis_portal/tasks.py", line 86, in verify_replica
    stage_replica(replica)
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/tardis/tardis_portal/staging.py", line 154, in stage_replica
    if replica.verify(tempfile=tf.file):
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/tardis/tardis_portal/models/replica.py", line 161, in verify
    sourcefile = self.get_file(requireVerified=False)
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/tardis/tardis_portal/models/replica.py", line 91, in get_file
    return self.get_file_getter(requireVerified=requireVerified)()
  File "/opt/mytardis/releases/28d0c3e3957a97682ddc4f2736b9ce4be4a56c89/tardis/tardis_portal/transfer/http.py", line 138, in getter
    raise TransferError(e.msg)
None: Not Found

It looks like the following code in lib/atom-dataset-provider/directory-scanner.js :

// Make relative path & encode URI file.href = encodeURI( convertWindowsPaths(path.relative(directory, file.href)));

should be:

// Make relative path & encode URI file.href = encodeURIComponent( convertWindowsPaths(path.relative(directory, file.href)));

That seems to fix the problem in our atom feed.

Cheers,
James

Reply all
Reply to author
Forward
0 new messages