// codeart.ru / Теория программирования / Как меня подвела интуиция или WebSphere Content Mangment и длиные урлы Форум

Как меня подвела интуиция или WebSphere Content Mangment и длиные урлы rss подписка

Автор: Evgeniy Sergeev

Сегодня потерял кучу времени на решение проблемы с порталом на базе IBM WebSphere. Вроде простая ошибка — не открывается часть документов, размещенных на внутреннем корпоративном портале. Но из-за того, что изначально взял неверный след несколько часов искал ошибку там где ее нет. Вот как все было.

В одной из не мелких компаний России существует довольно разветвленная сеть филиалов, размещенных по всей стране. В каждом филиале довольно сложная организационная структура — департаменты, отделы и т.д. У каждого отдела есть своя страница на внутреннем корпоративном портале. Страниц очень много, поэтому они структурированы по филиалам, затем департаментам и затем только по отделам. И вот, в один прекрасный день возникает проблема — у сотрудников перестали открываться часть новых документов, размещенных буквально на днях.

Поверхностный анализ показал, что при попытке открыть документ выдается стандартная ошибка «Узел или веб-страница не найдена». Если заменить доменное имя на IP-адрес сервера, то документ успешно открывается. Возникает сразу подозрение на то, что коряво работает ДНС, ведь если по IP открывается, а по полному имени нет, то собака зарыта именно в этом. Забегая вперед скажу, что несмотря на свою правдоподобность эта версия была ошибочной. Но тогда я этого не знал. Поэтому, несмотря на то, что доменное имя прекрасно резолвилось через nslookup, начал искать проблему с ДНС-ом. Все дело в том, что в организации сразу несколько доменов. А в ДНС несколько зон, которые обслуживаются несколькими ДНС-серверами. Соответственно есть куча настроек, которые теоретически могут давать какие угодно негативные эффекты.

После нескольких часов возни с доменами и ДНС-ами, после десятков различных версий, как правдоподобных так и не очень, после кучи выкуренных сигарет и испорченных нервов был задан один простой вопрос: «А может все же дело не в ДНС?». Конечно, когда ты твердо решил, что нашел проблему и просто ее надо конкретизировать и исправить, трудно поверить в собственную ошибку. Но и отказывать от других версий не стоит.

В общем, начали анализировать WCM (Web Content Managment) — портлет, который отвечает за публикацию материалов на WebSphere Portal. Обратили внимание, что этот портлет пихает в УРЛ все дерево разделов вплоть до искомого документа (а я ранее писал, что организация здоровая и иерархия разделов очень разветвленная). Так как названия разделов на русском языке, то в строке браузера образуются длиннющие урл-кодированные строки. Решили на всякий случай посмотреть, что там в них закодировано. И после первого же документа стало ясно в чем проблема.

Короче говоря, у IE8 максимальная длина урла может составлять что-то около 2083 символов, а у нас получался урл буквально на пару символов длиннее, поэтому когда доменное имя заменялось на IP адрес, то урл сокращался на несколько символов и не обрезался. А когда указывалось полное доменное имя, то лишние несколько символов обрезались и документ становился недоступным.

После этого проблема была решена за 15 минут, путем переименования разделов и документов. Но те часы, которые были потрачены на поиск несуществующей проблемы, еще раз показали, что доверять нужно не чутью, а фактам. И первоначальный сбор информации должен быть свободен от выводов о сути проблемы, вместо этого нужно собрать как можно больше разных фактов, а только потом строить гипотезы о возможных ошибках.

Leave a Reply

« »