Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Docker: stored doesn't seem to accept connection with IPv4 #2

Open
louneskmt opened this issue Jul 17, 2022 · 3 comments
Open

Docker: stored doesn't seem to accept connection with IPv4 #2

louneskmt opened this issue Jul 17, 2022 · 3 comments

Comments

@louneskmt
Copy link
Contributor

louneskmt commented Jul 17, 2022

I've been doing some tests with my Docker stack, and I've noticed that other daemons (rgbd and stormd) can't connect to stored RPC API using IPv4 (Docker hostnames). Full compose file.

  rgb-node:
    image: louneskmt/rgb-node:v0.8.0-rc.1
    init: true
    command:
      - -vvv
      - --chain=testnet
      - --storm=storm-node:64964
      - --store=storm-stored:60960
      - --data-dir=/var/lib/rgbd
    volumes:
      - ./data/rgb-node:/var/lib/rgbd
    expose:
      - 63963 # RGB RPC

  storm-stored:
    image: louneskmt/storm-stored:v0.8.0
    init: true
    command:
      - -vvv
      - --data-dir=/var/lib/stored
      - --rpc=0.0.0.0:90960
    volumes:
      - ./data/storm-stored:/var/lib/stored
    expose:
      - 60960

stored starts normally and opens the RPC API socket to 0.0.0.0:60960:

instance1-storm-stored-1  | stored: storage microservice
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG stored] CTL RPC socket 0.0.0.0:60960
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG stored] Starting runtime ...
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG stored::service] Opening RPC API socket 0.0.0.0:60960
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG stored::service] Opening database at /var/lib/stored/sled.db
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::iterator] ordering before clearing tears: {0: 0}, max_header_stable_lsn: 0
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::iterator] in clean_tail_tears, found missing item in tail: None and we'll scan segments {0: 0} above lowest lsn 0
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::iterator] filtering out segments after detected tear at (lsn, lid) 2786
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::iterator] hit max_lsn 2786 in iterator, stopping
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::snapshot] zeroing the end of the recovered segment at lsn 0 between lids 2787 and 524287
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::blob_io] gc_blobs removing any blob with an lsn above 2787
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::segment] SA starting with tip 524288 stable -1 free {}
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::iobuf] starting log at recovered active offset 2787, recovered lsn 2787
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache::iobuf] starting IoBufs with next_lsn: 2787 next_lid: 2787
instance1-storm-stored-1  | [2022-07-17T10:33:29Z DEBUG sled::pagecache] load_snapshot loading pages from 0..38
instance1-storm-stored-1  | [2022-07-17T10:33:29Z INFO  stored::service] Stored runtime started successfully

rgbd tries to initialize the runtime connecting to the store service, but never succeeds:

instance1-rgb-node-1      | rgbd: RGB stash microservice
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG rgbd] CTL socket /var/lib/rgbd/ctl
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG rgbd] RPC socket 0.0.0.0:63963
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG rgbd] STORE socket storm-stored:60960
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG rgbd] STORM socket storm-node:64964
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG rgbd] Starting runtime ...
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG rgb_node::rgbd::service] Connecting to store service at storm-stored:60960
instance1-rgb-node-1      | [2022-07-17T10:33:29Z DEBUG store_rpc::client] Initializing runtime

If I change the configuration to use a socket file, it suddenly works as expected.

  rgb-node:
    image: louneskmt/rgb-node:v0.8.0-rc.1
    init: true
    command:
      - -vvv
      - --chain=testnet
      - --storm=storm-node:64964
      - --store=/var/lib/stored/store
      - --data-dir=/var/lib/rgbd
    volumes:
      - ./data/rgb-node:/var/lib/rgbd
      - ./data/storm-stored:/var/lib/stored
    expose:
      - 63963 # RGB RPC

  storm-stored:
    image: louneskmt/storm-stored:v0.8.0
    init: true
    command:
      - -vvv
      - --data-dir=/var/lib/stored
      - --rpc=/var/lib/stored/store
    volumes:
      - ./data/storm-stored:/var/lib/stored

Can this be due to the daemons not supporting hostnames? Or is it for sure an issue with Docker (or my Docker stack)?

@dr-orlovsky
Copy link
Member

They do connect via IPv4 without docker - I use only that connection for in my dev process (not IPC). So I assume it is something related to docker networking

@louneskmt
Copy link
Contributor Author

Do you know if it supports using hostnames instead of actual IPv4 addresses?

@dr-orlovsky
Copy link
Member

No it does not - DNS are prohibited; only IPv4 and IPv6 addresses

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants