// queueIngest adds the id of a DPN Ingest WorkItem to NSQ and records info about // when the item was queued in WorkItem.QueuedAt, which is saved to Pharos. func (dpnQueue *DPNQueue) queueIngest(workItem *apt_models.WorkItem) { // Put the item into NSQ. First step for DPN ingest is DPNPackage. err := dpnQueue.Context.NSQClient.Enqueue( dpnQueue.Context.Config.DPN.DPNPackageWorker.NsqTopic, workItem.Id) if err != nil { dpnQueue.err("Error queueing DPNWorkItem %d for ingest: %v", workItem.Id, err) } else { // Let Pharos know this item has been queued utcNow := time.Now().UTC() workItem.QueuedAt = &utcNow resp := dpnQueue.Context.PharosClient.WorkItemSave(workItem) if resp.Error != nil { dpnQueue.err("Error updating WorkItem %d for ingest: %v", workItem.Id, resp.Error) return } workItem = resp.WorkItem() } }
func (reader *APTBucketReader) markAsQueued(workItem *models.WorkItem) *models.WorkItem { utcNow := time.Now().UTC() workItem.QueuedAt = &utcNow resp := reader.Context.PharosClient.WorkItemSave(workItem) if resp.Error != nil { errMsg := fmt.Sprintf("Error setting QueuedAt for WorkItem with id %d: %v", workItem.Id, resp.Error) reader.Context.MessageLog.Debug("%s", resp.Request.URL.String()) reader.Context.MessageLog.Error(errMsg) if reader.stats != nil { reader.stats.AddError(errMsg) } return nil } if resp.Response.StatusCode != 200 { reader.processPharosError(resp) return nil } if reader.stats != nil { reader.stats.AddWorkItem("WorkItemsMarkedAsQueued", workItem) } return resp.WorkItem() }