InvalidationQueue types


I understand the description of each InvalidationQueue (e.g. BatchQueue, MapReduceQueue, …) but I’m still confused why for example normalization will create a NormalizationBatchJob, refresh analytics will create a RefreshAnalyticsBatchJob, hierarchy denormalization will create a HierarchyDenormBatchJob in batch queue.

What is the purpose of having Normalization, HierarchyDenorm, and AnalyticsQueue then if everything goes to the BatchQueue?



Some operations (e.g. stored calcs, normalization) require different strategies depending on the reason it is being performed. As an example, the NormalizationQueue is used for incremental normalization in response to data changes. However, when doing a bulk normalization, that is done as a batch job in the batch queue. The same thing is true in the other cases as well. So think of it this way. If an obj is changed in the db that requires stored calc, normalization, or analytic processing. The individual things that need to be invalidated are placed in their respective queues. When performing bulk operations (like refresh, Tag.rebuild, etc), it will most likely end up in the batch or mapReduce queue.

1 Like