mirror of
https://github.com/bitwarden/server.git
synced 2025-02-18 02:11:22 +01:00
Retry quartz initialization (#1570)
This commit is contained in:
parent
d977d27d7d
commit
57dd6c7294
@ -15,6 +15,8 @@ namespace Bit.Core.Jobs
|
||||
{
|
||||
public abstract class BaseJobsHostedService : IHostedService, IDisposable
|
||||
{
|
||||
private const int MaximumJobRetries = 10;
|
||||
|
||||
private readonly IServiceProvider _serviceProvider;
|
||||
private readonly ILogger<JobListener> _listenerLogger;
|
||||
protected readonly ILogger _logger;
|
||||
@ -67,6 +69,11 @@ namespace Bit.Core.Jobs
|
||||
if (Jobs != null)
|
||||
{
|
||||
foreach (var (job, trigger) in Jobs)
|
||||
{
|
||||
for (var retry = 0; retry < MaximumJobRetries; retry++)
|
||||
{
|
||||
// There's a race condition when starting multiple containers simultaneously, retry until it succeeds..
|
||||
try
|
||||
{
|
||||
var dupeT = await _scheduler.GetTrigger(trigger.Key);
|
||||
if (dupeT != null)
|
||||
@ -85,6 +92,20 @@ namespace Bit.Core.Jobs
|
||||
}
|
||||
|
||||
await _scheduler.ScheduleJob(jobDetail, trigger);
|
||||
break;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (retry == MaximumJobRetries - 1)
|
||||
{
|
||||
throw new Exception("Job failed to start after 10 retries.");
|
||||
}
|
||||
|
||||
_logger.LogWarning($"Exception while trying to schedule job: {job.FullName}, {e}");
|
||||
var random = new Random();
|
||||
Thread.Sleep(random.Next(50, 250));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user