Регистрация  |  Вход

Код упал "по-тихому"

Возникла неожиданная ситуация: оказывается код может "упасть" без уведомления владельца кода (администратора).

Я думал, что при возникновеннии ошибки, даже не перехваченной, обязательно будет отправлено уведомление, а вот и нет - ошибку видно только в Дебаг Логе.

это колуат во футур методе. там перехватываются непрошедшие или неуспешные колауты и в catchе отправляется письмо-уведомление.

так вот если в адрес письма поставить стринг с запятой (несколько емейлов из Cusstom settings в виде одного стринга и перечисленные через запятую) - то оправка письма "падает" и этот код падает по-тихому, без уведомления владельца.

А в ситуации когда колаут может вставать в очередь длящуюся 10 минут (сегодня так на сервере - я удивился - даже не мог сохранить изменения в колаут коде, так как мне отвечали, что там Очередь ждет, которая должна работать с этим кодом - подожди-ка сохранять изменения), я вызвал тригером колаут - и сижу без результата - и гадаю: то ли очередь долгая, то ли код упал по-тихому из-за того, что кто-то стринг неверный в Cusstom settings заложил. Но это все-таки редкая ситуация, я надеюсь.

Возникла неожиданная ситуация: оказывается код может "упасть" без уведомления владельца кода (администратора).

Я думал, что при возникновеннии ошибки, даже не перехваченной, обязательно будет отправлено уведомление, а вот и нет - ошибку видно только в Дебаг Логе.

это колуат во футур методе. там перехватываются непрошедшие или неуспешные колауты и в catchе отправляется письмо-уведомление. 
так вот если в адрес письма поставить стринг с запятой (несколько емейлов из Cusstom settings в виде [b]одного [/b]стринга и перечисленные через запятую) - то оправка письма "падает" и этот код падает по-тихому, без уведомления владельца.

А в ситуации когда колаут может вставать в очередь длящуюся 10 минут [i](сегодня так на сервере - я удивился - даже не мог сохранить изменения в колаут коде, так как мне отвечали, что там Очередь ждет, которая должна работать с этим кодом - подожди-ка сохранять изменения),[/i] я вызвал тригером колаут - и сижу без результата  - и гадаю: то ли очередь долгая, то ли код упал по-тихому из-за того, что кто-то стринг неверный в Cusstom settings заложил. Но это все-таки редкая ситуация, я надеюсь.

А в ситуации когда колаут может вставать в очередь длящуюся 10 минут (сегодня так на сервере - я удивился - даже не мог сохранить изменения в колаут коде, так как мне отвечали, что там Очередь ждет, которая должна работать с этим кодом - подожди-ка сохранять изменения), я вызвал тригером колаут - и сижу без результата - и гадаю: то ли очередь долгая, то ли код упал по-тихому из-за того, что кто-то стринг неверный в Cusstom settings заложил. Но это все-таки редкая ситуация, я надеюсь.

Ну ситуация это не редкая и на продакшенах с большой активностью вполне обычное дело что твой асинхронный метод может подвиснуть на неопределенное время. Это надо учитывать.

При разработке и отладке кода с асинхронными методами нужно всегда под рукой иметь открытую вкладку Apex Job (там отображаются батчи, future и запущенные scheduled вроде). Т.е. dev flow такой - запустил - посмотрел очередь (нет ли там ошибок и выполнился) - смотришь результаты

это колуат во футур методе. там перехватываются непрошедшие или неуспешные колауты и в catchе отправляется письмо-уведомление.
так вот если в адрес письма поставить стринг с запятой (несколько емейлов из Cusstom settings в виде одного стринга и перечисленные через запятую) - то оправка письма "падает" и этот код падает по-тихому, без уведомления владельца.

Я бы предложил бы в этом случае немного другой путь. При ошибке в catch блоке не слать письмо напрямую, а создавать кастомный объект log (например с типом Error). А уже на insert данного объекта повесить workflow c email alert. Так точно отработает + в базе будет история ошибок (которую не забывай периодически отчищать)

[quote]А в ситуации когда колаут может вставать в очередь длящуюся 10 минут (сегодня так на сервере - я удивился - даже не мог сохранить изменения в колаут коде, так как мне отвечали, что там Очередь ждет, которая должна работать с этим кодом - подожди-ка сохранять изменения), я вызвал тригером колаут - и сижу без результата - и гадаю: то ли очередь долгая, то ли код упал по-тихому из-за того, что кто-то стринг неверный в Cusstom settings заложил. Но это все-таки редкая ситуация, я надеюсь.[/quote]

Ну ситуация это не редкая и на продакшенах с большой активностью вполне обычное дело что твой асинхронный метод может подвиснуть на неопределенное время. Это надо учитывать.

При разработке и отладке кода с асинхронными методами нужно всегда под рукой иметь открытую вкладку Apex Job (там отображаются батчи, future и запущенные scheduled вроде). Т.е. dev flow такой - запустил - посмотрел очередь (нет ли там ошибок и выполнился) - смотришь результаты

 [quote]это колуат во футур методе. там перехватываются непрошедшие или неуспешные колауты и в catchе отправляется письмо-уведомление. 
так вот если в адрес письма поставить стринг с запятой (несколько емейлов из Cusstom settings в виде одного стринга и перечисленные через запятую) - то оправка письма "падает" и этот код падает по-тихому, без уведомления владельца.[/quote]

Я бы предложил бы в этом случае немного другой путь. При ошибке в catch блоке не слать письмо напрямую, а создавать кастомный объект log (например с типом Error). А уже на insert данного объекта повесить workflow c email alert. Так точно отработает + в базе будет история ошибок (которую не забывай периодически отчищать)

Dmitry Shnyrev
создавать кастомный объект log (например с типом Error). А уже на insert данного объекта повесить workflow c email alert. Так точно отработает + в базе будет история ошибок (которую не забывай периодически отчищать)

создавать кастомный объект log - это что-то новое для меня. Да когда я уже закончу это учить?

а что если использовать предложенниую Дмитрием где-то в параллелной теме вариант со взятием всего кода в try и в catche отправлять письмо. Сможет ли тогда код упасть по-тихому?

[quote="Dmitry Shnyrev"] создавать кастомный объект log (например с типом Error). А уже на insert данного объекта повесить workflow c email alert. Так точно отработает + в базе будет история ошибок (которую не забывай периодически отчищать)[/quote]

создавать кастомный объект log - это что-то новое для меня. Да когда я уже закончу это учить?

а что если использовать предложенниую Дмитрием где-то в параллелной теме вариант со взятием [b]всего кода в try[/b] и в catche отправлять письмо. Сможет ли тогда код упасть по-тихому?

Это наверное можно выяснить только опытным путем :)

Это наверное можно выяснить только опытным путем :)