Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / akka да. снова. / 25 сообщений из 59, страница 1 из 3
25.04.2020, 10:47
    #39951283
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
угораздило меня в проект попасть где все на акке.
собссно дебажить ее это то еще удовольствие. ну ладно.

есть очень трудновоспроизводимый баг. уже весь код перелопатил. по цепочке морда ходит на репозиторий 2 сообщения туда 2 сообщения обратно (итого 4 да), и штук 5 мест где что то может пойти не так и никто об этом не узнает. (за такой код руки ломать надо, 100500 мутаторов 100500 сайдэффектов, всё на войдах). я все варианты отбросил и остановился на таком:
где то в этой конченной цепочке из четырех теллов и четырех слушателей мессадж теряется. может ли такое быть? насколько вероятно? как отдебажить где искать? как такое вообще явно воспроизвести? (кроме как закомментить телл).
...
Рейтинг: 0 / 0
25.04.2020, 12:24
    #39951298
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Метод mayton-а

Код: java
1.
2.
3.
LOGGER.trace("::> fucken checkpoint #1 received message {}", msg);
...
LOGGER.trace("::> fucken checkpoint #2 received message {}", msg);


Тупняк конешно но это последний вариант. Потом грепнешь лог(и) и смотришь.

Вот в коде из 1000 методов за 10 итераций изменения кода и отладки
ты выйдешь на 1 строку которая виновата.
...
Рейтинг: 0 / 0
25.04.2020, 12:55
    #39951308
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Прочеекай dead letter queue
...
Рейтинг: 0 / 0
25.04.2020, 13:15
    #39951316
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
У негож не SQS а Akka
...
Рейтинг: 0 / 0
25.04.2020, 13:24
    #39951319
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Да но у меня проблема еще в том что оно работает. Я не могу воссоздать момент чтоб сообщение потерялось. Как то можно это сделать? Ну.. При каких обстоятельствах акка начинает терять месседжи?
...
Рейтинг: 0 / 0
25.04.2020, 13:46
    #39951329
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Сорян чел. Я не специалист в Акке. Но вот тут есть теория по поводу надёжности сообщений.

https://doc.akka.io/docs/akka/current/general/message-delivery-reliability.html
...
Рейтинг: 0 / 0
25.04.2020, 18:51
    #39951410
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
mayton
Сорян чел. Я не специалист в Акке. Но вот тут есть теория по поводу надёжности сообщений.

https://doc.akka.io/docs/akka/current/general/message-delivery-reliability.html


документDiscussion: What does “at-most-once” mean?
When it comes to describing the semantics of a delivery mechanism, there are three basic categories:

at-most-once delivery means that for each message handed to the mechanism, that message is delivered once or not at all; in more casual terms it means that messages may be lost.

at-least-once delivery means that for each message handed to the mechanism potentially multiple attempts are made at delivering it, such that at least one succeeds; again, in more casual terms this means that messages may be duplicated but not lost.

exactly-once delivery means that for each message handed to the mechanism exactly one delivery is made to the recipient; the message can neither be lost nor duplicated.

The first one is the cheapest—highest performance, least implementation overhead—because it can be done in a fire-and-forget fashion without keeping state at the sending end or in the transport mechanism. The second one requires retries to counter transport losses, which means keeping state at the sending end and having an acknowledgement mechanism at the receiving end. The third is most expensive—and has consequently worst performance—because in addition to the second it requires state to be kept at the receiving end in order to filter out duplicate deliveries.

Ага зачотный зоопарк - любо-дорого почитать
...
Рейтинг: 0 / 0
25.04.2020, 18:56
    #39951412
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Sergunka, я не понял сарказма. Акка в этом смысле ничем не отличается от других систем на базе JMS.
...
Рейтинг: 0 / 0
25.04.2020, 20:00
    #39951452
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Ну там скорее всего эт мост уанс заюзано. Но. Какого лешего тогда требовать чтоб оно работало?
Представьте стандартный бэк где есть контроллер сервис репозиторий. И вот короче юзер делает запрос контроллер шлет месседж сервису сервис репозиторию и обратно
. И тут типа по цепочке посередине сообщение одно из 4х теряется и всё. Запрос юзера остался без ответа. Это прекрасно когда в синхронщине пытаются при винтить асинхронщину.

И снова вопрос вдруг кто знает как сделать так чтоб акка потеряла месседжи?
...
Рейтинг: 0 / 0
25.04.2020, 20:15
    #39951457
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Тут может смысл в другом. Актор его принял. Но в процессе обработки упал.
Тоесть надо искать необработанное исключение в прикладном коде.
...
Рейтинг: 0 / 0
25.04.2020, 20:39
    #39951468
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
mayton
Тут может смысл в другом. Актор его принял. Но в процессе обработки упал.
Тоесть надо искать необработанное исключение в прикладном коде.

это когда хотя бы аск. но когда телл? да еще и стейтлесс? он не знает результат своего запроса.
...
Рейтинг: 0 / 0
25.04.2020, 20:45
    #39951473
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
... ну или вкарячивать ретрай паттерн и долбить актор пока что то не прилетит ))
...
Рейтинг: 0 / 0
26.04.2020, 01:10
    #39951541
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
mayton
Тут может смысл в другом. Актор его принял. Но в процессе обработки упал.
Тоесть надо искать необработанное исключение в прикладном коде.

