В этой статье я хотел бы поговорить о входе в систему Adaptivist ScriptRunner. Журналы являются основным инструментом разработчиков и эксплуатационного персонала для анализа нештатных ситуаций в производственной среде.
Поэтому при разработке приложения мы должны подумать о том, что нам понадобится при анализе возникающих инцидентов.
Все примеры были подготовлены в Jira Software 7.8.0 и Adaptivist ScriptRunner 5.3.9.
Предположим, вы пришли в проект, который уже существует какое-то время, или вы уже написали несколько десятков скриптов, и теперь к вам приходит инцидент с ошибкой.
Пример инцидента 1
Из логов понятно, что это встроенный скрипт. Скрипт находится в каком-то бизнес-процессе при переходе с ID 951. Далее мы должны запросить информацию у эксплуатационного персонала о переходе с ID 951, и даже после того, как мы получим эту информацию, мы все равно не будем знать, находится ли этот скрипт в состоянии , валидатор или функция публикации.2018-03-17 11:43:04,891 http-nio-8080-exec-17 ERROR admin 703x1504x1 16n2j3n 127.0.0.1 /secure/WorkflowUIDispatcher.jspa [c.o.s.jira.workflow.ScriptWorkflowFunction] Script function failed on issue: BP-2, actionId: 951, file: <inline script> java.lang.NullPointerException: Cannot invoke method getKey() on null object at Script1.run(Script1.groovy:4)
Кроме того, мы понимаем, что NPE был получен потому, что какой-то объект был нулевым, но понятия не имеем, что это был за объект и почему он был нулевым.
Надо сначала найти этот встроенный скрипт, а с этим у нас проблемы.
Пример инцидента 2
2018-03-17 17:07:31,325 http-nio-8080-exec-22 ERROR admin 1027x4968x1 gj4xqt 127.0.0.1 /secure/WorkflowUIDispatcher.jspa [c.o.s.jira.workflow.ScriptWorkflowFunction] Script function failed on issue: BP-2, actionId: 961, file: ru/matveev/alexey/main/postfunctions/pfNPE.groovy
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java_util_List$get$6.call(Unknown Source)
at ru.matveev.UtilHelper.getIndexOutOfBoundsException(UtilHelper.groovy:13)
at ru.matveev.UtilHelper$getIndexOutOfBoundsException.call(Unknown Source)
at ru.matveev.alexey.main.postfunctions.pfNPE.run(pfNPE.groovy:10)
Здесь дела обстоят лучше.
Мы видим, что ошибка в методе getIndexOutOfBoundsException, который был вызван скриптом pfNPE.groovy. Мы знаем расположение этого скрипта.
Но мы не знаем, где находится файл UtilHelper.groovy. Мы можем запустить поиск по файловой системе и скорее всего найдём файл UtilHelper, но мы также не понимаем, почему мы получили IndexOutOfBoundsException, какие значения были у массива, из которого мы выбирали элемент. То есть нам не хватает контекста, в котором выполнялся скрипт.
Пример инцидента 3
2018-03-17 16:26:25,165 http-nio-8080-exec-22 ERROR admin 986x4387x1 gj4xqt 127.0.0.1 /secure/CommentAssignIssue.jspa [c.o.s.c.jira.utils.ConditionUtils] Condition failed on issue: BP-2, built-in script:com.onresolve.scriptrunner.canned.jira.workflow.postfunctions.CreateSubTask
java.lang.NullPointerException: Cannot invoke method getClauseNames() on null object
Теги: #программирование #Groovy #raiffeisenbank #Jira #atlassian #script #raiffeisen
-
Добавление Видео На Ваш Сайт Или Блог
19 Oct, 24 -
Essenly - Бизнес-Книги В Двух Словах
19 Oct, 24 -
Пробелы — Главный Враг Linux
19 Oct, 24 -
Вышла Opera 10.51 Для Windows
19 Oct, 24 -
Опера Мини - Бета-Версия
19 Oct, 24