Приветствую вас, читатели и писатели Хабрахабра! Сейчас я учусь, параллельно подрабатывая системным администратором, в интересном стартапе — MyMoneyPark. Естественно, поначалу эта работа включает в себя все возможное, в том числе и «эникеизм», но это опыт, который вряд ли принесет ученику вред. Одно из направлений, которым я руковожу, — телефония.
Для нас очень важна стабильность телефонной системы, тем более, что проект стартовал чуть больше трёх месяцев назад. Кроме того, чтобы иметь представление о количестве звонков и необходимой «мощности» для их обработки, чтобы не потерять ни одного позвонившего клиента, или иметь возможность создавать графики для каждого сотрудника, мы нашли система мониторинга и отчетности от XIMA очень полезна.
А о дефектах, которые мне пришлось проделать при работе с этой системой, я расскажу под катом.
О системе
«Chronicall» — разработка XIMA, позволяющая хранить историю звонков, строить отчеты и просматривать подробную информацию о каждом совершенном звонке.Содержит ряд дополнений, которые нас, как потребителей, на данный момент не интересуют. Как и любое программное обеспечение, «Хроникал» имеет ряд ошибок и недостатков, незаметных на первый взгляд, но, тем не менее, иногда пагубно сказывающихся на построении столь важных для нас отчетов.
Казалось бы, самая простая ситуация: руководителю линии обслуживания клиентов (LOC) был предоставлен «базовый» доступ к утилите, работающей через Java, в виде апплета.
Первое, что он сделает, это ознакомится с продуктом, и вполне успешно - после первой перезагрузки система откажется запускаться.
С чего все началось
Утром, после необходимых обновлений, потребовавших перезагрузки, я получил письмо от начальника ЛОК о том, что система «Хроникал» отказалась запускаться, а именно ее часть со списком доступных отчетов, с жалобой на отсутствие подключение к серверу.Сообщение было простым, выглядело оно просто: «Похоже, вы потеряли соединение с Хроническим Сервером.
Пожалуйста, убедитесь, что вы подключены к сети».
Первые шаги
Не найдя ответов в гугле и не получив ответов на свои вопросы в XIMA-FAQ, я приступил к самостоятельному глубокому устранению неполадок.Было бы очень легко предположить, что все запросы к Java-апплету обслуживаются HTTP-сервером.
Кстати, в Chronicall HTTP-сервер — tomcat. Поэтому прямой запрос на URL со списком доступных отчетов показал банальную ошибку сервера — 503. Возможно, кто-то поступил бы иначе, сразу приступив к изучению логов сервера, но, увидев ошибку подключения, невольно думаешь о проблемах на сервере.
сеть.
Поэтому именно идея проверить доступность сервера для клиента пришла мне в голову в первую очередь.
Продолжая поиск, вторым шагом было просмотр логов HTTP-сервера, где была обнаружена ошибка.
Для меня немного странно, что на первый взгляд на ошибку, которую выдает Java-апплет, сложно догадаться, что на самом деле ее вызывает. Краткая выдержка из логов ШВЕРВИГЕНД: StandardWrapper.Throwable java.lang.ClassCastException: javax.swing.tree.DefaultMutableTreeNode не может быть приведен к com.ximasoft.chronicall.reports.manager.ReportNode на com.ximasoft.chronicall.reports.manager.ReportManager.ensureUniqueFolderIDs (ReportManager.java:1364) на com.ximasoft.chronicall.reports.manager.ReportManager.ensureUniqueFolderIDs (ReportManager.java:1364) в com.ximasoft.chronicall.reports.manager.ReportManager.init (ReportManager.java:1336) в javax.servlet.GenericServlet.init(GenericServlet.java:212) Сама ошибка меня не беспокоила; имея опыт отладки Java-приложений, я мог бы попробовать вручную найти то, что мешает запуску чудо-утилиты.
Но, к сожалению, не слушая разума, я начал с перезапуска сервиса, переустановки JVM, чистки кода и поиска подводных камней в виде несовместимости с разными версиями Java-машины, в общем, всего того, что предлагала XIMA. -FAQ-сайт производителя и тематические форумы.
Ничего не помогло.
Последнее, что я сделал, это, естественно, отправил разработчикам отчет об ошибке с подробным описанием проблемы.
Я поверил лозунгу багрепорта о скорости их работы, думал, что они ответят очень быстро, но ошибся, ответ пришел через несколько недель, о чем расскажу позже.
Разумная мысль
Моё «лёгкое» исследование показало, что неработоспособным остаётся только редактор отчётов, который содержит дерево выбора, состоящее из доступных отчётов, сгруппированных по типам в папках.При этом данные записывались в базу данных, отчеты по расписанию работали прекрасно.
Все работало, кроме редактора (тех самых отчетов).
К счастью, на этом этапе исследования я вспомнил, что «сделал» и изменил наш руководитель линии обслуживания клиентов:
Именно тогда нам удалось приблизиться к решению этой проблемы.
На рисунке выше показано дерево отчета с новой папкой «Новая папка» в самом низу.
Эту папку создал руководитель ЛОК во время исследования платформы.
Причем, как видите, создать его можно, но удалить — имеющийся у нас функционал этого не позволяет. Также данный функционал не позволяет использовать эту папку по прямому назначению – для группировки отчетов.
Теперь становится понятно, что функция «ensureUniqueFolderIDs» из логов, видимо, частично отвечает за загрузку списка с рисунка выше.
Остаётся только найти откуда загружаются данные для дерева выбора и попытаться исправить ошибку.
Устранение
Используемая схема базы данных не указывает список возможных отчетов.Поэтому, пролистав папки файловой системы, я наткнулся на одну под названием «отчеты».
Он содержит множество файлов без расширений, несколько шаблонов (как следует из названия) и ряд файлов JASPER, по-видимому, для JasperReports с открытым исходным кодом.
Но больше всего меня привлек файл под названием «модель».
В нем среди бинарного «мусора» я нашел названия своих папок и имена, входящие в папки отчета.
Удаление этого файла помогло подтвердить мое предположение — именно из этого файла программа загружает дерево.
Это исправило проблему - после перезагрузки автоматически создавался новый файл, но, к сожалению, он оказался пустым, как и дерево отчетов.
Все дело в том, что файл «модели», видимо, содержит сериализованные древовидные данные, что не давало мне возможности «легким движением руки» выцарапать из него ненавистную «Новую папку».
Перебирать побайтно пришлось бы долго, рабочий день подходил к концу, и оставлять все на следующий день было бы неразумно.
Единственное, что могло ускорить процесс, это установочный файл.
Правда меня несколько напугала полная переустановка.
Поэтому, разобрав его на файлы, первым делом я заменил файл «модели».
Эта процедура не только вернула все на свои места, но и добавила новые, бесполезные в нашем случае отчеты.
Выводы
С одной стороны, понятно стремление разработчиков максимально ограничить клиента, не купившего «расширенную» лицензию.С другой стороны, простейшая мелочь, от которой невозможно избавиться без правки файлов и длительных поисков хоть каких-то зацепок, но которая приводит к полной неработоспособности системы, да еще и вводит в заблуждение «неправдоподобным» сообщением об ошибке.
Маленькая вещь, которая может остановить работу на несколько часов, если разобраться самостоятельно и повезет, или на несколько недель, если воспользоваться отчетом об ошибке.
Огромную долю юмора в эту историю добавляют разработчики, соизволившие отреагировать на сообщение об ошибке, как уже отмечалось, спустя несколько недель.
Восхитившись проделанной работой, они за простые бонусы предложили нашей компании занять место их бета-тестера.
Но из-за нехватки времени мы не смогли воспользоваться этой возможностью и нам больше не написали.
Почему появление этой папки так обескуражило программу, для меня остается загадкой по сей день; разработчики не удосужились дать мне внятный ответ, но надеюсь, они решили проблему.
Поэтому я очень надеюсь, что больше никому не придется сталкиваться с подобным явлением.
P.S.
Если я изначально пошел по неправильному пути, я приму любую критику.Если есть более простые способы решения этой проблемы, мне бы очень хотелось об этом узнать.
Не судите слишком строго за свою первую статью.
Теги: #телефония #отчеты #avaya ip office #Разработка систем связи
-
Ноутбук Aspire-As5742G-373G32Mnkk От Acer
19 Oct, 24 -
Как Найти Фрилансера, Не Теряя Самообладания
19 Oct, 24 -
Школа Нытиков
19 Oct, 24 -
Каковы Следующие Шаги?
19 Oct, 24 -
Мфкаст №44. Много Гугла
19 Oct, 24 -
Выбор Пароля Для Архива
19 Oct, 24