Пример #1
0
// 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()
	}
}
Пример #2
0
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()
}