215 похожих чатов

Вопрос к авторам коннекторов, кто-нибудь ретраит неудавшиеся запросы?

9 ответов

8 просмотров

В моем есть возможность повесить обработку на файл коннекте или отработать фейл

https://github.com/tarantool/tarantool-java/blob/f32bafa8e4de65d858d8c07c7a9d73a9a7055ca3/src/main/java/org/tarantool/TarantoolClusterClient.java#L152-L160 https://github.com/tarantool/tarantool-java/blob/f32bafa8e4de65d858d8c07c7a9d73a9a7055ca3/src/main/java/org/tarantool/TarantoolException.java#L54-L71

BTW, там еще отдельно schema error хендлится. Там нужно повторить после того, как обновил схему.

Кстати, обновление схемы во время выполнения запросов,насколько частый кейс в реальных системах?

Раньше так делал net.box. До версии 1.10. Это приводило к тому, что когда по сети выполнялся package.reload, это приводило к ddl, изменению версии схемы и тихому ретраю запроса. В итоге инстанс мог релоадиться по 5-10 раз подряд. (Спасибо ещё, что прекращалось). Вообще на любую политику ретраев, даже на селекты, можно придумать пользовательский сценарий, где это стрельнёт. Поэтому неуправляемые ретраи это зло и подводные мины. Правильный подход — указывать политику с самим запросом. Причём стоит учитывать тот факт, что если от вас запрос вылетел, то он мог быть исполнен на базе, а ошибка вам могла дойти в искажённом виде.

+

ретраить должен твой модуль скорее всего

Только после обрыва коннекта и при ошибках отправки (не всех), кмк

Проверка schema id идет до выполнения запроса (по крайней мере, сейчас). Надо бы найти, что именно менялось.

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
например asm AT&T ... label: .string "hi" ... # not error lea label(%rip), %rax # error ( not compile ) mov %rip, %rax # not error mov (%rip), %rax из форумов прочитал чт...
Simple Sorcerer
6
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
10
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Есть предложения, как подобное можно упростить?
Hemul GM
12
Карта сайта