Size: a a a

2020 December 04

LV

Leonid V in Tarantool
Server

─[leonid@vasya-L460]─[~/work/mail/tarantool/tmp2]
└──╼ tarantool
Tarantool 2.5.2-11-g6bd5e23
type 'help' for interactive help
tarantool> box.cfg{listen="localhost:1918"}                                                                                                    
2020-12-04 14:30:15.666 [21046] main/103/interactive C> Tarantool 2.5.2-11-g6bd5e23
2020-12-04 14:30:15.666 [21046] main/103/interactive C> log level 5
2020-12-04 14:30:15.667 [21046] main/103/interactive I> mapping 268435456 bytes for memtx tuple arena...
2020-12-04 14:30:15.667 [21046] main/103/interactive I> mapping 134217728 bytes for vinyl tuple arena...
2020-12-04 14:30:15.672 [21046] main/103/interactive I> instance uuid 92ebfaef-4b56-40ce-95f0-3dd82380c1ba
2020-12-04 14:30:15.674 [21046] iproto/101/main I> binary: bound to 127.0.0.1:1918
2020-12-04 14:30:15.674 [21046] main/103/interactive I> initializing an empty data directory
2020-12-04 14:30:15.735 [21046] main/103/interactive I> assigned id 1 to replica 92ebfaef-4b56-40ce-95f0-3dd82380c1ba
2020-12-04 14:30:15.737 [21046] main/103/interactive I> cluster uuid af2956f6-1fff-4bc6-b35c-17c864ba31d2
2020-12-04 14:30:15.741 [21046] snapshot/101/main I> saving snapshot `./00000000000000000000.snap.inprogress'
2020-12-04 14:30:15.801 [21046] snapshot/101/main I> done
2020-12-04 14:30:15.803 [21046] main/103/interactive I> ready to accept requests
2020-12-04 14:30:15.805 [21046] main/103/interactive I> set 'log_level' configuration option to 5
2020-12-04 14:30:15.805 [21046] main/105/checkpoint_daemon I> scheduled next checkpoint for Fri Dec  4 16:22:34 2020
2020-12-04 14:30:15.806 [21046] main/103/interactive I> set 'listen' configuration option to "localhost:1918"
2020-12-04 14:30:15.807 [21046] main/103/interactive I> set 'log_format' configuration option to "plain"
---
...

tarantool> function test_error() box.error{code = 3 , reason = "Some reason"} end                                                              
---
...

tarantool> box.schema.user.grant('guest', 'super')                                                                                              
---
...

tarantool>


Client

tarantool> ┌─[leonid@vasya-L460]─[~/work/mail/tarantool]
└──╼ tarantool
Tarantool 2.5.2-11-g6bd5e23
type 'help' for interactive help
tarantool> nb = require('net.box')
---
...

tarantool> con = nb.connect("localhost:1918")                                                                                                  
---
...

tarantool> res, err = pcall(con.call, con, 'test_error')                                                                                        
---
...

tarantool> err:unpack()
---
- code: 3
 base_type: ClientError
 type: ClientError
 message: Some reason
 trace:
 - file: '[string "function test_error() box.error{code = 3 , re..."]'
   line: 1
...

tarantool>
источник

LV

Leonid V in Tarantool
минимальный пример, как работает. Вы такое ожидаете или я что-то не так понимаю?
источник

AS

Arthur Salimkhanov in Tarantool
да, ожидаю такое, но вызываю через vshard.router.call мб в нем проблема?
источник

VS

Vladislav Shpilevoy in Tarantool
Если есть репродьюсер на чистом вшарда без картриджей и прочего, то прошу создать баг в репозитории вшарда, и приложить репродьюсер.
источник

LV

Leonid V in Tarantool
-- Convert error object from pcall to lua, box or vshard error
-- object.
--
local function make_error(e)
   if type(e) == 'cdata' and ffi.istype('struct error', e) then
       -- box.error, return unpacked
       return box_error(e)
   elseif type(e) == 'string' then
       local ok, err = pcall(box.error, box.error.PROC_LUA, e)
       return box_error(err)
   elseif type(e) == 'table' then
       return setmetatable(e, {__tostring = json.encode})
   else
       return e
   end
end
источник

LV

Leonid V in Tarantool
а вот это не оно?
источник

AS

Arthur Salimkhanov in Tarantool
похоже на то
источник

LV

Leonid V in Tarantool
источник

LV

Leonid V in Tarantool
Думаю, путь предложенный Владом - наилучший вариант, я в vshard особо не умею
источник

PL

Pavel Lapaev in Tarantool
https://otus.ru/lessons/tarantool/

Записывайтесь на открытый урок 7 декабря и последующий интенсив по Tarantool!

Проводим силами бессменных @inthrax  и @MichaelFilonenko

С 21 декабря за пять вечеров пройдем темы:
- архитектура ядра, репликация, шардинг
- как сделать приложение и не задавать потом в этот чат вопросы
- как мейнтейнить это приложение в проде и что делать в случае ЧП
- как Cartridge делает жизнь в три раза легче

Если руки все никак не дойдут почитать про Tarantool самостоятельно, если все хочется попробовать его в пет проекте, если не получается закупить корпоративное обучение - самое время послушать открытый урок, а потом поучаствовать в интенсиве.
источник

SK

Sergey Kuzmin in Tarantool
Здраствуйте. У меня какая-то модная ошибка
Can't modify data because this instance is in read-only mode

connection = tarantool.connectmesh(addrs=addrs, user=user, password=passw)

потом пытаюсь создать спейс

connection.eval(f"box.schema.space.create('{space_name}')")

в этом месте ругается так

tarantool.error.DatabaseError(7, "Can't modify data because this instance is in read-only mode")


в качестве адресов три машины, одна из которых мастер
источник

MA

Mons Anderson in Tarantool
Sergey Kuzmin
Здраствуйте. У меня какая-то модная ошибка
Can't modify data because this instance is in read-only mode

connection = tarantool.connectmesh(addrs=addrs, user=user, password=passw)

потом пытаюсь создать спейс

connection.eval(f"box.schema.space.create('{space_name}')")

в этом месте ругается так

tarantool.error.DatabaseError(7, "Can't modify data because this instance is in read-only mode")


в качестве адресов три машины, одна из которых мастер
значит:
- либо вы шлёте запрос на реплику
- либо ваш "мастер" не readwrite
источник

SK

Sergey Kuzmin in Tarantool
Mons Anderson
значит:
- либо вы шлёте запрос на реплику
- либо ваш "мастер" не readwrite
благодарю, первый вариант странный, потому что я ж соединяюсь через волшебный коннектор, который должен угадывать, кто мастер,
а второй мы проверим
источник

MA

Mons Anderson in Tarantool
Sergey Kuzmin
благодарю, первый вариант странный, потому что я ж соединяюсь через волшебный коннектор, который должен угадывать, кто мастер,
а второй мы проверим
я не узнаю, что это за коннектор, но на инстансах посмотрите box.info.status
источник

SK

Sergey Kuzmin in Tarantool
Mons Anderson
я не узнаю, что это за коннектор, но на инстансах посмотрите box.info.status
источник

AK

Alexey Kuzin in Tarantool
Сначала показалось, что это HTF
источник

SK

Sergey Kuzmin in Tarantool
Alexey Kuzin
Сначала показалось, что это HTF
гугл выдал Happy Tree Friends на эту аббревиатуру)
источник

AK

Alexey Kuzin in Tarantool
Да +_+
источник

SK

Sergey Kuzmin in Tarantool
Mons Anderson
значит:
- либо вы шлёте запрос на реплику
- либо ваш "мастер" не readwrite
Ого!
оказалось, что первый вариант, убрал остальные сервера из конфига и всё сработало
источник

SK

Sergey Kuzmin in Tarantool
Значит питоний драйвер не драйвер!
или tarantool.connectmesh неправильный метод, непонятно
источник