Гейзенбаг - после очистки всех кешей, на некоторых машинах повисает процесс httpd
Originally reported on Google Code with ID 195
На первое время очевидные задачи.
1. Убить switch-case в dotstyleprovider, по возможности вообще избавиться от этого
класса. Сделать это путем создания новых dst узлов для рисования дерева (аналогично
другим dst узлам, более-менее адекватный пример см. в nfa_matcher). В них перенести
функцию dot_script из обычных узлов, и скорее всего определить функции типа label(),
shape(), color() и т. д.
2. Избавиться от некоторых switch-case в explaining graph. Там есть dst узлы для листа
и оператора, но не для конкретных операторов\листов. Их следует создать - это убьет
значительную часть switch-case'ов.
3. Обратить внимание на то, что конструкции типа
if ($this->pregnode->subtype == qtype_preg_leaf_assert::SUBTYPE_CIRCUMFLEX)
return get_string('circumflex_leaf_assert', 'qtype_preg');
можно заменить на
return get_string($this->pregnode->subtype);
если же ключ в lang файле не совпадает с subtype, можно сделать функцию, вычисляющую
его на основе subtype - это гораздо проще такого копипаста, который там сейчас; код
будет проще читаться и будет некоторая "дисциплина" именования классов\строк в lang
файле.
Reported by vostreltsov
on 2013-04-26 14:58:50
Comments (38)
-
repo owner -
reporter Иерархию пустых классов для дерева я создал, нужные методы в сам инструмент добавил. Очередь за переносом кода в эти узлы; помимо dotstyleprovider нужно также перенести функцию dot_script из обычных узлов. Возможно в ней нужно будет что-то поменять.
Reported by
vostreltsov
on 2013-04-27 08:49:17 -
reporter 4. Удалить дублирование в lang файлах.
Reported by
vostreltsov
on 2013-04-27 20:19:35 -
repo owner Валерий - к пункту 4 хорошо бы конкретику. Можем вместе за это как-нибудь сесть, если сами не можете. Иначе это остается на уровне благого пожелания. Надо разобраться в общем, что можно сливать - а что нельзя...
Reported by
oasychev
on 2013-04-28 12:57:33 -
reporter В общем-то я часть уже удалил. Тем не менее, с префиксом description_ есть описания флагов (посикс, юникод) - их бы я сделал без префикса, рядом со строками для абстрактных узлов. И еще можно удалить всякие строки типа "unknown node" - как они вообще могут понадобиться, если такое должно откидываться акцептингом?!
Reported by
vostreltsov
on 2013-04-28 16:12:22 -
reporter 5. Григорий (вроде бы) добавил radiobutton'ы для режима отображения дерева. Нужно сделать кликабельными также и label'ы, а не только кружочки - это будет выглядеть намного лучше (Пример - при написании сообщения сюда можно видеть checkbox "Send email", нужно сделать по аналогии).
Reported by
vostreltsov
on 2013-06-04 09:37:22 -
Account Deleted 5. Готово, вытолкнул. 6. Необходимо убрать кеширование изображения дерева для корректной работы радиобаттонов, ибо в данный момент при смене режима отображения дерева изображение дерева для текущего регулярного выражения не меняется.
Reported by
grvlter
on 2013-06-20 11:05:59 -
Account Deleted 6. Кэширование исправил
Reported by
TOPT.iiiii
on 2013-06-20 11:46:08 -
repo owner preg_description_tool.php 7. switch в set_modifier можно (нужно!) убрать - PHP может использовать строковую переменную как имя поля, просто поставьте $ после ->. Так что можно завести в классе массив (можно даже константой) с соответствием буква => имя поля и функция set_modifier вообще не понадобится, т.к. сведется к индексации. А reset пойдет через foreach
Reported by
oasychev
on 2013-06-29 18:17:35 -
repo owner Кстати, Валерий, аналогичное 7 замечание относится и к preg_regex_handler. А Дмитрий может использовать эту функцию, она тоже статическая...
Reported by
oasychev
on 2013-06-29 22:06:29 -
repo owner 1-2 почти выполнено, от switch-case мы избавились исключение - простые ассерты, здесь ждем Валерия чтобы убить switch в общих узлах простых ассертов, сделав подклассы - потом в description надо будет сделать аналогично Дмитрию
Reported by
oasychev
on 2013-07-02 14:11:25 -
repo owner Как то у нас работа замедлилась. Нужна встреча, чтобы обсудить проблемы? Могу предложить 5 июля. Либо до 4 жду нового серьезного прогресса...
Reported by
oasychev
on 2013-07-02 14:12:11 -
repo owner 8. - см. ситуацию в tools_errors_5.jpg с графом - там в символьных классах нередко вылезает что-то вправо от основного прямоугольника, имхо баг 9. Пока радиокнопки переключения режимов отображения чарсетов не работают ни на одном инструменте... - сами надписи я выправил и перенес куда надо - не забудьте затянуть мои изменения 10. Тестирование регексов должно учитывать параметры на основной форме - нотацию, движок, точность/чуствительность к регистру и т.д. - все, что может повлиять на исход совпадения - и передавать параметры в функцию создания вопроса соответственно. 11. Проблема в дереве - см. tools_errors_8.JPG - почему так наехало? Понимаю что dot - но что его спровоцировало? 12. В графе к цветам узлов нужно нарисовать легенду или tooltip - что они значат... Откуда человек догадается что серый цвет имеет отношение к регистрочуствительности? 13. Регекс (?=.*?\banalgesi[ca]?[s ]?\b) выдает ошибку при "check" - отладить 14. В дереве заменить lookaround assertion на более конкретную надпись, она есть в строках 15. Сделать дерево/граф/описание/тестирование сворачиваемыми секциями! А выбор показа символьных классов - advanced. 16. Строки для формы переименовать как я сделал новые - начиная с authoring_form_ а не regex_ Не забыть оба файла - и русский тоже...
Reported by
oasychev
on 2013-07-14 15:03:45<hr> * Attachment: tools_errors_5.jpg * Attachment: tools_errors_8.JPG
-
repo owner И - касается не только этого issue - в коммите на каждую исправленную ошибку (речь именно об ошибках, а не доделках) я хочу видеть юнит-тест, гарантирующий, что она не повторится.
Reported by
oasychev
on 2013-07-14 15:32:12 -
repo owner Иванов, а прмоугольник символьного класса в файле tools_errors_5.jpg - это нормально?
Reported by
oasychev
on 2013-07-18 16:53:56 -
Account Deleted Исправлена вчера ошибка с появлением пустого узла опции как на tools_errors_5.jpg
Reported by
ZluMYO
on 2013-07-20 05:54:04 -
Account Deleted Исправил пункт 13 из комментария №13.
Reported by
ZluMYO
on 2013-07-20 10:09:34 -
repo owner Не забываем доделать к релизу: а) нормальное выставление темы на странице инструментов авторинга б) сворачивание/разворачивание секций тоже нормальное в) и пункт 16 - переименуйте с нормальными префиксами...
Reported by
oasychev
on 2013-07-25 22:34:08 -
reporter Ассерты в AST отрефакторены, напоминаю про нужность аналогичного рефакторинга в description tool.
Reported by
vostreltsov
on 2013-09-06 14:41:18 -
reporter У нас теперь получается, что get_engine_node_name($nodetype) должна еще и subtype принимать - без этого отрефакторить дескрипшен не выйдет вроде бы... Можно пойти до конца и устранить абсолютно все свич-кейсы, в т.ч. в операторах и т.д.
Reported by
vostreltsov
on 2013-09-06 15:07:32 -
repo owner Добавил второй параметр, поправил в НКА чтобы потестить - Валерий, поправьте ДКА взамен.... Иванов, Пахомов, Терехов - срочно восстановить работоспособность инструментов авторинга
Reported by
oasychev
on 2013-09-06 17:21:50 -
reporter У ДКА этой функции нет; из инструментов авторинга - граф поправил, в дескрипшен добавил и заодной убил свичкейс. Всё вроде бы хорошо теперь.
Reported by
vostreltsov
on 2013-09-06 18:33:17 -
Account Deleted Исправлены пункты 10, 14, 16. Нормальное выставление темы на странице инструментов авторинга ещё актуально?
Reported by
grvlter
on 2013-09-08 17:13:24 -
repo owner Тема уже выставляется. А вот по пункту 10 мы с Валерием обсуждали - надо сделать на форме инструмента эти настройки изменяемыми, как и на основной форме: ну потестировал человек регекс, захотел поменять и посмотреть, что выйдет - что ему закрывать, потом открывать заново? И соответственно при закрытии по "Ок" эти настройки переносятся в основную форму.
Reported by
oasychev
on 2013-09-08 18:55:22 -
repo owner Еще добавлю - из другого, но то закрыто 17) инструмент тестирования при ошибочном регексе молча игнорирует тестирование; ничего не показывая если установлен PHP Preg matcher Если НКА-матчер выбран, то ошибки показываются черным, а следовало бы красным их выделить....
Reported by
oasychev
on 2013-09-09 19:59:17 -
repo owner 18) btn_check_strings_clicked не вызывается при начальном открытии формы авторинга - а если там будут строки, считанные из БД? 19) у меня на Денвере сервер вешается при следующей последовательности действий - создаем вопрос с НКА - матчером - вводим на форме вопроса (?=.*adc) ddd - вызываем авторинг - потом добавляем скобку вот так (?=.*adc) (ddd - нажимаем Update Ничего не обновляется, а при закрытии окна редактирования вопроса повисает сервер.
Reported by
oasychev
on 2013-09-09 22:03:41 -
repo owner Всем протестировать. Напишите, кто может воспроизвести ошибку 19 - и надо все-таки отследить, чего оно так... Там jquery при закрытии формы много раз вызывает upd_failure - больше 15 точно...
Reported by
oasychev
on 2013-09-09 22:05:04 -
reporter На линуксе и apache 2.2.25 зависаний нет...
Reported by
vostreltsov
on 2013-09-09 22:13:08 -
repo owner Симптомы проблемы: после "повисающего" Update btn_check_strings_clicked продолжает вызываться, но ни upd_check_strings_success, ни upd_failure при этом не срабатывают.
Reported by
oasychev
on 2013-09-09 22:15:10 -
reporter На денвере у меня тоже не зависает
Reported by
vostreltsov
on 2013-09-10 08:24:23 -
Account Deleted Обновился от репозитория Валерия, проверил на денвере, всё работает. * строится дерево с узлом "синтаксическая ошибка" * граф не построился, но вывел сообщение об ошибке, подсветив "(" * описание сгенерировано частично, также содержит сообщение об ошибке.
Reported by
grvlter
on 2013-09-10 15:08:11 -
repo owner Похоже мы имеем дело гейзенбагом. http://en.wikipedia.org/wiki/Heisenbug Пока протоколирую течение болезни: Apache2 создает один процесс на открытую страницу и все аякс-запросы с нее обрабатывает в нем; какой-то из запросов - похоже к testing tool - вешает httpd.exe с кучей памяти (от 60 до 120 мегабайт); он, естественно перестает отвечать на последующие запросы; после удаления через диспетчер задач повисшего процесса лезет "error undefined" и все разблокируется...
Reported by
oasychev
on 2013-09-11 07:32:05 -
repo owner Судя по поведения бага, проблемы надо искать на стороне сервера? Или есть другие мнения?
Reported by
oasychev
on 2013-09-11 09:34:23 -
repo owner Оказывается, гейзенбаг надежно возникает при создании вопроса и загрузке окна авторинга сразу после очистки всех кешей в Moodle. На любом регексе - даже "ааа"...
Reported by
oasychev
on 2013-09-13 16:00:38 -
repo owner Оставляю эту задачу для отслеживания и ловли загадочного гейзенбага. Что такого может кешироваться, что потом все нормально работает?
Reported by
oasychev
on 2013-09-14 11:53:32 -
reporter Можно попробовать из moodledata/cache методом исключения поудалять разные штуки...
Reported by
vostreltsov
on 2013-09-14 18:24:24 -
repo owner Последние исправления в javascript на гейзенбаг не повлияли. Удаление всего moodledata/cache баг не вызывает, а вот очистка кешей из под Moodle - вызывает. Видимо есть еще кеши в БД...
Reported by
oasychev
on 2013-09-17 18:32:04 -
repo owner - edited description
- changed status to resolved
- Log in to comment
Reported by
oasychev
on 2013-04-26 15:01:26