GRPCIOTimeout with daml deploy when running within a docker container

Thanks!

I get “daml-helper: GRPCIOTimeout” after a few seconds when running daml deploy targeting daml-on-sql running in a Docker container and nothing logged.
Is there a way to turn up logging?

Per

1 Like
$ ls -ld .daml/dist/carbon-0.0.1.dar
-rw-r--r--  1 Per.Bergman  staff  303669 Apr 29 09:27 .daml/dist/carbon-0.0.1.dar


$ daml git:(perbergman/DAML-05) ✗ daml ledger upload-dar  --access-token-file="security/certs/jwt/system.token" --timeout 1200  --max-inbound-message-size 4000000

Compiling carbon to a DAR.
Created .daml/dist/carbon-0.0.1.dar
Uploading .daml/dist/carbon-0.0.1.dar to localhost:6865
An exception was thrown during the upload-dar command
- GRPCIOTimeout
One reason for this to occur is if the size of DAR file being uploaded exceeds the gRPC maximum message size. The default value for this is 4Mb, but it may be increased when the ledger is (re)started. Please check with your ledger operator.
1 Like

The daml-on-sql process is binding to localhost by default, which, in a Docker container, means it will only accept connections coming from within the same Docker container. If you want it to accept connections from anything else, you’ll need to pass the --address argument, likely --address 0.0.0.0 in this context (i.e. accept connections from any network interface).

2 Likes

Ah! Thanks!

I have that option elsewhere but did not include it this time.

3 Likes

Hi, I am following the daml docs,

I am trying to do step 3 under “Hashes and identifiers” 9 Working with Dependencies — Daml SDK 2.0.0 documentation

and when I run:

  1. Open a second terminal and run daml ledger fetch-dar --host localhost --port 6865 --main-package-id "887056cbb313b94ab9a6caf34f7fe4fbfe19cb0c861e50d1594c665567ab7625" -o assets_ledger.dar , making sure to replace the hash with the appropriate one.

(replacing the hash) I get the GRPCIOTimeout, how do I incorporate “–address 0.0.0.0” into this command above (assuming it will resolve the Timeout) ?

You don’t need to pass --address unless you are running daml start on a different machine than the one running the daml ledger fetch-dar command. In this context, VMs and Docker containers count as separate machines from each other and the host, physical machine.

If you are indeed in a context where you have run daml start in a separate machine (why??), that’s where you need to pass the --address option. daml start is a conveninent, development-time wrapper that starts a number of components, each with their own options; the options are taken from the daml.yaml file. See the daml assistant documentation for details; I believe you would need to put the --address option under sandbox-options. I’m not very familiar with the format of the daml.yaml file and how it relates to daml start, though, so maybe someone else can chime in with more information on that front.