snet-cli icon indicating copy to clipboard operation
snet-cli copied to clipboard

"snet client call" hangs without returning error when service API is not published to IPFS

Open vsbogd opened this issue 5 years ago • 0 comments

Steps to reproduce:

  • prepare service metadata without calling snet metadata-init, for example print metadata of already published service into service_metadata.json and change "model_ipfs_hash" in it.
  • publish new service
  • call service

Expected result: snet returns error Actual result: snet hangs

Commands to reproduce
cat <<EOF >service_metadata.json
{
    "version": 1,
    "display_name": "Example service",
    "encoding": "proto",
    "service_type": "grpc",
    "model_ipfs_hash": "QmfCqHr6RCrUQ81bKFAGykxYCjSLGmH3LFU3dPhnzix1Kd",
    "mpe_address": "0x5C7a4290F6F8FF64c69eEffDFAFc8644A4Ec3a4E",
    "groups": [
        {
            "group_name": "default_group",
            "endpoints": [
                "http://localhost:7000"
            ],
            "pricing": [
                {
                    "price_model": "fixed_price",
                    "price_in_cogs": 1,
                    "default": true
                }
            ],
            "group_id": "aft+fPjiApTaknPrcjTuV/UZvmjGSRJ5eCNHi5/tKp4="
        }
    ],
    "assets": {}
}
EOF

snet service publish snet example-service

snet client call snet example-service default_group add '{ "a": 10, "b": 20 }'
stack trace
# Initilize service with org_id=snet and service_id=example-service
^CTraceback (most recent call last):
  File "/usr/local/bin/snet", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/dist-packages/snet_cli/__init__.py", line 23, in main
    getattr(args.cmd(conf, args), args.fn)()
  File "/usr/local/lib/python3.6/dist-packages/snet_cli/mpe_client_command.py", line 288, in call_server_statelessly
    response = self.call_server_statelessly_with_params(params, group_name)
  File "/usr/local/lib/python3.6/dist-packages/snet_cli/mpe_client_command.py", line 263, in call_server_statelessly_with_params
    self._init_or_update_registered_service_if_needed()
  File "/usr/local/lib/python3.6/dist-packages/snet/snet_cli/mpe_channel_command.py", line 653, in _init_or_update_registered_service_if_needed
    service_metadata, service_registration)
  File "/usr/local/lib/python3.6/dist-packages/snet/snet_cli/mpe_channel_command.py", line 613, in _init_or_update_service_if_needed
    self._get_ipfs_client(), metadata["model_ipfs_hash"], spec_dir)
  File "/usr/local/lib/python3.6/dist-packages/snet/snet_cli/utils_ipfs.py", line 108, in safe_extract_proto_from_ipfs
    spec_tar = get_from_ipfs_and_checkhash(ipfs_client, ipfs_hash)
  File "/usr/local/lib/python3.6/dist-packages/snet/snet_cli/utils_ipfs.py", line 63, in get_from_ipfs_and_checkhash
    block_data = ipfs_client.block_get(ipfs_hash_base58)
  File "/usr/local/lib/python3.6/dist-packages/ipfsapi/client.py", line 310, in block_get
    return self._client.request('/block/get', args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/ipfsapi/http.py", line 37, in wrapper
    return func(self, *args, **merged)
  File "/usr/local/lib/python3.6/dist-packages/ipfsapi/http.py", line 170, in request
    files, headers, data)
  File "/usr/local/lib/python3.6/dist-packages/ipfsapi/http.py", line 100, in _request
    files=files, headers=headers, data=data)
  File "/usr/local/lib/python3.6/dist-packages/ipfsapi/http.py", line 75, in _do_request
    return requests.request(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/requests/api.py", line 60, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/requests/sessions.py", line 533, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python3.6/dist-packages/requests/sessions.py", line 646, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/requests/adapters.py", line 449, in send
    timeout=timeout
  File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 672, in urlopen
    chunked=chunked,
  File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
    six.raise_from(e, None)
  File "<string>", line 3, in raise_from
  File "/usr/local/lib/python3.6/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
    httplib_response = conn.getresponse()
  File "/usr/lib/python3.6/http/client.py", line 1346, in getresponse
    response.begin()
  File "/usr/lib/python3.6/http/client.py", line 307, in begin
    version, status, reason = self._read_status()
  File "/usr/lib/python3.6/http/client.py", line 268, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "/usr/lib/python3.6/socket.py", line 586, in readinto
    return self._sock.recv_into(b)

vsbogd avatar Nov 07 '19 13:11 vsbogd