рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реВрдХреНрд╖реНрдо рдкреБрдирд░рд╛рд╡рд░реНрддреА рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ DisableConcurrentExecution(timeout:0)
(0 рдкреБрдирд░реНрдкреНрд░рдпрд╛рд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрджрд┐ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рдпрд╣ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ)ред
рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдХрд┐ "рдЫреЛрдбрд╝реЗ рдЧрдП" рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ failed
рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ SkipConcurrentExecutionAttribute
рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рд▓рдЧрднрдЧ DisableConcurrentExecutionAttribute
рд╕рдорд╛рди рд╣реЛрдЧрд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдХрд┐ рдпрд╣ рд▓реЙрдХ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЛрд╢рд┐рд╢/рдкрдХрдбрд╝ рд▓реЗрдЧрд╛, рдФрд░ DistributedLockTimeoutException
рдирд┐рдЧрд▓ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдиреМрдХрд░реА рдХреЛ DeletedState
рд╕реЗрдЯ рдХрд░ рджреЗрдЧрд╛ред
рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ GetResource() рдирд┐рдЬреА рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдиреНрдп рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд╣реИрдВред
$"{job.Type.ToGenericTypeString()}.{job.Method.Name}"
рдЧреИрд░-рд╡рд┐рд░реЛрдзреА рд╡рд┐рддрд░рд┐рдд рд▓реЙрдХ рдирд╛рдо рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред
рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ lib рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдиреМрдХрд░реА рдХреЗ рд╡рд┐рддрд░рд┐рдд рд▓реЙрдХ рдирд╛рдо рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ?
cf., https://discuss.hangfire.io/t/disableconcurentexecution-for-job-groups/1389/4
рдореИрдВрдиреЗ рдЕрднреА рджреЗрдЦрд╛ рд╣реИ рдХрд┐ filterContext.BackgroundJob.Job.ToString()
рдЖрдВрддрд░рд┐рдХ TypeExtensions.cs рдФрд░ DisableConcurrentExecutionAttribute.cs (рдкреБрдирдГ) рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреЗрдЧрд╛ ... рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИред
@dgaspar , рдЖрдк рдЖрд╡рд░реНрддреА рдЬреЙрдм рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЕрдЧрд▓реА рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдиреМрдХрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдкрд┐рдЫрд▓рд╛ рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдХреГрдкрдпрд╛ рдпрд╣ рд╕рд╛рд░ рджреЗрдЦреЗрдВ: https://gist.github.com/odinserj/a6ad7ba6686076c9b9b2e03fcf6bf74eред
@odinserj рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрджрд┐ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ "рдЪрд▓ рд░рд╣реА" рдкрдВрдХреНрддрд┐ рд╣реИрд╢ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд░рд╣реЗрдЧреАред рдХреНрдпрд╛ рдпрд╣ рдХрд╛рд░реНрдп рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реЗрдбреНрдпреВрд▓ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХреЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдореИрдВ рдЙрд╕ рдкрдВрдХреНрддрд┐ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рдЯрд╛ рдирд╣реАрдВ рджреЗрддрд╛? рдпрд╛ рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдкреНрддрд┐/рд╕рдлрд╛рдИ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдпрд╛рдж рдЖ рд░рд╣реА рд╣реИ? (рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдореИрдВ new SqlServerStorageOptions { SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5) }
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ)
рдЬрдм рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрд╕ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рд╕рдВрджреЗрд╢ рдХрддрд╛рд░реЗрдВ рд▓реЗрди-рджреЗрди рд╡рд╛рд▓реА рд╣реЛрддреА рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡рд╛рд▓реЗ, рдЕрдиреНрдп рднрдВрдбрд╛рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрд╕реА рддрд░рд╣ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@dgaspar , рдЖрдк рдЖрд╡рд░реНрддреА рдЬреЙрдм рд╢реЗрдбреНрдпреВрд▓рд░ рдХреЛ рдЕрдЧрд▓реА рдмрд╛рд░-рдмрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдиреМрдХрд░реА рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдм рдкрд┐рдЫрд▓рд╛ рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реЛ, рддреЛ рдХреГрдкрдпрд╛ рдпрд╣ рд╕рд╛рд░ рджреЗрдЦреЗрдВ: https://gist.github.com/odinserj/a6ad7ba6686076c9b9b2e03fcf6bf74eред