Fixes #895, Closes #3252 - OTRS import control on thread, offset and limit.

This commit is contained in:
Thorsten Eckel 2020-10-22 15:38:34 +02:00
parent 66c0c4f513
commit 0c15baee7f

View file

@ -29,7 +29,15 @@ module Import
extend Import::OTRS::Diff
extend self
def start
# Start import with specific parameters.
# Useful for debug and continuing from breakpoint of last not success import
#
# @example
# Import::OTRS::start() - Nomrmal usage
#
# Import::OTRS::start(thread: 1, offset: 1000) - Run the task in Single-Thread and start from offset 1000
def start(args = {})
log 'Start import...'
checks
@ -42,7 +50,7 @@ module Import
customer_user
threaded_import('Ticket')
threaded_import('Ticket', args)
true
end
@ -72,8 +80,9 @@ module Import
end
def threaded_import(remote_object, args = {})
thread_count = args[:threads] || 8
limit = args[:limit] || 20
thread_count = args[:threads] || 8
limit = args[:limit] || 20
start_offset_base = args[:offset] || 0
Thread.abort_on_exception = true
threads = {}
@ -94,7 +103,7 @@ module Import
# get the offset for the current thread and loop count
thread_offset_base = (Thread.current[:thread_no] - 1) * limit
thread_step = thread_count * limit
offset = Thread.current[:loop_count] * thread_step + thread_offset_base
offset = Thread.current[:loop_count] * thread_step + thread_offset_base + start_offset_base
break if !imported?(
remote_object: remote_object,