Class StatementMetricArray

java.lang.Object
com.espertech.esper.common.internal.metrics.stmtmetrics.StatementMetricArray

public class StatementMetricArray extends Object
Holder for statement group's statement metrics.

Changes to StatementMetric instances must be done in a read-lock:

 getRwLock.readLock.lock()
 metric = getAddMetric(index)
 metric.accountFor(cpu, wall, etc)
 getRwLock.readLock.unlock()
 

All other changes are done under write lock for this class.

This is a collection backed by an array that grows by 50% each time expanded, maintains a free/busy list of statement names, maintains an element number of last used element.

The flush operaton copies the complete array, thereby keeping array size. Statement names are only removed on the next flush.

  • Constructor Details

    • StatementMetricArray

      public StatementMetricArray(String runtimeURI, String name, int initialSize, boolean isReportInactive)
      Ctor.
      Parameters:
      runtimeURI - runtime URI
      name - name of statement group
      initialSize - initial size of array
      isReportInactive - true to indicate to report on inactive statements
  • Method Details

    • removeStatement

      public void removeStatement(DeploymentIdNamePair statement)
      Remove a statement.

      Next flush actually frees the slot that this statement occupied.

      Parameters:
      statement - to remove
    • addStatementGetIndex

      public int addStatementGetIndex(DeploymentIdNamePair statement)
      Adds a statement and returns the index added at.

      May reuse an empty slot, grow the underlying array, or append to the end.

      Parameters:
      statement - deployment-id and name pair
      Returns:
      index added to
    • flushMetrics

      public StatementMetric[] flushMetrics()
      Flushes the existing metrics via array copy and swap.

      May report all statements (empty and non-empty slots) and thereby null values.

      Returns null to indicate no reports to do.

      Returns:
      metrics
    • getRwLock

      public ManagedReadWriteLock getRwLock()
      Returns the read-write lock, for read-lock when modifications are made.
      Returns:
      lock
    • getAddMetric

      public StatementMetric getAddMetric(int index)
      Returns an existing or creates a new statement metric for the index.
      Parameters:
      index - of statement
      Returns:
      metric to modify under read lock
    • sizeLastElement

      public int sizeLastElement()
      Returns maximum collection size (last used element), which may not truely reflect the number of actual statements held as some slots may empty up when statements are removed.
      Returns:
      known maximum size
    • getName

      public String getName()
    • iterate

      public void iterate(Consumer<EPMetricsStatement> consumer)
    • isReportInactive

      public boolean isReportInactive()