/// <summary> /// Removes a preparation job from the queue. /// </summary> /// <param name="primaerdatenAuftragId">Theprimary identifier for a job.</param> public async Task UnregisterJobFromPreparationQueue(int primaerdatenAuftragId) { var auftrag = await auftragAccess.GetPrimaerdatenAuftrag(primaerdatenAuftragId); if (auftrag != null) { // To make sure, that we don't have a race condition at the end of an Auftrag // We wait here a bit. In production the status changes for AuftragErledigt and ImCacheAbgelegt // were sometimes only a few miliseconds apart. Sometimes the AuftragErledigt before the ImCacheAbgelegt. await Task.Delay(5000); // Indem wir den Status auf erledigt stellen, ist der Auftrag abgearbeitet var logId = await auftragAccess.UpdateStatus(new PrimaerdatenAuftragLog { PrimaerdatenAuftragId = auftrag.PrimaerdatenAuftragId, Status = AufbereitungsStatusEnum.AuftragErledigt, Service = AufbereitungsServices.AssetService }); Log.Information("{METHOD} for VE {VEID} {STATUS}. AuftragId is {PrimaerdatenAuftragId}", nameof(UnregisterJobFromPreparationQueue), auftrag.VeId, logId > 0 ? "SUCCEEDED" : "FAILED", auftrag.PrimaerdatenAuftragId); } else { Log.Information("Did not find running job in table. Should have found a record for PrimaerdatenAuftrag with id of {archiveId}", primaerdatenAuftragId); } }