мне очень тяжело срепродьюсить этот кейс. оно иногда не работает. так вот это вот иногда я смотрел в логи и ничего не увидал. ща проставил везде логирование где только можно. и... эта гнида работает и не падает.
...
Рейтинг: 0 / 0
26.04.2020, 02:17
    #39951561
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
mayton
Sergunka, я не понял сарказма. Акка в этом смысле ничем не отличается от других систем на базе JMS.


На моей памяти потерять сообщение может только еще Кафка и то скорее всего там выскочит эксепшин, что сообщение не прошло от продьюсера после третьей попытке или что-то навроде того. Но там хотя бы осознанный выбор
acks = 0 - the producer won't wait for the confirmation from the leader replica.

P.S. С Аккой не работал всех прелестей не знаю и скорее всего не пойму - прошу строго не судить. Но то, что прочитал заценил.
...
Рейтинг: 0 / 0
26.04.2020, 10:17
    #39951588
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
andreykaT
mayton
Тут может смысл в другом. Актор его принял. Но в процессе обработки упал.
Тоесть надо искать необработанное исключение в прикладном коде.

мне очень тяжело срепродьюсить этот кейс. оно иногда не работает. так вот это вот иногда я смотрел в логи и ничего не увидал. ща проставил везде логирование где только можно. и... эта гнида работает и не падает.

Будем наблюдать.
...
Рейтинг: 0 / 0
26.04.2020, 11:59
    #39951606
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
andreykaT
... ну или вкарячивать ретрай паттерн и долбить актор пока что то не прилетит ))

Убежден что этот ретрай-паттерн должен быть частью Akka. Тоесть не должно быть с нашей
стороны дополнительно пихать какую-то логику. По идее конфигурации "guardian" должно быть достаточно
чтоб закрыть эти все вопросы.
...
Рейтинг: 0 / 0
26.04.2020, 12:14
    #39951611
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
mayton
andreykaT
... ну или вкарячивать ретрай паттерн и долбить актор пока что то не прилетит ))

Убежден что этот ретрай-паттерн должен быть частью Akka. Тоесть не должно быть с нашей
стороны дополнительно пихать какую-то логику. По идее конфигурации "guardian" должно быть достаточно
чтоб закрыть эти все вопросы.

дак может и не должен. просто акка видимо не для того задумывалась для чего ее вкарячили туда. ее использовали как разрыв зависимостей (а-ля спринг), а получилась такая вот фигня. как в спринге вызываешь метод бина а он иногда что то отвечает иногда нет. и в доке спринга написано что бины спринга не гарантируют исполнения кода и возврата сзначения

ну в общем лирика.

А что за такой конфигурация гуардиан?
...
Рейтинг: 0 / 0
26.04.2020, 13:04
    #39951629
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Ну я вот по этой картинке. Над прикладными акторами есть смотрящий.
И наверное есть под ним како-то тоже прикладной смотрящий. И у его
(в соотвествии с акторными принципами) должна быть прописана
стратегия что делать если актор упал.

...
Рейтинг: 0 / 0
26.04.2020, 17:05
    #39951732
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
а может такое быть что мессадж просто пропал и всё тут.?
...
Рейтинг: 0 / 0
26.04.2020, 17:22
    #39951737
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
andreykaT
а может такое быть что мессадж просто пропал и всё тут.?

Я - ХЗ. Яж говорю с позиции теории. Из того что смотрел в лекциях Яндекса по Акке.
...
Рейтинг: 0 / 0
26.04.2020, 18:06
    #39951754
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
andreykaT
а может такое быть что мессадж просто пропал и всё тут.?


В теории судя по прерыванию в Кафке это может произойти по таймауту когда продьюсер пытается послать сообщение т.е. когда нагрузка на порт такая, что сообщение попала в дед пул другими словами так как у сообщений нет приоритета кто первый стоит в пуле то сообщение три раза ушло в тайм аут так как более новые сообщения в силу рандомизации прошли и не дали "старому" сообщению доступа. Но это еще не все у вас должно быть асинхронный доступ и вы не проверяете ексепшины.

Так же понятно может быть эксепшин на уровне консьюмера если при обработке сообщения срабатывает ран тайм эксепшин (скажем по какой-то причине делите на ноль) то с точки зрения уровня приложения сообщени так же пропадет.
...
Рейтинг: 0 / 0
26.04.2020, 23:12
    #39951803
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
эксепшенов точно нет. но там еще и код многопоточный типа

class Clazz {
private Optional(X) x = Optional.Empty;
public void whateverConstruct () {
x = new Cocococ(...)
}
public getX(){
return x;
}
}

и вот короче один поток делает whateverConstruct() а второй делает getX()

и в методе второго такая дичь:
public void whateverDo() {
n.getX().map(x-> akkaTell(x));
}

хэй-хэй, мазафака. чтоб ты сдох кто это написал.

плак-плак моде офф.

т.е. акка может и не причем.
...
Рейтинг: 0 / 0
27.04.2020, 02:00
    #39951815
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
andreykaT,

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

Вообще как Вы пытаетесь определить, что сообщение прошло или потерялось?
...
Рейтинг: 0 / 0
27.04.2020, 09:51
    #39951843
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
логирую факт отправки в продюссере и кетч в консумере. в общем логично да. пока все работает. дефект не воспроизводится.
...
Рейтинг: 0 / 0
27.04.2020, 10:17
    #39951854
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
akka да. снова.
Баг Шредингера...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / akka да. снова. / 25 сообщений из 59, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]