Difference between revisions of "Изменения в версии 3.10.3"
(...) |
(3.10.3) |
||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.3]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.3]] | ||
− | Время выхода: | + | Время выхода: 21 мая 2023 г. |
[[Изменения в версии 3.10.2|Предыдущая версия]] | [[Изменения в версии 3.10.2|Предыдущая версия]] |
Revision as of 08:51, 21 May 2023
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.10.3
Время выхода: 21 мая 2023 г.
Небольшие улучшения, исправление ошибок и повышение производительности.
Выложена документация на API.
Contents
ejudge-control
Добавлена опция -rc
, позволяющая задать скрипт,
который будет выполняться при запросе на перезагрузку инстанса.
Поддерживается покомпонентная остановка и запуск компонентов
ejudge. Например, ejudge-control stop contest
остановит только компонент ej-contests, а команда
ejudge-control start contest
запустит
только компонент ej-contests.
Pull Request #173
Добавлена опция -nst
, которая отключает вывод трассы стека
в логи у всех запускаемых компонентов. Каждый компонент так же
поддерживает эту опцию. Опция может быть полезна при отладке.
ej-agent
Протокол взаимодействия улучшен: пакет запроса на компиляцию и тестирование передается сразу же с нотификацией о наличии запроса на компиляцию или тестирование, таким образом выполняется на один обмен клиент-сервер меньше. Issue #162
Исправлена ошибка, которую долгое время не удавалось найти. Issue #155
ej-compile
Добавлена опция -hi
, которая позволяет задать
идентификатор инстанса для сохранения в файл статуса компиляции.
Добавлена опция -rc
, позволяющая задать скрипт,
который будет выполняться при запросе на перезагрузку инстанса.
Добавлена опция -hc
, позволяющая задать скрипт,
который будет выполняться при запросе на остановку (down) инстанса.
Добавлена опция -nhb
, отключающая периодическое
сохранения текущего состояния в каталог состояний (heartbeat).
Добавлена опция -hb
, включающая периодическое
сохранения текущего состояния в каталог состояний (heartbeat).
По умолчанию опция включена и так.
Для ожидания изменения состояния каталогов обмена используется
механизм inotify
вместо периодической проверки состояния.
Поддерживается язык Typescript (транслятор ts-node).
Переработана поддержка языка Java. Для определения имени класса, сданного на проверку, используется небольшая программа на Java JavaClassNameExtractor.java, соответствующий jar-файл называется java-classname.jar.
Для компиляции java поддерживаются две переменных окружения:
EJUDGE_MAIN_CLASS
позволяет задать имя главного
класса для компиляции java вместо автоматически определяемого.
Переменная окружения EJUDGE_CLASSPATH
позволяет
задать CLASSPATH для компиляции и выполнения кода.
ej-contests
Многочисленные оптимизации с целью повышения производительности.
Реализовано кеширование сессий и ключей API. В результате резко сокращается количество обращений к компоненту ej-users для получения информации о сессиях. Время жизни кеша сессии - 20 минут, а ключа API - 2 часа. Сессии, которые не использовались долгое время, периодически удаляются из кеша. Pull Request #183 Pull Request #153
В интерфейсе администратора турнира добавлен пункт меню "View -> Server Info". На это странице выводится различная статистика работы сервера. Кроме того, на это странице расположена кнопка "Clear session cache", которая принудительно очищает кеш сессий и ключей API. Pull Request #182
На странице очереди тестирования (Testing Queue) поддерживается
возможность перезагрузки инвокера тестирования или компиляции.
Она доступна по ссылке [R]
столбца Ops. Инвокеры
тестирования или компиляции должны быть соответствующим
образом сконфигурированы.
Pull Request #177
На странице очереди тестирования отображается информация об инстансах компиляции. Pull Request #176
Для получения результатов компиляции от ej-compile в ej-contests используется единый каталог обмена. До этого у каждого турнира был свой каталог обмена. Аналогично, для получения результатов тестирования от ej-super-run в ej-contests используется единый каталог обмена. При большом количестве турниров, одновременно загруженных в память, это существенно экономит процессорное время. Pull Request #171
Для ожидания изменения состояния каталогов обмена используется
механизм inotify
вместо периодической проверки состояния.
Добавлен новый конфигурационный параметр задачи
checker_extra_files
.
Добавлен новый конфигурационный параметр задачи
copy_exe_to_tgzdir
.
Добавлен новый конфигурационный параметр задачи
extra_src_dir
.
В таблицу посылок добавлено поле last_change_us
,
которое хранит время последнего изменения записи о посылки
с микросекундной точностью. Это время обновляется, например,
при завершении тестирования, или при отправке на перетестирование,
то есть при каждом изменении в соответствующую запись в базе данных.
В списке посылок в административном интерфейсе можно выбрать для просмотра столбец "Last Change Time".
В информацию о посылках, возвращаемую по запросу
list-runs-json
, добавлены поля
last_change_id
и serial_id
.
В фильтре посылок доступно выражение last_change_us
,
которое возвращает 64-битное целое значение - время
последнего изменения записи о посылке в виде количества микросекунд,
прошедшего от 1970-01-01.
В фильтре посылок доступно выражение unow
,
которое возвращает текущее время в виде 64-битного числа:
количества микросекунд, прошедшего от 1970-01-01.
В некоторых случаях (но не всегда) при json-запросе на сервер в ответе используются статусы http, например, 503, если подключение к серверу невозможно.
Добавлен новый глобальный конфигурационный параметр
compile_server_id
.
Файлы external.xml, internal.xml не перегенерируются, если не было обновлений в таблице посылок.
Исправлена ошибка, из-за которой не работал параметр
autoupdate_standings = 0
(запрет автоматического
обновления таблицы результатов).
Поддерживается атрибут disable_autoupdate_standings
глобального
конфигурационного файла ejudge.xml. Если он установлен в true
,
во всех турнирах по умолчанию запрещено автоматическое обновление таблицы
результатов.
ej-page-gen
В Си-коде для .csp-страниц используется fwrite_unlocked
вместо fwrite
. Почему-то это привело к резкому увеличению
времени компиляции сгенерированного Си-кода.
ej-polygon
В запросах к серверу Polygon не устанавливается заголовок
Accept-Encoding:
. Ответ сервера в этом случае,
по всей видимости, не поддерживается библиотекой curl.
ej-suid-container
Улучшена поддержка ruby.
ej-super-run
Добавлена опция -rc
, позволяющая задать скрипт,
который будет выполняться при запросе на перезагрузку инстанса.
Для ожидания изменения состояния каталогов обмена используется
механизм inotify
вместо периодической проверки состояния.
Атрибут tests_passed
добавляется в отчет о
тестировании во всех типах турниров.
ej-super-server
На главную страницу со списком всех турниров добавлена кнопка
"View Editing Sessions". На странице просмотра сессий редактирования
можно посмотреть все сессии, в которых открыты на редактирование
турниры или тесты и при необходимости очистить эти сессии.
Таким образом решается проблема "залипших" сессий редактирования.
Для просмотра и очистки сессий необходимо глобальное полномочие
EDIT_CONTEST
.
Pull Request #184
Если у задачи не установлен параметр
enable_testlib_mode
,
то проверяющие программы на java не требуют библиотеки testlib for java,
а предполагаются автономными.
Поддерживаются проверяющие программы на golang.
.inf-файлы
Добавлен параметр check_cmd
. Он позволяет задать
проверяющую программу для данного теста.
Прочее
В каталог boot/openstack
добавлены скрипты,
которые можно использовать на виртуальных машинах в openstack.
Pull Request #181
В каталог исходных кодов скопирована библиотека run-time поддержки для flatbuf flatcc. В данный момент flatbuf используется для файлов статуса компиляции (compile heartbeat). Преимущество flatbuf над protobuf в том, что flatbuf не требует декодирования данных перед использованием, и можно работать с данными просто отображенными из файла в память. Pull Request #174