@proelixir

Страница 1026 из 1045
Николай
13.09.2018
07:49:28
Здравствуйте. Прошу вашей помощи, возникла проблема с использованием Ecto. Я создаю запись через Repo.insert, получаю {:ok, client}. И отправляю во внешнюю систему client.id (sidekiq на ruby) таск на выполнение импорта. Таск крешится с сообщением, что клиента с указанным id не найдено. Оказалось, что insert возвращает результат до выполнения коммита транзакции. Возникает вопрос, можно ли как-то ожидать завершение коммита до получения результата? Пробовал обернуть insert в transaction, таже история.

Dmitry
13.09.2018
07:51:41
Т.е. через sidekiq кишку и руби срабатывает быстрее чем коммит?

Как то звучит невероятно

Николай
13.09.2018
07:53:00
Т.е. через sidekiq кишку и руби срабатывает быстрее чем коммит?
Может и не вероятно, но факт. В sidekiq отправляю задачи сразу после инсерта через редис. В логах феникса видно, что коммит транзакции выполняется после возврата результата команды

Google
Dmitry
13.09.2018
07:53:48
Лог в студию

Экто вообще не пишет в лог commit не простые запросы

А только на транзакции

Значит ты посылаешт в сайдкик раньше конца транзакции

Николай
13.09.2018
08:06:30
Хм, хорошо, спасибо, покурю, поищу, может где-то оборачивается в транзакцию поверх эта история.. Не подумал об этом но ведь insert все равно возвращает результат раньше коммита. В большинстве случаев она завершится быстрее, чем таск дойдет до sidekiq, это да. а если база "подтупит" на пару лишних сотых долей секунды, возникнет та же проблема. В целом, нет возможности ожидать результат завершения транзакции, через Ecto?

Dmitry
13.09.2018
08:07:45
У insert нету коммита

Чтобы был коммит, должен быть begin

id же из базы берется - автогенерируется

Значит запись там уже есть

Николай
13.09.2018
08:11:06
Стоп, стоп, стоп. Запись и её ID есть в текущей транзакции. Insert - это тоже транзакция в БД, и она тоже подразумевает begin и commit

Dmitry
13.09.2018
08:11:39
С чего бы?

Repo.insert просто делает запрос, без всяких транзакций

Для транзакции должны быть причины

Google
Dmitry
13.09.2018
08:12:47
Например тесты оборачивают все в транзакцию и потом роллбэчат чтобы база была одинаковая после всех тестов

Или ты сам написал в коде Repo.transaction

Николай
13.09.2018
08:14:16
https://www.tutorialspoint.com/sql/sql-transactions.htm A transaction is the propagation of one or more changes to the database. For example, if you are creating a record or updating a record or deleting a record from the table, then you are performing a transaction on that table. It is important to control these transactions to ensure the data integrity and to handle database errors.

Nikolai
13.09.2018
08:17:15
судя по коду инсерта, транзакция там может быть, если вставляются эмбеды или ассоциации.

Dmitry
13.09.2018
08:18:06
Но все равно экто выполняет строчку синхронно

По идее

Во всяком случае странно было бы предположить другое

Nikolai
13.09.2018
08:18:30
угу

Dmitry
13.09.2018
08:19:16
Заходишь в psql, пишешь insert без commit - получаешь запись в базу

А чтобы начать транзакцию - пилишь begin

Николай
13.09.2018
08:22:57
Уф... В любом случае, спасибо за наводку

Serge
13.09.2018
08:40:27
Dmitry попробуй ibrowse, у нас на тестах он работает стабильнее, но пока не переключались на него.

Dmitry у меня через некоторое время утекают дескрипторы и hackney начинает таймаутить + ошибка :emfile, версия последняя у hackney.

Dmitry
13.09.2018
09:18:17
@summersanta Учитывая, что hackney использует бинари, а ibrowse листы, то мне лично кажется проще переделать hackney, чем переходить на ibrowse.

Егор
13.09.2018
11:01:37


Haanan
13.09.2018
14:15:45
Может им так легче на фронте обрабатывать?

В любом случае стандарт требует чтобы статус был в секции метаинформации https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

Dmitry
13.09.2018
15:15:37
Статус - это часть протокола HTTP

Ни а какой секции меты он быть не должен

Google
Dmitry
13.09.2018
15:17:17
В протоколе его место называется status-line

И это первая строка

HTTP/1.1 200 OK

Andrey
13.09.2018
15:22:41
что значит не должен? твоя конкретная реализация api может его там продублировать если хочет. Если например этот статус значимый для api. И тогда при переходе с HTTP на другой транспортный протокол не придется искать место для этого статуса, например

Dmitry
13.09.2018
15:23:09
Не должен это значит не должен. Ничего больше

Alexandra
13.09.2018
17:58:43
Ищу разработчика Senior Elixir/ Ruby on Rails в Киев (в офис) 4000 - 5000$,простите если у вас не принято выкладовать вакансии ,вся надежда на релокейт

