/** * Copyright (C) 2014-2016 LinkedIn Corp. (pinot-core@linkedin.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.linkedin.pinot.transport.metrics; import com.linkedin.pinot.common.metrics.LatencyMetric; import com.linkedin.pinot.transport.pool.AsyncPool; import com.yammer.metrics.core.Sampling; import com.yammer.metrics.core.Summarizable; public interface PoolStats<T extends Sampling & Summarizable> { /** * Get the total number of pool objects created between * the starting of the Pool and the call to getStats(). * Does not include create errors. * @return The total number of pool objects created */ int getTotalCreated(); /** * Get the total number of pool objects destroyed between * the starting of the Pool and the call to getStats(). * Includes lifecycle validation failures, disposes, * and timed-out objects, but does not include destroy errors. * @return The total number of pool objects destroyed */ int getTotalDestroyed(); /** * Get the total number of lifecycle create errors between * the starting of the Pool and the call to getStats(). * @return The total number of create errors */ int getTotalCreateErrors(); /** * Get the total number of lifecycle destroy errors between * the starting of the Pool and the call to getStats(). * @return The total number of destroy errors */ int getTotalDestroyErrors(); /** * Get the total number of pool objects destroyed (or failed to * to destroy because of an error) because of disposes or failed * lifecycle validations between the starting of the Pool * and the call to getStats(). * @return The total number of destroyed "bad" objects */ int getTotalBadDestroyed(); /** * Get the total number of timed out pool objects between the * starting of the Pool and the call to getStats(). * @return The total number of timed out objects */ int getTotalTimedOut(); /** * Get the number of pool objects checked out at the time of * the call to getStats(). * @return The number of checked out pool objects */ int getCheckedOut(); /** * Get the configured maximum pool size. * @return The maximum pool size */ int getMaxPoolSize(); /** * Get the configured minimum pool size. * @return The minimum pool size */ int getMinPoolSize(); /** * Get the pool size at the time of the call to getStats(). * @return The pool size */ int getPoolSize(); /** * Get the maximum number of checked out objects. Reset * after each call to getStats(). * @return The maximum number of checked out objects */ int getSampleMaxCheckedOut(); /** * Get the maximum pool size. Reset after each call to * getStats(). * @return The maximum pool size */ int getSampleMaxPoolSize(); /** * Get the number of objects that are idle(not checked out) * in the pool. * @return The number of idle objects */ int getIdleCount(); /** * Get the wait time to get pooled object * @return */ LatencyMetric<T> getWaitTime(); /** * Get stats collected from {@link AsyncPool.Lifecycle} * @return Lifecycle stats */ LifecycleStats<T> getLifecycleStats(); /** * Return a string which represents the pool stats */ @Override String toString(); /** * Refresh stats */ void refresh(); public class LifecycleStats<T extends Sampling & Summarizable> { private final LatencyMetric<T> _latencyMetric; public LifecycleStats(LatencyMetric<T> metric) { _latencyMetric = metric; } /** * Get latency metric for creating resources * @return */ public LatencyMetric<T> getCreateTime() { return _latencyMetric; } @Override public String toString() { return "LifecycleStats [_latencyMetric=" + _latencyMetric + "]"; } } }