If you create spaces only on storages inside a storage role like this
or any other way, and you want to get data using router. You will receive an error message like "space not found".
This happens because router does not have information about this space.
If you work directly with a storage you won't get this kind of error if spaces was created properly.
But if you want to use CRUD to retrieve data from the router, there are some solutions.
We recommend to set the scheme using migrations, they will be applied not only to storages, but also to routers.
This way the router will be aware of the current scheme and such errors will not occur.
Migrations will create spaces on both storages and routers.
Tarantool CE supports migrations only since 2.2.x.
Tarantool Enterprise Edition supports migrations since 1.10.x and 2.2.x.
More information about migrations tarantool/migrations.
If you want to create spaces only in storages, there is another solution. Set up proxying ddl.get_schema from storage to routers. You should add this function to router role:
cartridge-java/src/test/resources/cartridge/app/roles/api_router.lua
Lines 10 to 14 in ba6e8b2
local
from line 10. Effect will be the same.
Now then cartridge-java tries to get schema from router