diff options
author | mguetlein <martin.guetlein@gmail.com> | 2011-05-31 20:17:01 +0200 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2011-05-31 20:17:01 +0200 |
commit | 43e211e2765ea3e929d6e146a11cdd8d5f87df30 (patch) | |
tree | daa589d1bda79afe73a780f6d437d7ccd602a01c | |
parent | 9bec29d07a797090982e831a774c3aae532a9e9e (diff) |
retry hack for mysql lite
-rwxr-xr-x | reach_reports/reach_application.rb | 14 | ||||
-rwxr-xr-x | reach_reports/reach_persistance.rb | 15 | ||||
-rwxr-xr-x | reach_reports/reach_service.rb | 21 |
3 files changed, 35 insertions, 15 deletions
diff --git a/reach_reports/reach_application.rb b/reach_reports/reach_application.rb index c3d6fbd..d914452 100755 --- a/reach_reports/reach_application.rb +++ b/reach_reports/reach_application.rb @@ -5,6 +5,20 @@ end QMRF_EDITOR_URI = "http://ortona.informatik.uni-freiburg.de/qmrfedit/OT_QMRFEditor.jnlp" +# hack for as long as mysql lite is used +def mysql_lite_retry( n_times=15 ) + n_times.times do + begin + yield + return + rescue => ex + LOGGER.warn "datamapper error, wait and retry : "+ex.message + sleep(1+rand(3)) # wait 1-3 seconds + end + end + yield # try a last time +end + require 'reach_reports/reach_persistance.rb' require 'reach_reports/reach_service.rb' diff --git a/reach_reports/reach_persistance.rb b/reach_reports/reach_persistance.rb index b90778b..147ee84 100755 --- a/reach_reports/reach_persistance.rb +++ b/reach_reports/reach_persistance.rb @@ -1202,11 +1202,14 @@ module ReachReports # end # end - [ QsarSoftware, QsarIdentifier, QmrfAuthor, ModelAuthor, Reference, QsarGeneralInformation, ModelEndpoint, QsarEndpoint, AlgorithmExplicit, - AlgorithmsDescriptor, DescriptorsGenerationSoftware, QsarAlgorithm, AppDomainSoftware, QsarApplicabilityDomain, TrainingSetData, - QsarRobustness, ValidationSetData, QsarPredictivity, QsarInterpretation, Bibliography, AttachmentTrainingData, AttachmentValidationData, - AttachmentDocument, QsarMiscellaneous, QmrfSummary, QmrfReport ].each do |model| - model.auto_upgrade! - model.raise_on_save_failure = true + mysql_lite_retry do + [ QsarSoftware, QsarIdentifier, QmrfAuthor, ModelAuthor, Reference, QsarGeneralInformation, ModelEndpoint, QsarEndpoint, AlgorithmExplicit, + AlgorithmsDescriptor, DescriptorsGenerationSoftware, QsarAlgorithm, AppDomainSoftware, QsarApplicabilityDomain, TrainingSetData, + QsarRobustness, ValidationSetData, QsarPredictivity, QsarInterpretation, Bibliography, AttachmentTrainingData, AttachmentValidationData, + AttachmentDocument, QsarMiscellaneous, QmrfSummary, QmrfReport ].each do |model| + model.auto_upgrade! + model.raise_on_save_failure = true + end end + end
\ No newline at end of file diff --git a/reach_reports/reach_service.rb b/reach_reports/reach_service.rb index b6c6350..916a7a4 100755 --- a/reach_reports/reach_service.rb +++ b/reach_reports/reach_service.rb @@ -279,8 +279,9 @@ module ReachReports end end task.progress(90) if task - - r.save + mysql_lite_retry do + r.save + end task.progress(100) if task end @@ -295,14 +296,16 @@ module ReachReports # end def self.get_report(type, id) - - case type - when /(?i)QMRF/ - report = ReachReports::QmrfReport.get(id) - when /(?i)QPRF/ - report = ReachReports::QprfReport.get(id) + report = nil + mysql_lite_retry(3) do + case type + when /(?i)QMRF/ + report = ReachReports::QmrfReport.get(id) + when /(?i)QPRF/ + report = ReachReports::QprfReport.get(id) + end + raise OpenTox::NotFoundError.new type+" report with id '#{id}' not found." unless report end - raise OpenTox::NotFoundError.new type+" report with id '#{id}' not found." unless report return report end |