@@ -4,7 +4,7 @@ import { logger } from '../../../common/logger';
44import { config } from '../../../common/config' ;
55import { processWorkload } from '../../../scanner' ;
66import { sendWorkloadMetadata } from '../../../transmitter' ;
7- import { IWorkload } from '../../../transmitter/types' ;
7+ import { IWorkload , Telemetry } from '../../../transmitter/types' ;
88import { constructWorkloadMetadata } from '../../../transmitter/payload' ;
99import { buildMetadataForWorkload } from '../../metadata-extractor' ;
1010import { PodPhase } from '../types' ;
@@ -13,6 +13,13 @@ import { FALSY_WORKLOAD_NAME_MARKER } from './types';
1313import { WorkloadKind } from '../../types' ;
1414import { deleteWorkload } from './workload' ;
1515
16+ export interface ImagesToScanQueueData {
17+ workloadMetadata : IWorkload [ ] ;
18+ imageKeys : string [ ] ;
19+ /** The timestamp when this workload was added to the image scan queue. */
20+ enqueueTimestampMs : number ;
21+ }
22+
1623function deleteFailedKeysFromState ( keys ) : void {
1724 try {
1825 for ( const key of keys ) {
@@ -33,10 +40,19 @@ function deleteFailedKeysFromState(keys): void {
3340 }
3441}
3542
36- async function queueWorkerWorkloadScan ( task , callback ) : Promise < void > {
37- const { workloadMetadata, imageKeys } = task ;
43+ async function queueWorkerWorkloadScan (
44+ task : ImagesToScanQueueData ,
45+ callback ,
46+ ) : Promise < void > {
47+ const { workloadMetadata, imageKeys, enqueueTimestampMs } = task ;
48+ /** Represents how long this workload spent waiting in the queue to be processed. */
49+ const enqueueDurationMs = Date . now ( ) - enqueueTimestampMs ;
50+ const telemetry : Partial < Telemetry > = {
51+ enqueueDurationMs,
52+ queueSize : workloadsToScanQueue . length ( ) ,
53+ } ;
3854 try {
39- await processWorkload ( workloadMetadata ) ;
55+ await processWorkload ( workloadMetadata , telemetry ) ;
4056 } catch ( err ) {
4157 logger . error (
4258 { err, task } ,
@@ -46,7 +62,7 @@ async function queueWorkerWorkloadScan(task, callback): Promise<void> {
4662 }
4763}
4864
49- const workloadsToScanQueue = async . queue (
65+ const workloadsToScanQueue = async . queue < ImagesToScanQueueData > (
5066 queueWorkerWorkloadScan ,
5167 config . WORKLOADS_TO_SCAN_QUEUE_WORKER_COUNT ,
5268) ;
@@ -82,7 +98,11 @@ function handleReadyPod(workloadMetadata: IWorkload[]): void {
8298 }
8399
84100 if ( imagesToScan . length > 0 ) {
85- workloadsToScanQueue . push ( { workloadMetadata : imagesToScan , imageKeys } ) ;
101+ workloadsToScanQueue . push ( {
102+ workloadMetadata : imagesToScan ,
103+ imageKeys,
104+ enqueueTimestampMs : Date . now ( ) ,
105+ } ) ;
86106 }
87107}
88108
0 commit comments