aboutsummaryrefslogtreecommitdiffstats
path: root/app/workers
diff options
context:
space:
mode:
authorRobert2017-08-22 18:07:13 +0200
committerRobert2017-08-22 18:07:13 +0200
commit038710b22ccf3dd2421ec8d07fae45ef05a47ada (patch)
tree68c0be569ac09e87ae6151803879ca52953b4a36 /app/workers
parent61c4a303183284fc107325aeeef5ace7a3e68c0c (diff)
downloadchouette-core-038710b22ccf3dd2421ec8d07fae45ef05a47ada.tar.bz2
Refs: 4273@5h; Still debugging zip file upload inside post to Rails api; Retry removed (but not the deadcode yet) [amend me]
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/workbench_import_worker.rb56
1 files changed, 24 insertions, 32 deletions
diff --git a/app/workers/workbench_import_worker.rb b/app/workers/workbench_import_worker.rb
index d06d4607c..325ff401d 100644
--- a/app/workers/workbench_import_worker.rb
+++ b/app/workers/workbench_import_worker.rb
@@ -3,15 +3,13 @@ class WorkbenchImportWorker
include Rails.application.routes.url_helpers
include Configurable
- RETRY_DELAYS = [3, 5, 8]
-
# Workers
# =======
def perform(import_id)
@workbench_import = WorkbenchImport.find(import_id)
@response = nil
- @workbench_import.update_attributes(status: 'running')
+ @workbench_import.update(status: 'running')
downloaded = download
zip_service = ZipService.new(downloaded)
upload zip_service
@@ -34,49 +32,38 @@ class WorkbenchImportWorker
params: params(eg_file, eg_name))
end
- def log_failure reason, count
- logger.warn "HTTP POST failed with #{reason}, count = #{count}, response=#{@response}"
- end
-
- def try_upload_entry_group eg_name, eg_file
- result = execute_post eg_name, eg_file
- return Result.ok(result) if result && result.status < 400
- Result.error(JSON.parse result.body)
- end
-
def upload zip_service
entry_group_streams = zip_service.subdirs
- @workbench_import.update_attributes total_steps: entry_group_streams.size
+ @workbench_import.update total_steps: entry_group_streams.size
entry_group_streams.each_with_index(&method(:upload_entry_group))
- rescue StopIteration
- @workbench_import.update_attributes( current_step: entry_group_streams.size, status: 'failed' )
+ rescue Exception => e
+ logger.error e.message
+ @workbench_import.update( current_step: entry_group_streams.size, status: 'failed' )
+ raise
end
def upload_entry_group entry_pair, element_count
- @workbench_import.update_attributes( current_step: element_count.succ )
- retry_service = RetryService.new(
- delays: RETRY_DELAYS,
- rescue_from: [HTTPService::Timeout],
- logger: logger,
- &method(:log_failure))
- status = retry_service.execute(&upload_entry_group_proc(entry_pair))
- raise StopIteration unless status.ok?
- end
-
- def upload_entry_group_proc entry_pair
+ @workbench_import.update( current_step: element_count.succ )
+ # status = retry_service.execute(&upload_entry_group_proc(entry_pair))
eg_name = entry_pair.name
eg_stream = entry_pair.stream
- eg_file = Tempfile.new("WorkbenchImport_#{eg_name}_#{$$}").tap do |file|
- eg_stream.read
+ eg_file = File.new(Rails.root.join('tmp', "WorkbenchImport_#{eg_name}_#{$$}.zip"), 'wb').tap do |file|
+ eg_stream.rewind
+ file.write eg_stream.read
end
eg_file.rewind
- -> do
- try_upload_entry_group(eg_name, eg_file)
+ result = execute_post eg_name, eg_file
+ if result && result.status < 400
+ result
+ else
+ raise StopIteration, result.body
end
+ ensure
+ eg_file.close rescue nil
+ eg_file.unlink rescue nil
end
-
# Queries
# =======
@@ -112,6 +99,11 @@ class WorkbenchImportWorker
end
def params file, name
+ if dest = ENV["DEBUG_TEMPFILE"]
+ require 'pry'
+ binding.pry
+ %x{unzip -oqq #{file.path} -d #{dest}}
+ end
{ netex_import:
{ referential_id: @workbench_import.referential_id,
workbench_id: @workbench_import.workbench_id,