mirror of https://github.com/apache/cassandra
Fix broken rebase
This commit is contained in:
parent
a5c04842ab
commit
4c0be33ea0
|
|
@ -0,0 +1,25 @@
|
||||||
|
package org.apache.cassandra.metrics;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import com.yammer.metrics.Metrics;
|
||||||
|
import com.yammer.metrics.core.Counter;
|
||||||
|
import com.yammer.metrics.core.Gauge;
|
||||||
|
import com.yammer.metrics.core.Meter;
|
||||||
|
import com.yammer.metrics.core.MetricName;
|
||||||
|
import com.yammer.metrics.util.RatioGauge;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Metrics related to Read Repair.
|
||||||
|
*/
|
||||||
|
public class ReadRepairMetrics {
|
||||||
|
public static final String GROUP_NAME = "org.apache.cassandra.metrics";
|
||||||
|
public static final String TYPE_NAME = "ReadRepair";
|
||||||
|
|
||||||
|
public static final Meter repairedBlocking =
|
||||||
|
Metrics.newMeter(new MetricName(GROUP_NAME, TYPE_NAME, "RepairedBlocking"), "RepairedBlocking", TimeUnit.SECONDS);
|
||||||
|
public static final Meter repairedBackground =
|
||||||
|
Metrics.newMeter(new MetricName(GROUP_NAME, TYPE_NAME, "RepairedBackground"), "RepairedBackground", TimeUnit.SECONDS);
|
||||||
|
public static final Meter attempted =
|
||||||
|
Metrics.newMeter(new MetricName(GROUP_NAME, TYPE_NAME, "Attempted"), "Attempted", TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
@ -25,6 +25,7 @@ import org.apache.cassandra.concurrent.Stage;
|
||||||
import org.apache.cassandra.concurrent.StageManager;
|
import org.apache.cassandra.concurrent.StageManager;
|
||||||
import org.apache.cassandra.config.CFMetaData;
|
import org.apache.cassandra.config.CFMetaData;
|
||||||
import org.apache.cassandra.config.Schema;
|
import org.apache.cassandra.config.Schema;
|
||||||
|
import org.apache.cassandra.config.ReadRepairDecision;
|
||||||
import org.apache.cassandra.db.ColumnFamilyStore;
|
import org.apache.cassandra.db.ColumnFamilyStore;
|
||||||
import org.apache.cassandra.db.ConsistencyLevel;
|
import org.apache.cassandra.db.ConsistencyLevel;
|
||||||
import org.apache.cassandra.db.ReadCommand;
|
import org.apache.cassandra.db.ReadCommand;
|
||||||
|
|
@ -33,6 +34,7 @@ import org.apache.cassandra.db.Row;
|
||||||
import org.apache.cassandra.db.Table;
|
import org.apache.cassandra.db.Table;
|
||||||
import org.apache.cassandra.exceptions.ReadTimeoutException;
|
import org.apache.cassandra.exceptions.ReadTimeoutException;
|
||||||
import org.apache.cassandra.exceptions.UnavailableException;
|
import org.apache.cassandra.exceptions.UnavailableException;
|
||||||
|
import org.apache.cassandra.metrics.ReadRepairMetrics;
|
||||||
import org.apache.cassandra.net.MessageOut;
|
import org.apache.cassandra.net.MessageOut;
|
||||||
import org.apache.cassandra.net.MessagingService;
|
import org.apache.cassandra.net.MessagingService;
|
||||||
import org.apache.cassandra.service.StorageProxy.LocalReadRunnable;
|
import org.apache.cassandra.service.StorageProxy.LocalReadRunnable;
|
||||||
|
|
@ -125,7 +127,14 @@ public abstract class AbstractReadExecutor
|
||||||
Table table = Table.open(command.table);
|
Table table = Table.open(command.table);
|
||||||
List<InetAddress> allReplicas = StorageProxy.getLiveSortedEndpoints(table, command.key);
|
List<InetAddress> allReplicas = StorageProxy.getLiveSortedEndpoints(table, command.key);
|
||||||
CFMetaData metaData = Schema.instance.getCFMetaData(command.table, command.cfName);
|
CFMetaData metaData = Schema.instance.getCFMetaData(command.table, command.cfName);
|
||||||
List<InetAddress> queryTargets = consistency_level.filterForQuery(table, allReplicas, metaData.newReadRepairDecision());
|
|
||||||
|
ReadRepairDecision rrDecision = metaData.newReadRepairDecision();
|
||||||
|
|
||||||
|
if (rrDecision != ReadRepairDecision.NONE) {
|
||||||
|
ReadRepairMetrics.attempted.mark();
|
||||||
|
}
|
||||||
|
|
||||||
|
List<InetAddress> queryTargets = consistency_level.filterForQuery(table, allReplicas, rrDecision);
|
||||||
|
|
||||||
if (StorageService.instance.isClientMode())
|
if (StorageService.instance.isClientMode())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ import org.apache.cassandra.db.ReadCommand;
|
||||||
import org.apache.cassandra.db.Table;
|
import org.apache.cassandra.db.Table;
|
||||||
import org.apache.cassandra.exceptions.ReadTimeoutException;
|
import org.apache.cassandra.exceptions.ReadTimeoutException;
|
||||||
import org.apache.cassandra.exceptions.UnavailableException;
|
import org.apache.cassandra.exceptions.UnavailableException;
|
||||||
|
import org.apache.cassandra.metrics.ReadRepairMetrics;
|
||||||
import org.apache.cassandra.net.IAsyncCallback;
|
import org.apache.cassandra.net.IAsyncCallback;
|
||||||
import org.apache.cassandra.net.MessageIn;
|
import org.apache.cassandra.net.MessageIn;
|
||||||
import org.apache.cassandra.net.MessageOut;
|
import org.apache.cassandra.net.MessageOut;
|
||||||
|
|
@ -181,7 +182,9 @@ public class ReadCallback<TMessage, TResolved> implements IAsyncCallback<TMessag
|
||||||
|
|
||||||
if (logger.isDebugEnabled())
|
if (logger.isDebugEnabled())
|
||||||
logger.debug("Digest mismatch:", e);
|
logger.debug("Digest mismatch:", e);
|
||||||
|
|
||||||
|
ReadRepairMetrics.repairedBackground.mark();
|
||||||
|
|
||||||
ReadCommand readCommand = (ReadCommand) command;
|
ReadCommand readCommand = (ReadCommand) command;
|
||||||
final RowDataResolver repairResolver = new RowDataResolver(readCommand.table, readCommand.key, readCommand.filter());
|
final RowDataResolver repairResolver = new RowDataResolver(readCommand.table, readCommand.key, readCommand.filter());
|
||||||
AsyncRepairCallback repairHandler = new AsyncRepairCallback(repairResolver, endpoints.size());
|
AsyncRepairCallback repairHandler = new AsyncRepairCallback(repairResolver, endpoints.size());
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ import org.apache.cassandra.locator.AbstractReplicationStrategy;
|
||||||
import org.apache.cassandra.locator.IEndpointSnitch;
|
import org.apache.cassandra.locator.IEndpointSnitch;
|
||||||
import org.apache.cassandra.locator.TokenMetadata;
|
import org.apache.cassandra.locator.TokenMetadata;
|
||||||
import org.apache.cassandra.metrics.ClientRequestMetrics;
|
import org.apache.cassandra.metrics.ClientRequestMetrics;
|
||||||
|
import org.apache.cassandra.metrics.ReadRepairMetrics;
|
||||||
import org.apache.cassandra.net.*;
|
import org.apache.cassandra.net.*;
|
||||||
import org.apache.cassandra.service.paxos.*;
|
import org.apache.cassandra.service.paxos.*;
|
||||||
import org.apache.cassandra.tracing.Tracing;
|
import org.apache.cassandra.tracing.Tracing;
|
||||||
|
|
@ -1188,6 +1189,9 @@ public class StorageProxy implements StorageProxyMBean
|
||||||
catch (DigestMismatchException ex)
|
catch (DigestMismatchException ex)
|
||||||
{
|
{
|
||||||
logger.trace("Digest mismatch: {}", ex);
|
logger.trace("Digest mismatch: {}", ex);
|
||||||
|
|
||||||
|
ReadRepairMetrics.repairedBlocking.mark();
|
||||||
|
|
||||||
// Do a full data read to resolve the correct response (and repair node that need be)
|
// Do a full data read to resolve the correct response (and repair node that need be)
|
||||||
RowDataResolver resolver = new RowDataResolver(exec.command.table, exec.command.key, exec.command.filter());
|
RowDataResolver resolver = new RowDataResolver(exec.command.table, exec.command.key, exec.command.filter());
|
||||||
ReadCallback<ReadResponse, Row> repairHandler = exec.handler.withNewResolver(resolver);
|
ReadCallback<ReadResponse, Row> repairHandler = exec.handler.withNewResolver(resolver);
|
||||||
|
|
@ -1931,4 +1935,17 @@ public class StorageProxy implements StorageProxyMBean
|
||||||
public Long getTruncateRpcTimeout() { return DatabaseDescriptor.getTruncateRpcTimeout(); }
|
public Long getTruncateRpcTimeout() { return DatabaseDescriptor.getTruncateRpcTimeout(); }
|
||||||
public void setTruncateRpcTimeout(Long timeoutInMillis) { DatabaseDescriptor.setTruncateRpcTimeout(timeoutInMillis); }
|
public void setTruncateRpcTimeout(Long timeoutInMillis) { DatabaseDescriptor.setTruncateRpcTimeout(timeoutInMillis); }
|
||||||
public void reloadTriggerClass() { TriggerExecutor.instance.reloadClasses(); }
|
public void reloadTriggerClass() { TriggerExecutor.instance.reloadClasses(); }
|
||||||
|
|
||||||
|
|
||||||
|
public long getReadRepairAttempted() {
|
||||||
|
return ReadRepairMetrics.attempted.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getReadRepairRepairedBlocking() {
|
||||||
|
return ReadRepairMetrics.repairedBlocking.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getReadRepairRepairedBackground() {
|
||||||
|
return ReadRepairMetrics.repairedBackground.count();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,4 +90,8 @@ public interface StorageProxyMBean
|
||||||
public void setTruncateRpcTimeout(Long timeoutInMillis);
|
public void setTruncateRpcTimeout(Long timeoutInMillis);
|
||||||
|
|
||||||
public void reloadTriggerClass();
|
public void reloadTriggerClass();
|
||||||
|
|
||||||
|
public long getReadRepairAttempted();
|
||||||
|
public long getReadRepairRepairedBlocking();
|
||||||
|
public long getReadRepairRepairedBackground();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -665,6 +665,8 @@ public class NodeCmd
|
||||||
outs.printf(" Error retrieving file data for %s%n", host);
|
outs.printf(" Error retrieving file data for %s%n", host);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
outs.printf("Read Repair Statistics:%nAttempted: %d%nMismatch (Blocking): %d%nMismatch (Background): %d%n", probe.getReadRepairAttempted(), probe.getReadRepairRepairedBlocking(), probe.getReadRepairRepairedBackground());
|
||||||
|
|
||||||
MessagingServiceMBean ms = probe.msProxy;
|
MessagingServiceMBean ms = probe.msProxy;
|
||||||
outs.printf("%-25s", "Pool Name");
|
outs.printf("%-25s", "Pool Name");
|
||||||
|
|
|
||||||
|
|
@ -828,6 +828,21 @@ public class NodeProbe
|
||||||
{
|
{
|
||||||
return failed;
|
return failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getReadRepairAttempted()
|
||||||
|
{
|
||||||
|
return spProxy.getReadRepairAttempted();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getReadRepairRepairedBlocking()
|
||||||
|
{
|
||||||
|
return spProxy.getReadRepairRepairedBlocking();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getReadRepairRepairedBackground()
|
||||||
|
{
|
||||||
|
return spProxy.getReadRepairRepairedBackground();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ColumnFamilyStoreMBeanIterator implements Iterator<Map.Entry<String, ColumnFamilyStoreMBean>>
|
class ColumnFamilyStoreMBeanIterator implements Iterator<Map.Entry<String, ColumnFamilyStoreMBean>>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue