Bug #76
Session files are not thread safe.
Status: | Closed | Start date: | ||
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | Anonymous | % Done: | 0% | |
Category: | ProCKSI | |||
Target version: | - | |||
Resolution: | fixed |
Description
When the user executes one long operation (e.g. upload of structures from a zip file) and before it is finished executes another one (e.g. extraction of chains), the state of the session file gets corrupted (not having a consisted state any more). That results in files on disk without the reference in the session and vice versa.
History
#1 Updated by Anonymous over 16 years ago
- Status changed from New to In Progress
- New action is executed
- Script with all its functionality is locked
- Temporary output page ("waiting"/"refresh") is displayed, which prevents the browser to loose the connection
- Script is daemonized into the background
- Errors/warnings/notices in the background are stored in the session
- After execution in the background has finished, the script with all functionality is unlocked
- When the user refreshes/redisplays the page, the updated information incl. errors/warnings/notices are displayed
- When the user starts a new action, all old errors/warnings/notice are cleared
- NewExperiment: DatasetManager (upload, unzip, extract)
- MyExperiment: AnalysisManager (all actions)
#2 Updated by Anonymous over 16 years ago
- Status changed from In Progress to Closed
- Resolution set to fixed
(In r690) f - Prepare/analyse big datasets (fixes #39 and #76):
* analysis.cgi
f - similar to dataset.cgi: send time consuming analysis process into background; show/refresh "waiting/processing" page in the foreground (browser)
* dataset.cgi
b - end backgrounding when errors have occurred
f - Scheduling from within the workbench and the command line:
* general in admin/ directory:
c - uses Messages objects for messages collection/output (fixes #4)
f - scheduling can be set into "full" or "secure" administration mode, whereas "secure" does not allow certain actions, e.g. cancel/delete a running task/request
* tasks.cgi
f - restart tasks that have finished with errors
f - cancel running tasks if administration mode is "full"
f - delete tasks is implemented but not available in the browser as it can delete the "chains" directory when deleting a "structures" or "contacts" task
c - createOutput() => addInputData()
* experiments.cgi
f - can potentially handle multiple experiments, thus experiment.cgi => experiments.cgi
f - delete experiment, which deletes all data and meta-data from disk and database and logs user automatically out as the user is only logged in for ONE experiment
* Scheduling/Tasks.pm
f - restart() sets status to "prepared" (P) and re-initialises the times
f - validates matrices when finishing a task and only registers valid ones into the database
e - CGI/Templates
first steps towards more/better reusable classes for CGI/Templating
c - CGI.pm => CGI/General.pm
f - TEST: CGI/Cache.pm, which allows caching HTML from templates to disk
f - TEST: CGI/Process.pm, which allows backgrounding processes, especially useful for big datasets.
BUGFIXES:
b - online.hmtl: incl. server name in link for "New Experiment" button
b - TypedVectorMatrix.pm: throw Exception::InvalidMatrix if target identity (first row, first column) is different from target-target comparison (first row, second column)
b - experiment|dataset|tasks.cgi: distinguish between 'execute' and 'cmd' actions
b - DaliLite: link to error files instead of linking to somewhere on the HTML page
b - MaxCMO: add raw results before sequence comparison in output
b - myexp.cgi: delete session before preparing output in logout()
b - FormSpecial.js: disable reference checkbox if all al other checkboxes are disabled
b - HTML: Phylipp => PHYLIP (fixes #83)
c - HTML: help (closes #84)
GENERATLISATION:
c - CONF_MAIN => CONF
c - CONF_SETTINGS => SETTINGS