Alexander
13.09.2018
18:00:09
ничесе

Alexandra
13.09.2018
18:01:15
https://docs.google.com/document/d/1vJO_QBvV10UVy1d0rnJYOX9JtRiGu0DorINDW0xdZXc/mobilebasic

тут вся информация о компании,команде,технологиях

будут вопросы-задай

*задавай

Alexandra
13.09.2018
18:08:41
не все в Киеве с бекграундом Руби он Раил(

Igor
13.09.2018
18:09:20
Зачем именно этот бекграунд?

Alexandra
13.09.2018
18:12:51
тонкости свои,заказчик настаивал на Руби

Buckler
14.09.2018
04:00:53
Привет, Gillan! Пожалуйста, реши капчу: Вычисли: 55+57=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

Привет, Annetta! Пожалуйста, реши капчу: Вычисли: 86+48=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

Привет, Concettina! Пожалуйста, реши капчу: Вычисли: 86+1=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

Google
Admin
ERROR: S client not available

Buckler
14.09.2018
10:27:47
Привет, Sus! Пожалуйста, реши капчу: Вычисли: 8+43=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

Artem
14.09.2018
13:03:19
https://donetsk.hh.ua/vacancy/27580001

Buckler
14.09.2018
17:25:35
Привет, tara! Пожалуйста, реши капчу: Вычисли: 31+19=... Осталось попыток: 3 Если не решишь - забаню навеки... Удачи!

Сергей
15.09.2018
11:35:16
Привет всем! У меня немного холиварный вопрос. Почему вы решили использовать Elixir, а не Erlang? Как по мне Erlang на много проще.

Проще в смысле для каких-нибудь realtime приложений, типа стриминга или биржевых приложений

Alexander
15.09.2018
12:01:29
Вопрос со строками и utf в эликсире решен радикально и хорошо

Эликсир вообще - это эрланг с макросами лиспа.

Сергей
15.09.2018
12:19:24
Вопрос со строками и utf в эликсире решен радикально и хорошо
Согласен. Но beam это вроде как не про веб и не про вычисления. Единственное, с чем он классно справляется - это с перессылкой данных

Сергей
15.09.2018
12:20:29
Dmitry
15.09.2018
12:21:15
Мне эрланг не понравился из-за синтаксиса и какой-то мути со строками ?

Сергей
15.09.2018
12:21:36
Согласен. Но beam это вроде как не про веб и не про вычисления. Единственное, с чем он классно справляется - это с перессылкой данных
Мы сейчас пишем небольшой проект, связанный с биржей и нам нужно отправлять много данных в реалтайме. С этим erlang справляется нормально, если особо не тупить

Мне эрланг не понравился из-за синтаксиса и какой-то мути со строками ?
Да вообще не нужно импользовать erlang, если надо что быстро вычислять или работать со строками

Мы просто отдаём поток данных по бинарному протоколу

Строки практически не задействуем

А для веб я бы взял что-нибудь другое, но не phoenix

Кстати синтаксис Erlanga проще, но к нему нужно привыкнуть

Dmitry
15.09.2018
12:27:57
А для веб я бы взял что-нибудь другое, но не phoenix
Альтернатив пока нет особо, именно в elixir

Google
Сергей
15.09.2018
12:30:34
Альтернатив пока нет особо, именно в elixir
Ну ведь всегда есть что-то другое. Уверен Elixir - это не первая и не последняя технология которую вы изучаете ?

Dmitry
15.09.2018
12:31:07
Ну мы в чате по эликсиру все-таки, я поэтому не говорю про ruby, go, .net и прочее)

Сергей
15.09.2018
12:34:08
Логично. Но сравнение иногда не помешает. Просто есть много людей которые хотят использовать технологию не по назначению... И тогда лучше их направить на правильный путь ?

Evgeny
15.09.2018
18:28:20
Логично. Но сравнение иногда не помешает. Просто есть много людей которые хотят использовать технологию не по назначению... И тогда лучше их направить на правильный путь ?
Изначально вопрос был elixir vs erlang, поэтому теперь неясно о чем, вы толкуете. Для какого "назначения" будет правильно использовать erlang а для какого elixir? По мне так область применения этих языков практически совпадает.

Сергей
15.09.2018
18:54:51
Изначально вопрос был elixir vs erlang, поэтому теперь неясно о чем, вы толкуете. Для какого "назначения" будет правильно использовать erlang а для какого elixir? По мне так область применения этих языков практически совпадает.
Изначально был, но потом я решил толкнуть философскую мысль про инструменты и задачи ?. Так и есть, область совпадает. Я просто хотел выразить свой скепсис на счёт BEAM под web и собственно phoenix. Кто-нибудь юзает этот фреймворк на проде?

Если да, с какими подводными комнями пришлось столкнуться?

Dmitry
15.09.2018
22:27:12
В чем проблема строк в BEAM?

Страница 1026 из 1045