Made article customer user creation thread safe.

This commit is contained in:
Thorsten Eckel 2015-07-24 12:08:54 +02:00
parent 29235acd90
commit befab460a5

View file

@ -1300,6 +1300,7 @@ module Import::OTRS
display_name = Mail::Field.new( 'X-From', display_name ).to_s display_name = Mail::Field.new( 'X-From', display_name ).to_s
roles = Role.lookup( name: 'Customer' ) roles = Role.lookup( name: 'Customer' )
begin
user = User.create( user = User.create(
login: email, login: email,
firstname: display_name, firstname: display_name,
@ -1311,6 +1312,15 @@ module Import::OTRS
updated_by_id: 1, updated_by_id: 1,
created_by_id: 1, created_by_id: 1,
) )
rescue ActiveRecord::RecordNotUnique
log "User #{email} was handled by another thread, taking this."
user = User.find_by( login: email )
if !user
log "User #{email} wasn't created sleep and retry."
sleep rand 3
retry
end
end
end end
article['created_by_id'] = user.id article['created_by_id'] = user.id