@@ -126,7 +126,7 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
126
126
struct SBackgroundPersistArgs {
127
127
SBackgroundPersistArgs (core_t ::TTime time,
128
128
const model::CResourceMonitor::SModelSizeStats& modelSizeStats,
129
- const model::CInterimBucketCorrector& interimBucketCorrector,
129
+ model::CInterimBucketCorrector interimBucketCorrector,
130
130
const model::CHierarchicalResultsAggregator& aggregator,
131
131
core_t ::TTime latestRecordTime,
132
132
core_t ::TTime lastResultsTime,
@@ -146,12 +146,12 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
146
146
using TBackgroundPersistArgsPtr = std::shared_ptr<SBackgroundPersistArgs>;
147
147
148
148
public:
149
- CAnomalyJob (const std::string& jobId,
149
+ CAnomalyJob (std::string jobId,
150
150
model::CLimits& limits,
151
151
CAnomalyJobConfig& jobConfig,
152
152
model::CAnomalyDetectorModelConfig& modelConfig,
153
153
core::CJsonOutputStreamWrapper& outputBuffer,
154
- const TPersistCompleteFunc& persistCompleteFunc,
154
+ TPersistCompleteFunc persistCompleteFunc,
155
155
CPersistenceManager* persistenceManager,
156
156
core_t ::TTime maxQuantileInterval,
157
157
const std::string& timeFieldName,
@@ -265,7 +265,8 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
265
265
266
266
// ! This is the function that is called in a different thread to the
267
267
// ! main processing when background persistence is triggered.
268
- bool runBackgroundPersist (TBackgroundPersistArgsPtr args, core::CDataAdder& persister);
268
+ bool runBackgroundPersist (const TBackgroundPersistArgsPtr& args,
269
+ core::CDataAdder& persister);
269
270
270
271
// ! This function is called from the persistence manager when foreground persistence is triggered
271
272
bool runForegroundPersist (core::CDataAdder& persister);
@@ -331,9 +332,9 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
331
332
332
333
// ! Parses the time range in a control message assuming the time range follows after a
333
334
// ! single character code (e.g. starts with 'i10 20').
334
- bool parseTimeRangeInControlMessage (const std::string& controlMessage,
335
- core_t ::TTime& start,
336
- core_t ::TTime& end);
335
+ static bool parseTimeRangeInControlMessage (const std::string& controlMessage,
336
+ core_t ::TTime& start,
337
+ core_t ::TTime& end);
337
338
338
339
// ! Update equalizers if not interim and aggregate.
339
340
void updateAggregatorAndAggregate (bool isInterim, model::CHierarchicalResults& results);
@@ -375,24 +376,25 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
375
376
// ! Update configuration
376
377
void doForecast (const std::string& controlMessage);
377
378
378
- TAnomalyDetectorPtr
379
+ static TAnomalyDetectorPtr
379
380
makeDetector (const model::CAnomalyDetectorModelConfig& modelConfig,
380
381
model::CLimits& limits,
381
382
const std::string& partitionFieldValue,
382
383
core_t ::TTime firstTime,
383
384
const model::CAnomalyDetector::TModelFactoryCPtr& modelFactory);
384
385
385
386
// ! Populate detector keys from the anomaly job config.
386
- void populateDetectorKeys (const CAnomalyJobConfig& jobConfig, TKeyVec& keys);
387
+ static void populateDetectorKeys (const CAnomalyJobConfig& jobConfig, TKeyVec& keys);
387
388
388
389
// ! Extract the field called \p fieldName from \p dataRowFields.
389
- const std::string* fieldValue (const std::string& fieldName, const TStrStrUMap& dataRowFields);
390
+ static const std::string* fieldValue (const std::string& fieldName,
391
+ const TStrStrUMap& dataRowFields);
390
392
391
393
// ! Extract the required fields from \p dataRowFields
392
394
// ! and add the new record to \p detector
393
- void addRecord (const TAnomalyDetectorPtr detector,
394
- core_t ::TTime time,
395
- const TStrStrUMap& dataRowFields);
395
+ static void addRecord (const TAnomalyDetectorPtr& detector,
396
+ core_t ::TTime time,
397
+ const TStrStrUMap& dataRowFields);
396
398
397
399
// ! Parses a control message requesting that model state be persisted.
398
400
// ! Extracts optional arguments to be used for persistence.
@@ -420,12 +422,12 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
420
422
core_t ::TTime time,
421
423
const model::CSearchKey& key,
422
424
const std::string& partitionFieldValue,
423
- model::CResourceMonitor& resourceMonitor);
425
+ const model::CResourceMonitor& resourceMonitor);
424
426
425
427
// ! Prune all the models that exceed \p buckets in age
426
428
// ! A value of 0 for \buckets indicates that only 'obsolete' models will
427
429
// ! be pruned, i.e. those which are so old as to be effectively dead.
428
- void pruneAllModels (std::size_t buckets = 0 );
430
+ void pruneAllModels (std::size_t buckets = 0 ) const ;
429
431
430
432
private:
431
433
// ! The job ID
@@ -454,7 +456,7 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
454
456
model::CAnomalyDetectorModelConfig& m_ModelConfig;
455
457
456
458
// ! Keep count of how many records we've handled
457
- std::uint64_t m_NumRecordsHandled;
459
+ std::uint64_t m_NumRecordsHandled = 0 ;
458
460
459
461
// ! Detector keys.
460
462
TKeyVec m_DetectorKeys;
@@ -463,7 +465,7 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
463
465
TKeyAnomalyDetectorPtrUMap m_Detectors;
464
466
465
467
// ! The end time of the last bucket out of latency window we've seen
466
- core_t ::TTime m_LastFinalisedBucketEndTime;
468
+ core_t ::TTime m_LastFinalisedBucketEndTime = 0 ;
467
469
468
470
// ! Optional function to be called when persistence is complete
469
471
TPersistCompleteFunc m_PersistCompleteFunc;
@@ -486,10 +488,10 @@ class API_EXPORT CAnomalyJob : public CDataProcessor {
486
488
core_t ::TTime m_LastNormalizerPersistTime;
487
489
488
490
// ! Latest record time seen.
489
- core_t ::TTime m_LatestRecordTime;
491
+ core_t ::TTime m_LatestRecordTime = 0 ;
490
492
491
493
// ! Last time we sent a finalised result to the API.
492
- core_t ::TTime m_LastResultsTime;
494
+ core_t ::TTime m_LastResultsTime = 0 ;
493
495
494
496
// ! When the model state was restored was it entirely successful.
495
497
// ! Extra information about any errors that may have occurred
0 commit comments