All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.astyanax.cql.JavaDriverConnectionPoolMonitorImpl Maven / Gradle / Ivy

package com.netflix.astyanax.cql;

import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;

import com.codahale.metrics.Counter;
import com.codahale.metrics.Gauge;
import com.codahale.metrics.Histogram;
import com.codahale.metrics.Meter;
import com.codahale.metrics.MetricRegistryListener;
import com.codahale.metrics.Timer;
import com.datastax.driver.core.Cluster;
import com.netflix.astyanax.connectionpool.ConnectionPoolMonitor;
import com.netflix.astyanax.connectionpool.Host;
import com.netflix.astyanax.connectionpool.HostConnectionPool;
import com.netflix.astyanax.connectionpool.HostStats;

public class JavaDriverConnectionPoolMonitorImpl implements ConnectionPoolMonitor {

	private final AtomicReference cluster = new AtomicReference();
	
	private MetricRegistryListener metricsRegListener = new MetricRegistryListener(){

		@Override
		public void onGaugeAdded(String name, Gauge gauge) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onGaugeRemoved(String name) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onCounterAdded(String name, Counter counter) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onCounterRemoved(String name) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onHistogramAdded(String name, Histogram histogram) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onHistogramRemoved(String name) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onMeterAdded(String name, Meter meter) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onMeterRemoved(String name) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTimerAdded(String name, Timer timer) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onTimerRemoved(String name) {
			// TODO Auto-generated method stub
			
		}};
	
	public JavaDriverConnectionPoolMonitorImpl() {	
	}
	
	public JavaDriverConnectionPoolMonitorImpl withJavaDriverMetricsRegistry(MetricRegistryListener metricsRegListener){
		this.metricsRegListener = metricsRegListener;
		return this;
	}
	
	public MetricRegistryListener getMetricsRegistryListener(){
		return metricsRegListener;
	}
	
    /**
     * Returns the number of Cassandra hosts currently known by the driver (that is 
     * whether they are currently considered up or down).
     *
     * @return the number of Cassandra hosts currently known by the driver.
     */
	@Override
	public long getHostCount() {
		return cluster.get().getMetrics().getKnownHosts().getValue();
	}

    /**
     * Returns the number of Cassandra hosts the driver is currently connected to
     * (that is have at least one connection opened to).
     *
     * @return the number of Cassandra hosts the driver is currently connected to.
     */
	@Override
	public long getHostActiveCount() {
		return cluster.get().getMetrics().getConnectedToHosts().getValue();
	}

    /**
     * Returns the total number of currently opened connections to Cassandra hosts.
     *
     * @return The total number of currently opened connections to Cassandra hosts.
     */
	public long getNumOpenConnections() {
		return cluster.get().getMetrics().getOpenConnections().getValue();
	}

