crud icon indicating copy to clipboard operation
crud copied to clipboard

Serialized errors from vshard

Open ArtDu opened this issue 3 years ago • 4 comments

It's hard to parse vshard's internal errors.

0.0.0.0:3301> crud.get("vets", 11111111-1111-1111-1111-111111111111)
---
- null
- line: 75
  class_name: Get
  err: "Failed to call get on storage-side: Call: Failed for 6558ab95-7c60-48fe-8d46-75d428033d54:
    Function returned an error: {\"code\":77,\"base_type\":\"ClientError\",\"type\":\"ClientError\",\"message\":\"Connection
    refused\",\"trace\":[{\"file\":\"builtin\\/box\\/net_box.lua\",\"line\":541}]}\nstack
    traceback:\n\t...inic/cluster/.rocks/share/tarantool/crud/common/call.lua:138:
    in function 'single'\n\t...ng-petclinic/cluster/.rocks/share/tarantool/crud/get.lua:68:
    in function 'func'\n\t...ic/cluster/.rocks/share/tarantool/crud/common/schema.lua:89:
    in function <...ic/cluster/.rocks/share/tarantool/crud/common/schema.lua:84>\n\t[C]:
    in function 'pcall'\n\tbuiltin/box/console.lua:402: in function <builtin/box/console.lua:378>\n\t[C]:
    at 0x0104178834"
  file: '...ng-petclinic/cluster/.rocks/share/tarantool/crud/get.lua'
  str: "Get: Failed to call get on storage-side: Call: Failed for 6558ab95-7c60-48fe-8d46-75d428033d54:
    Function returned an error: {\"code\":77,\"base_type\":\"ClientError\",\"type\":\"ClientError\",\"message\":\"Connection
    refused\",\"trace\":[{\"file\":\"builtin\\/box\\/net_box.lua\",\"line\":541}]}\nstack
    traceback:\n\t...inic/cluster/.rocks/share/tarantool/crud/common/call.lua:138:
    in function 'single'\n\t...ng-petclinic/cluster/.rocks/share/tarantool/crud/get.lua:68:
    in function 'func'\n\t...ic/cluster/.rocks/share/tarantool/crud/common/schema.lua:89:
    in function <...ic/cluster/.rocks/share/tarantool/crud/common/schema.lua:84>\n\t[C]:
    in function 'pcall'\n\tbuiltin/box/console.lua:402: in function <builtin/box/console.lua:378>\n\t[C]:
    at 0x0104178834"
...

It would be possible to add some cause field, where the internal error would lie like a table, but no string Something like that:

0.0.0.0:3301> crud.get("vets", 11111111-1111-1111-1111-111111111111)
---
- null
- line: 75
  class_name: Get
  err: "Failed to call get on storage-side: Call: Failed for 6558ab95-7c60-48fe-8d46-75d428033d54"
  cause: - code: 78
           base_type: ClientError
           type: ClientError
           message: Connection refused
           trace:
            ....
  file: '...ng-petclinic/cluster/.rocks/share/tarantool/crud/get.lua'
...

ArtDu avatar Jul 14 '21 16:07 ArtDu

Affects https://github.com/tarantool/cartridge-java/issues/89

akudiyar avatar Jul 14 '21 17:07 akudiyar

Could we transfer this issue to "tarantool/errors"?

I like more "general" solutions. So it could be useful not only for crud.

olegrok avatar Jul 20 '21 19:07 olegrok

Yeah, you are right, it is better to implement this in "tarantool/errors", after that in crud to fix the passing error through the new functionality. I will create a ticket in "tarantool/errors".

ArtDu avatar Jul 21 '21 08:07 ArtDu

So it seems that migrating to box.error should solve the issue, if it will work fine with vshard, I think it's better to wait until 1.10.x end of support then.

DifferentialOrange avatar Jun 14 '23 07:06 DifferentialOrange