Group Items in ActionQueue by Type Name or ID

Is there a way to get a report of any Invalidation Queue that shows the number of pending and computing actions per target type name or target type ID?

For example, I want to get a report of the ActionQueue that tells me how many pending actions, computing actions and computing entries exist on a per target type name or target type ID basis.

Thanks.

Hey @wonga,

There’s built in API for this, but there is an internal ticket requesting more input parameters to the Cluster.actionDump(). In the mean time, you can write a little script to run in static/console to generate the details you’re looking for. Not sure exactly what your use case is, but this is hopefully a starting point:

dump = Cluster.actionDump("c3","c3",true)
importantActions = [];

dump.forEach(function(action){
  if (action.target == "c3/c3/MapReduceQueue?action=dispatchCompute"){
    if (!action.child.child.target.includes('JSMapReduceJob')){
      importantActions.push(action)
    }
  }
})
c3Grid(importantActions)

Also, c3QReport(ActionQueue) should give you the number of pending actions by targetTypeId. For computing actions, you can use what Columbus have provided.

@venkata.paruchuri & @ColumbusL

Thanks for the information. The use case is to determine whether certain actions taken on the cluster are impacting other higher priority items / jobs.

For instance, we receive near real time interval data in a timely manner from the source system, but we find that we are quite behind on data loads from that source system (expectation is 1 hour lag, but reality is more like 5 to 7 hour lag). This impacts some of our use cases for near real time customer data presentment.

So the goal is to better understand where the cluster’s resources are being used and make a determination as to what we can prioritize to strike a balance between timely data loads and processing of jobs on the cluster.

I think c3QReport(ActionQueue) is the best tool here, since you’re interested in the queue load, not just what is currently computing.

@wonga I think combination of C3QReport(), InvalidationQueue.countAll() and Cluster.actionDump() should give you a better picture of what the cluster is doing.

InvalidationQueue.countAll() gives you a high level picture of how many messages each queue has. Then you can drill into each individual queue to see what actions/jobs are running and their priorities using c3QReport(). Cluster.actionDump() gives you details of all the running actions and you can examine if there are any long running actions and so on.