Bug #76

Session files are not thread safe.

Added by Paweł Widera almost 16 years ago. Updated almost 16 years ago.

Status:ClosedStart date:
Priority:NormalDue 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 about 16 years ago

  • Status changed from New to In Progress
Proposed solution:
  • 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
Application:
  • NewExperiment: DatasetManager (upload, unzip, extract)
  • MyExperiment: AnalysisManager (all actions)

#2 Updated by Anonymous almost 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

Also available in: Atom PDF