mirror of
https://github.com/plashchynski/crono.git
synced 2026-04-23 17:28:45 +02:00
Use Mutex to synchronize access to Job's log
This commit is contained in:
@@ -15,6 +15,7 @@ module Crono
|
|||||||
self.performer, self.period = performer, period
|
self.performer, self.period = performer, period
|
||||||
self.job_log = StringIO.new
|
self.job_log = StringIO.new
|
||||||
self.job_logger = Logger.new(job_log)
|
self.job_logger = Logger.new(job_log)
|
||||||
|
@log_semaphore = Mutex.new
|
||||||
end
|
end
|
||||||
|
|
||||||
def next
|
def next
|
||||||
@@ -41,7 +42,12 @@ module Crono
|
|||||||
end
|
end
|
||||||
|
|
||||||
def save
|
def save
|
||||||
model.update(last_performed_at: last_performed_at)
|
log = model.reload.log || ""
|
||||||
|
@log_semaphore.synchronize do
|
||||||
|
log << job_log.string
|
||||||
|
job_log.truncate(job_log.rewind)
|
||||||
|
end
|
||||||
|
model.update(last_performed_at: last_performed_at, log: log)
|
||||||
end
|
end
|
||||||
|
|
||||||
def load
|
def load
|
||||||
@@ -50,8 +56,10 @@ module Crono
|
|||||||
|
|
||||||
private
|
private
|
||||||
def log(message)
|
def log(message)
|
||||||
logger.info message
|
@log_semaphore.synchronize do
|
||||||
job_logger.info message
|
logger.info message
|
||||||
|
job_logger.info message
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def model
|
def model
|
||||||
|
|||||||
@@ -45,6 +45,14 @@ describe Crono::Job do
|
|||||||
@crono_job = Crono::CronoJob.find_by(job_id: job.job_id)
|
@crono_job = Crono::CronoJob.find_by(job_id: job.job_id)
|
||||||
expect(@crono_job.last_performed_at.utc).to be_eql job.last_performed_at.utc
|
expect(@crono_job.last_performed_at.utc).to be_eql job.last_performed_at.utc
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should save and truncate job log" do
|
||||||
|
message = "test message"
|
||||||
|
job.send(:log, message)
|
||||||
|
job.save
|
||||||
|
expect(job.send(:model).reload.log).to include message
|
||||||
|
expect(job.job_log.string).to be_empty
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#load" do
|
describe "#load" do
|
||||||
|
|||||||
Reference in New Issue
Block a user