summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormr <mr@mrautenberg.de>2011-06-15 13:06:20 +0200
committermr <mr@mrautenberg.de>2011-06-15 13:06:20 +0200
commit6c43e8e019ca33b2b9fcad257d284b80b0b1fc57 (patch)
treeba3ab99eb3856728f12fcafb61e0b97ceab9ae46
parent916f715ee52049a0968bc04df5aa6ca0a9a6881d (diff)
hotfix qmrf sqlite
-rwxr-xr-xreach_reports/reach_application.rb14
-rwxr-xr-xreach_reports/reach_persistance.rb14
-rwxr-xr-xreach_reports/reach_service.rb20
3 files changed, 34 insertions, 14 deletions
diff --git a/reach_reports/reach_application.rb b/reach_reports/reach_application.rb
index cd0695c..9b45e8b 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/qmrfedit2/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..2dd687a 100755
--- a/reach_reports/reach_persistance.rb
+++ b/reach_reports/reach_persistance.rb
@@ -1202,11 +1202,13 @@ 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 0cf4172..1ec48e8 100755
--- a/reach_reports/reach_service.rb
+++ b/reach_reports/reach_service.rb
@@ -277,7 +277,9 @@ module ReachReports
end
task.progress(90) if task
- r.save
+ mysql_lite_retry do
+ r.save
+ end
task.progress(100) if task
end
@@ -292,14 +294,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