MaastrichtUniversity/docker-dev

Parallel transfers iput and iget error

Closed this issue · 2 comments

Hi, I'm using a docker-compose setup to run irods, partly inspired by your setup. Do you have parallel transfers functional in your setup?

I get an error message when I try to upload a large file using iput largefile. Workaround: iput -N0 largefile Firewall ports are open, tested with nc -l/nc -v.

Clientlog:

remote addresses: x.x.x.x ERROR: connectToRhostPortal: connectTo Rhost irods-catalog-provider port 20140 error, status = -347000
remote addresses: x.x.x.x ERROR: putUtil: put error for /tempZone/home/rods/largefile, status = -347000 status = -347000 USER_SOCK_CONNECT_TIMEDOUT

Serverlog:

Nov  2 07:53:44 pid:3680 remote addresses: 127.0.0.1, x.x.x.x ERROR: [rsDataObjClose:794] - [Unknown iRODS error: [update_replica_size_and_throw_on_failure:454] - failed to get size in vault [error_code=[0], path=[/tempZone/home/rods/largefile], hierarchy=[demoResc]]]

Add file /etc/irods/hosts_config.json to the irods-catalog-provider container with the following content:

{
  "schema_name": "hosts_config",
  "schema_version": "v3",
  "host_entries": [
    {
      "address_type" : "remote",
      "addresses" : [
        {"address" : "yourirodsserver.domain.example or IP public IP"},
        {"address" : "irods-catalog-provider"}
      ]
    }
  ]
}

Fields address should contain the hostname of the container and the public url or IP of the docker host.

See also this issue: irods/irods#4911

Hi Rudi,

Thank you for your message and how nice that you found inspiration from our Dockerized iRODS environment that we use for development purposes.

Nice that you could resolve the issue yourself. iRODS can indeed be very picky on FQDN and the name resolving of those.
The hosts_config.json file is a good way to solve it.

Just for your information: parallel transfers are working for us because we make sure to put a FQDN in docker-compose.yml hostname: attribute.
I guess this only works for iRODS traffic that stays inside the Docker network and not for connections from clients to the Dockerized iRODS servers. But this is fine in our development env.

Cheers,
Maarten