Made article customer user creation thread safe.
This commit is contained in:
parent
29235acd90
commit
befab460a5
1 changed files with 21 additions and 11 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue