Sergey
19.09.2017
17:21:19
Sergey
19.09.2017
17:21:24
у тебя не бывает такого что нужно что-то сохранить, а потом в соседнем сервисе идет выборка и то что ты сохранил в ней должно быть?
да и транзакцию нужно закрывать как можно раньше
Sergey
19.09.2017
17:22:27
Google
Sergey
19.09.2017
17:22:29
ты вот наколбасил каких-то измненений, сделал после этого еще кучу вещей, а потом только пытаешься выполнить транзакцию и у тебя она падает
Sergey
19.09.2017
17:24:00
ну вот давай приведу пример:
есть регистрация аккаунта пользователя. Штука простая. После успешной регистрации мне надо слинковать пользователя и его страну, забить для пары рефералки связи, сгенерить еще пару штук разных...
ты про такие кейсы?
Dmitry
19.09.2017
17:25:03
При учете того, что пользователь без линкованной страны - вообще не валидное состояние
Sergey
19.09.2017
17:25:47
у меня это идет в таком порядке:
- регистрация пользователя
- flush
- эмитится событие UserRegistered с айдишкой сущности например
- событие может быть обработано хоть в рамках текущего запроса хоть через очередь. А потому дальше просто разные штуки выполняются так как им надо
Dmitry
19.09.2017
17:27:08
ну значит у тебя момент времени, когда в базе неслинкованный пользователь, а этого быть не должно
Sergey
19.09.2017
17:27:33
если "не удалось слинковать" по каким-то причинам - мне важнее что бы регистрация прошла
Dmitry
19.09.2017
17:28:10
не, когда это норм, тут ваще пофиг где flush :) речь именно о свзязанных изменениях... ну банально $user1->decrease(); $user2->increase()
Sergey
19.09.2017
17:28:48
если тебя беспокоит атомарность (что бы небыло double spent) то тут вопрос локов
Dmitry
19.09.2017
17:29:46
ну так эту новую транзакцию ты где стартуешь
Google
Sergey
19.09.2017
17:29:48
мне иногда кажется ты живешь в мире где существуют только простые кейсы типа зарегался юзер
Sergey
19.09.2017
17:29:53
p.s. у меня финансовые штуки вообще на блокчейне где то что транзакция прошла еще ничего не значит(
эти "балансы" которые increase/decrease я бы менял через корень агрегата (транзакция). Но это только для write модели. Я ж не дурак лэджер делать на доктрине
Dmitry
19.09.2017
17:31:52
а ловит это событие кто-то в persistance?
не, ну про корень агрегата я сразу сказал, когда он есть вопросов нет ;) просто лень выдумывать случай, когда нужны связанные изменения и для них нет корня
Sergey
19.09.2017
17:32:59
типа саги всякие
у меня слишком примитивные проекты, не дорос я до саг
Dmitry
19.09.2017
17:34:15
эм... нет
т.е. код обработки события в домене?
Sergey
19.09.2017
17:34:30
точнее именно листенеры не должны быть в домене
это как "точки входа" инициирующие новые транзакции
есть штуки типа "послать нотификашку" а есть штуки типа "слинковать два аргегата"... правда для последнего не могу придумать нормальный кейс
разве что статистика
ну вот у меня для рефералки например надо
Dinar
19.09.2017
17:36:07
Sergey
19.09.2017
17:36:59
короч я сча использую кастыльный эдакий недо-cqrs
Google
Sergey
19.09.2017
17:37:03
без event sourcing
Dmitry
19.09.2017
17:37:15
ну смотри, в данном случае в роли логической транзакции ты используешь событие. Т.е. все связанные иземенения, которые должны меняться в базе атомарно для других наблюдателей ты оформляешь в виде единого события... а листенер по сути uow и будет (по сути точно, а не по интерфейсу фаулеровскому)
Sergey
19.09.2017
17:38:04
Dmitry
19.09.2017
17:39:12
uow ну типа да, атомарное изменение, для этого uow и придумали, что бы атомарно менять набор разных объектов
Sergey
19.09.2017
17:40:07
ну тогда типа того.... но у меня еще небыло (а может и было и я проиграю когда-нибудь) что бы эти штуки надо было с соблюдением всех зависимостей строить (типа откатилась 3-я транзакция - надо откатывать 2 предыдущие)
Dmitry
19.09.2017
17:40:40
так и не должно быть такого
Sergey
19.09.2017
17:41:16
мне казалось что saga именно про это)
Dmitry
19.09.2017
17:43:05
мне казалось, что про то, что если у нас откатилась внутрях где-то 3-я транзакция, то 2-я этого заметить не должна ;)
Sergey
19.09.2017
17:45:10
Надо освежить
Dmitriy
19.09.2017
17:46:40
Сергей видимо про 3й шаг одной транзакции?
Gaiaz Iusipov
19.09.2017
19:05:03
Ребята, а в задеплоином приложении можно удалить /app ? конфиги скомпилированы, шаблоны тоже...
с учетом того, что перекомпиляции на проде не будет
Ivan
19.09.2017
19:42:47
Gaiaz Iusipov
19.09.2017
19:43:52
не
да у меня в итоге затык произошел когда я Resource/views удалил, остальное впринципе не сломало ничего
Ivan
19.09.2017
19:44:33
у меня в app ещё autoload.php и AppKernel.php лежат
Daniel
19.09.2017
19:49:36
Але оп
Репозиторий должен быть завязан только на доктрине?
Хры что ли
Gaiaz Iusipov
19.09.2017
19:51:45
Google
Gaiaz Iusipov
19.09.2017
19:52:01
Daniel
19.09.2017
19:52:05
А если у меня отдельный сервис для проекта? Репозиторий может стучать на ендпоинт другого сервиса и десериализовывать полученные данные в модели? *(Так то норм кейс)*
Или это не репозиторий?
Gaiaz Iusipov
19.09.2017
19:53:06
Daniel
19.09.2017
19:53:14
Ты не понял
Gaiaz Iusipov
19.09.2017
19:53:20
ага :(
Ivan
19.09.2017
19:53:37
Sergey
19.09.2017
21:48:42
и таки да, сага как раз о том как сделать так что бы следующая транзакция не зависела сильно от предыдущей
то есть "откат" изменений происходит посредствам новых ивентов которые компенсируют "фэйлы"
Dinar
19.09.2017
22:43:11
Подскажите пожалуйста, что за фигна такая, которая возникает только при деплое на сервер.
https://pastebin.com/rgnegZwj
Почему доктриновские прокси недоступны? Причем это только время от времени происходит.
Dmitriy
20.09.2017
04:27:58
как я разумею транзакции начинаются когда в проекте появляется личный счет пользователя
слава богу у нас пока таких кейсов нет )
Sergey
20.09.2017
05:47:22
Dinar
20.09.2017
05:48:24
Boris
20.09.2017
06:17:46
Sergey
20.09.2017
06:18:51
Dinar
20.09.2017
06:19:34
Ivan
20.09.2017
06:45:25
Google
Ivan
20.09.2017
06:47:01
нее
тут request, значит, вероятно http запросы
Dinar
20.09.2017
06:47:26
Sergey
20.09.2017
06:49:02
Sergey
20.09.2017
09:20:44
привет, подскажите плиз, возможно ли из кода поменять параметры стороннего бандла?
Roman
20.09.2017
09:21:13
wow
Gaiaz Iusipov
20.09.2017
09:21:25
кто-нибудь знает какой симфоневский адаптер сохранит кэш в файлик var/cache, а не в /tmp (tmpfs)
Alexey
20.09.2017
09:21:47
Всем привет. Как можно в бандле зарегистрировать несколько расширений контейнера
public function getContainerExtension()
{
return [
new UserExtension(),
new PostExtension()
];
}
Хотелось что-то типо такого
Можно ли
Daniel
20.09.2017
09:26:25
Ребята, вопрос по рейс кондишенам и архитектуре согласованности в очередях
У вас тоже телеграм не работает?
С телефона вроде ок, с компа вообще не фурычит (убунта)