summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-31 20:17:01 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-31 20:17:01 +0200
commit43e211e2765ea3e929d6e146a11cdd8d5f87df30 (patch)
treedaa589d1bda79afe73a780f6d437d7ccd602a01c
parent9bec29d07a797090982e831a774c3aae532a9e9e (diff)
retry hack for mysql lite
-rwxr-xr-xreach_reports/reach_application.rb14
-rwxr-xr-xreach_reports/reach_persistance.rb15
-rwxr-xr-xreach_reports/reach_service.rb21
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