    /**
     * Returns the number of connection to Cassandra nodes errors.
     * 

* This represents the number of times that a request to a Cassandra node * has failed due to a connection problem. This thus also corresponds to * how often the driver had to pick a fallback host for a request. *

* You can expect a few connection errors when a Cassandra node fails * (or is stopped) ,but if that number grows continuously you likely have * a problem. * * @return the number of connection to Cassandra nodes errors. */ @Override public long getConnectionCreateFailedCount() { return cluster.get().getMetrics().getErrorMetrics().getConnectionErrors().getCount(); } /** * Returns the number of write requests that returned a timeout (independently * of the final decision taken by the {@link com.datastax.driver.core.policies.RetryPolicy}). * * @return the number of write timeout. */ public long getWriteTimeouts() { return cluster.get().getMetrics().getErrorMetrics().getWriteTimeouts().getCount(); } /** * Returns the number of read requests that returned a timeout (independently * of the final decision taken by the {@link com.datastax.driver.core.policies.RetryPolicy}). * * @return the number of read timeout. */ public long getReadTimeouts() { return cluster.get().getMetrics().getErrorMetrics().getReadTimeouts().getCount(); } /** * Returns the number of requests that returned errors not accounted for by * another metric. This includes all types of invalid requests. * * @return the number of requests errors not accounted by another * metric. */ @Override public long getBadRequestCount() { return cluster.get().getMetrics().getErrorMetrics().getOthers().getCount(); } /** * Returns the number of requests that returned an unavailable exception * (independently of the final decision taken by the * {@link com.datastax.driver.core.policies.RetryPolicy}). * * @return the number of unavailable exceptions. */ @Override public long notFoundCount() { return cluster.get().getMetrics().getErrorMetrics().getUnavailables().getCount(); } /** * Returns the number of times a request was ignored * due to the {@link com.datastax.driver.core.policies.RetryPolicy}, for * example due to timeouts or unavailability. * * @return the number of times a request was ignored due to the * {@link com.datastax.driver.core.policies.RetryPolicy}. */ @Override public long getSocketTimeoutCount() { return cluster.get().getMetrics().getErrorMetrics().getIgnores().getCount(); } /** * Returns the number of times a request was retried due to the * {@link com.datastax.driver.core.policies.RetryPolicy}. * * @return the number of times a requests was retried due to the * {@link com.datastax.driver.core.policies.RetryPolicy}. */ @Override public long getUnknownErrorCount() { return cluster.get().getMetrics().getErrorMetrics().getRetries().getCount(); } @Override public void incOperationFailure(Host host, Exception reason) { // TODO Auto-generated method stub } @Override public long getOperationFailureCount() { // TODO Auto-generated method stub return 0; } @Override public void incFailover(Host host, Exception reason) { // TODO Auto-generated method stub } @Override public long getFailoverCount() { // TODO Auto-generated method stub return 0; } @Override public void incOperationSuccess(Host host, long latency) { // TODO Auto-generated method stub } @Override public long getOperationSuccessCount() { // TODO Auto-generated method stub return 0; } @Override public void incConnectionCreated(Host host) { // TODO Auto-generated method stub } @Override public long getConnectionCreatedCount() { // TODO Auto-generated method stub return 0; } @Override public void incConnectionClosed(Host host, Exception reason) { // TODO Auto-generated method stub } @Override public long getConnectionClosedCount() { // TODO Auto-generated method stub return 0; } @Override public void incConnectionCreateFailed(Host host, Exception reason) { // TODO Auto-generated method stub } @Override public void incConnectionBorrowed(Host host, long delay) { // TODO Auto-generated method stub } @Override public long getConnectionBorrowedCount() { // TODO Auto-generated method stub return 0; } @Override public long getConnectionReturnedCount() { return 0; } @Override public void incConnectionReturned(Host host) { // TODO Auto-generated method stub } @Override public long getPoolExhaustedTimeoutCount() { // TODO Auto-generated method stub return 0; } @Override public long getOperationTimeoutCount() { // TODO Auto-generated method stub return 0; } @Override public long getNoHostCount() { // TODO Auto-generated method stub return 0; } @Override public long getInterruptedCount() { // TODO Auto-generated method stub return 0; } @Override public long getTransportErrorCount() { // TODO Auto-generated method stub return 0; } @Override public long getHostAddedCount() { // TODO Auto-generated method stub return 0; } @Override public long getHostRemovedCount() { // TODO Auto-generated method stub return 0; } @Override public long getHostDownCount() { // TODO Auto-generated method stub return 0; } @Override public void onHostAdded(Host host, HostConnectionPool pool) { // TODO Auto-generated method stub } @Override public void onHostRemoved(Host host) { // TODO Auto-generated method stub } @Override public void onHostDown(Host host, Exception reason) { // TODO Auto-generated method stub } @Override public void onHostReactivated(Host host, HostConnectionPool pool) { // TODO Auto-generated method stub } @Override public Map getHostStats() { // TODO Auto-generated method stub return null; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy