Fixes issue ##2504 - Login into Zammad not possible, application server puma will raise 100% or more cpu.

This commit is contained in:
Martin Edenhofer 2019-03-05 03:52:54 +01:00
parent 909f4b7eaf
commit cdb4042961

View file

@ -281,6 +281,10 @@ returns
file.provider file.provider
end end
def self.semaphore
@semaphore ||= Mutex.new
end
private private
def image_resize(content, width) def image_resize(content, width)
@ -295,6 +299,9 @@ returns
temp_file.binmode temp_file.binmode
temp_file.write(content) temp_file.write(content)
temp_file.close temp_file.close
temp_file_resize = nil
self.class.semaphore.synchronize do
image = Rszr::Image.load(temp_file.path) image = Rszr::Image.load(temp_file.path)
# do not resize image if image is smaller or already same size # do not resize image if image is smaller or already same size
@ -308,6 +315,9 @@ returns
image.resize!(width, :auto) image.resize!(width, :auto)
temp_file_resize = ::Tempfile.new.path temp_file_resize = ::Tempfile.new.path
image.save(temp_file_resize) image.save(temp_file_resize)
image.send(:handle).finalize!
end
image_resized = ::File.binread(temp_file_resize) image_resized = ::File.binread(temp_file_resize)
Cache.write(cache_key, image_resized, { expires_in: 6.months }) Cache.write(cache_key, image_resized, { expires_in: 6.months })