tarantool/node-tarantool-driver

Перехватывать больше ошибок

monolithed opened this issue · 6 comments

Еще не дебажил, но в catch практически ничего не приходит, например:

ER_INVALID_MSGPACK: Invalid MsgPack - packet body
Illegal parameters, name should be a string
Tuple field count 3 is less than required by a defined index (expected 4)

Эти ошибки есть в логах, но нет в catch

В catch от запроса?
Ну там в связи с асинхронностью протокола не понятно куда прокидывать ошибку типа пришел к тебе ответ, а ты не смог его распарсить и к какому он запросу непонятно.

Как пример,

local name, host = 1, 2

space:create_index('primary', {
    parts = {
        host, 'str'
    }
})

space:create_index('secondary', {
    type = 'tree',
    unique = false,
    parts = {
        name, 'str'
    }
})
tarantool.insert(space_id, ['key', 1])
    .then(result => {
        tarantool.destroy();
    })
    .catch(error => {
        console.log(error);
            // Сюда не зайдет, хотя явно должен сообщить о проблеме: 
            // Illegal parameters, name should be a string
            // Эту ошибку тарантул должен прокидывать, раз в логах она есть                 
    })
;

Попытка вставки элемента с другим типом.

Понял.

Tuple field count 3 is less than required by a defined index (expected 4)

У меня такое выводится, а вот другой тип сейчас проверю.

Хм. про тип я немного ступил. У меня в действительности код выглядит примерно так:

tarantool.connect()
    .then(status => {
        return tarantool.insert(space_id, [...]).then(status => {
            return tarantool.select(space_id, 1, 0xffffffff, 0, 'eq', ['key']);
        }, reject);
    })
    .then(result => {
        tarantool.destroy();
    })
    .catch(error => {
        console.log(error);
    })
;

Я сам не делал реджект из tarantool.insert. Похоже :)

А как версия tarantool и nodejs?
У меня выводятся такие ошибки на node 0.12.2 и tarantool 1.6.5. Добавил тест попробуй у себя запустить.

Tarantool 1.6.5-249-g06d4d66
Node v0.12.7