A+ v1.17 Release Notes
November 2022 (GitHub milestone)
A+ v1.17.0
- A+ v1.17.0
- MOOC-Grader v1.17.0
- Git Manager v1.17.0 (see also newer patches)
- a-plus-rst-tools v1.5.1
New features
- Automatic retries of incomplete grading jobs: A+ tries to detect submissions that seem to be stuck in grading, in other words, submissions that haven’t received the grading results from the assessment service. Those submissions are periodically automatically uploaded to grading again. (#988)
- When the teacher creates or modifies A+ course news items (that are shown in the course front page), the message may also be emailed to the course participants. (#377)
- Added support for MathJax.js v3. The built-in JavaScript in A+ does not crash any longer if the course materials include MathJax.js v3 for rendering mathematics. MathJax.js v2 is still supported as well. (#871)
Minor changes:
- Changed the logic for selecting the latest course instance in the course redirect address, for example, https://plus.cs.aalto.fi/o1/. It now prefers course instances that have started and contain open course modules. Previously, it could select empty course instances long before they were intended to open. (#919)
- Increased the size of the buttons in the chapter assignment frame, e.g., the “show model solution” button. The buttons have been too hard to notice according to some users. (#856)
- Added new HTML classes to the chapter assignment navbar components. This is useful to courses that want to change the CSS styles in their own code. See details in the git commit.
- Changed the wording in the message after making a submission. It is now “Your submission has been received” instead of “Your submission has been accepted for grading.”
- If the user can see hidden course instances, then the hidden instances are clearly labeled in the A+ course archive page (https://plus.cs.aalto.fi/archive/). (#727)
- In the submission inspect view, the submission details modal dialogue shows more metadata about the submission, e.g., the time when the grading results were received. (#614)
Bug fixes:
- When delayed feedback is used in file upload assignments, the (feedback) modal dialogue after making a submission no longer shows another active submission form with a submit button. (#935)
- Enrollment questionnaires are not affected by the module opening time. They are now only affected by the course enrollment time setting and not by the module opening and closing times. (#679)
- Fixed window scroll positioning in chapter assignment anchor links. The window used to land outside the targeted assignment depending on how long the assignment descriptions were in the chapter. (#1028)
- Fixed chapter exercise feedback modal missing focus after the duplicate submission modal had been shown. (#1093)
- Fixed a crash in the duplicate submission check when the submission form included optional file fields. (#1095)
- Fixed the student group selection in the edit submitters view under the inspect submission view. The group selection used to target different users than what was shown in the table. (#1091)
- In forms that contain (user) search-select widgets, the selected users are not wiped out if the form submission fails to validation errors. (#998)
- In forms that contain (user) search-select widgets, the label of the input is correctly connected to the input in the HTML markup. This supports accessibility and usability. (#934)
For system administrators and developers:
- There are new settings to control the automatic retries of incomplete grading jobs.
SUBMISSION_EXPIRY_TIMEOUT = 30 * 60
- Number of seconds after which a submission can be resent to grader, if not completed.
If set to
None
, retries are disabled.
- Number of seconds after which a submission can be resent to grader, if not completed.
If set to
SUBMISSION_RETRY_SERVICES = []
- List of services with automatic grading where retries are allowed. Network location is sufficient, e.g. “localhost:8080” or “grader.cs.aalto.fi”.
GRADER_STABLE_THRESHOLD = 5
- Number of unresponded retries beyond which we move to recovery state.
In recovery state there likely is more persistent problem with the grader or network that needs fixing.
In recovery state A+ periodically probes the state of the grader,
sending only one grading request out every
SUBMISSION_EXPIRY_TIMEOUT
seconds. We do not want to congest the potentially broken system unnecessarily with several requests in this case.
- Number of unresponded retries beyond which we move to recovery state.
In recovery state there likely is more persistent problem with the grader or network that needs fixing.
In recovery state A+ periodically probes the state of the grader,
sending only one grading request out every
Git Manager v1.17.0
This release focuses on improving slow course build times. Gitmanager v1.17.0 is also compatible with A-plus v1.16.3 and MOOC-Grader v1.16.0.
Changes
- Enabled multiple concurrent course build jobs.
(#21)
- Previously, only one build job could be running in the system at a time. Now, multiple course instances may have build jobs running concurrently. One course instance may have at most one build job running.
- Added option to specify exclude patterns for git clean.
- New option
exclude_patterns
in apps.meta under the course git repo. - Matched files are not removed during the clean at the start of a build.
- For example,
exclude_patterns = _build exercises
lists two separate directories,_build
andexercises
. - This may be used to avoid deleting some of the previously built output files if their removal is time consuming.
- New option
- Added option to build directly in the course publish directory.
- Option “skip build failsafes” in the Git manager course instance settings.
- When enabled, the recovery functionality does not work anymore: if the course build breaks something, the course will be broken until it is fixed with a new build.
- Graders are configured during the aplus-json request (course import in the A+ frontend): every time someone clicks “apply” under the A+ Edit course section, the grader is configured again.
- This mode speeds up the build time because there is no need to copy files between directories, and the grader is only configured during the aplus-json request.
- It is not recommended to import the course in the A+ frontend (that is, send the aplus-json request) while a course is building in the gitmanager if this option is enabled. Since the build directly modifies the publish directory, the results of aplus-json become unpredictable during a running build.
For system administrators
- Added Django manage.py command for flushing the Huey storage:
manage.py flush_huey
- Huey is the framework used for asynchronous task queue.
- Huey stores a lock for the course build job so that multiple builds are not started concurrently.
- If a course build is killed abrutly, the lock may stay in the storage and prevent new builds from starting.
- The command is used to flush build job locks from the storage, which allows new builds to start when the locks have become stuck.
- This should be only rarely needed.
- If the new option “skip build failsafes” is used,
it may be necessary to modify the build script
in order to enable mounting the publish directory (setting
COURSES_PATH
) to the build container. Normally, the build is run in the separate build directory (BUILD_PATH
) and not directly under the publish directory. The build script is defined with the settingBUILD_MODULE
. It may be used to change the default scriptscripts/docker_build.py
.
Git Manager v1.17.2 patch
Git tag: Git Manager v1.17.2
Fixed failures in accessing the course during a running course build in the end of the build publish stage.
If the course includes or creates hundreds of files in the build, the course used to become temporarily broken at the end of the course build while temporary files were being removed. This has been fixed so that the previous course build is available until the new course build has been finished and the Gitmanager course cache has been updated.
This issue affected mainly complex course implementations such as the Aalto Programming 1 (O1) course.
For developers
Added support for the LTI parameters in MOOC-Grader v1.16.1. Gitmanager exports the configured LTI settings in the aplus-json output for MOOC-Grader assignments so that the A+ front sets those assignments as LTI assignments.
A+ v1.17.1 patch
Git tag: A+ v1.17.1
Fixed major defects in the new feature “automatic retries of incomplete grading jobs” that was added in v1.17.0.