Панель celestaDebugInfo

Материал из Course Orchestra
Перейти к: навигация, поиск
Showcase

Создание решений на КУРС:Showcase

В релизе платформы 5.0.0 для целей отладки зависаний/блокировок при использовании в Showcase источников данных celesta появилась "Панель отладки для источника данных celesta". Панель отладки доступна на странице приложения localhost:8080/Showcase/control/celestaDebugInfo.jsp Данная панель содержит таблицу активных выполняющихся celesta - скриптов. В данной таблице содержится:


•ProcName – имя активного на данный момент (исполняющегося) celesta – скрипта

•UserId – идентификатор пользователя, вызвавшего скрипт ProcName

•DBPid – идентификатор процесса PID в базе данных, связанный с запросами скрипта к БД

•StartTime - время начала выполнения скрипта


CelestaDebugInfo10.png


Следует обратить внимание на то, что в таблице будут отображаться только текущие, исполняемые в данный момент скрипты. По соображениям безопасности Панель отладки доступна только для внутреннего пользователя Showcase - master.


Пример кода Celesta, выводящего список имён пользователей и соответствующих PID-ов для активных (выполняющихся в данный момент) контекстов вызова:

PrintScreen2.png

Здесь используется следующий API Celesta:

1) В рамках контекста вызова получить активный PID базы данных можно при помощи метода getDBPid() класса CallContext. Этот метод возвращает результат вызова следующих команд:


•MSSQL — SELECT @@SPID;

•Oracle — select sys_context('userenv','sessionid')

•Postgres — select pb_backend_pid();

•MySQL — select connection_id();


2) Получить все активные (выполняющиеся) контексты вызова можно при помощи метода getActiveContexts() класса Celesta.

3) В свойствах объекта CallContext есть свойство procName (getProcName()), содержащее имя Celesta-процедуры, вызов которой повлёк создание данного CallContext. Это позволяет упростить отладку "подвисающих" процедур, т. к. сразу видно, какие процедуры "висят".

В Челесту добавлена возможность профилирования вызовов, и это отображается на панели в разделе "Трассировка процедур Celesta".

К системным таблицам Челесты добавилась таблица celesta.calllog, описанная в главе CELESTA, в разделе Системные таблицы Celesta, в подразделе Система профилирования.

В классе Celesta добавлен метод setProfilemode(boolean mode), вызов которого с аргументом true включает режим профилирования (а с аргументом false -- выключает), и метод isProfileMode(), показывающий текущий режим.

На панели есть две кнопки: "Включить трассировку" и "Выключить трассировку", названия которых говорят сами за себя. Они вызывают метод setProfilemode(boolean mode).

Ниже этих кнопок отображается состояние включения трассировки процедур Celesta. Это осуществляется с помощью вызова метода isProfileMode().