Rework CommitLog
This commit is contained in:
parent
e55863e375
commit
1470b37193
@ -23,7 +23,6 @@
|
||||
package org.apache.cassandra.db.commitlog;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
@ -31,48 +30,31 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
|
||||
import org.apache.cassandra.metrics.CommitLogMetrics;
|
||||
|
||||
import com.scylladb.jmx.api.APIClient;
|
||||
import com.scylladb.jmx.metrics.MetricsMBean;
|
||||
|
||||
/*
|
||||
* Commit Log tracks every write operation into the system. The aim of the commit log is to be able to
|
||||
* successfully recover data that was not stored to disk via the Memtable.
|
||||
*/
|
||||
public class CommitLog implements CommitLogMBean {
|
||||
|
||||
CommitLogMetrics metrics = new CommitLogMetrics();
|
||||
public class CommitLog extends MetricsMBean implements CommitLogMBean {
|
||||
private static final java.util.logging.Logger logger = java.util.logging.Logger
|
||||
.getLogger(CommitLog.class.getName());
|
||||
|
||||
private APIClient c = new APIClient();
|
||||
|
||||
public void log(String str) {
|
||||
logger.finest(str);
|
||||
}
|
||||
|
||||
private static final CommitLog instance = new CommitLog();
|
||||
|
||||
public static CommitLog getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
private CommitLog() {
|
||||
MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
|
||||
try {
|
||||
mbs.registerMBean(this,
|
||||
new ObjectName("org.apache.cassandra.db:type=Commitlog"));
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
public CommitLog(APIClient client) {
|
||||
super("org.apache.cassandra.db:type=Commitlog", client, new CommitLogMetrics());
|
||||
}
|
||||
|
||||
/**
|
||||
* Recover a single file.
|
||||
*/
|
||||
@Override
|
||||
public void recover(String path) throws IOException {
|
||||
log(" recover(String path) throws IOException");
|
||||
}
|
||||
@ -81,9 +63,10 @@ public class CommitLog implements CommitLogMBean {
|
||||
* @return file names (not full paths) of active commit log segments
|
||||
* (segments containing unflushed data)
|
||||
*/
|
||||
@Override
|
||||
public List<String> getActiveSegmentNames() {
|
||||
log(" getActiveSegmentNames()");
|
||||
List<String> lst = c.getListStrValue("/commitlog/segments/active");
|
||||
List<String> lst = client.getListStrValue("/commitlog/segments/active");
|
||||
Set<String> set = new HashSet<String>();
|
||||
for (String l : lst) {
|
||||
String name = l.substring(l.lastIndexOf("/") + 1, l.length());
|
||||
@ -96,9 +79,10 @@ public class CommitLog implements CommitLogMBean {
|
||||
* @return Files which are pending for archival attempt. Does NOT include
|
||||
* failed archive attempts.
|
||||
*/
|
||||
@Override
|
||||
public List<String> getArchivingSegmentNames() {
|
||||
log(" getArchivingSegmentNames()");
|
||||
List<String> lst = c.getListStrValue("/commitlog/segments/archiving");
|
||||
List<String> lst = client.getListStrValue("/commitlog/segments/archiving");
|
||||
Set<String> set = new HashSet<String>();
|
||||
for (String l : lst) {
|
||||
String name = l.substring(l.lastIndexOf("/") + 1, l.length());
|
||||
@ -111,46 +95,46 @@ public class CommitLog implements CommitLogMBean {
|
||||
public String getArchiveCommand() {
|
||||
// TODO Auto-generated method stub
|
||||
log(" getArchiveCommand()");
|
||||
return c.getStringValue("");
|
||||
return client.getStringValue("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRestoreCommand() {
|
||||
// TODO Auto-generated method stub
|
||||
log(" getRestoreCommand()");
|
||||
return c.getStringValue("");
|
||||
return client.getStringValue("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRestoreDirectories() {
|
||||
// TODO Auto-generated method stub
|
||||
log(" getRestoreDirectories()");
|
||||
return c.getStringValue("");
|
||||
return client.getStringValue("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getRestorePointInTime() {
|
||||
// TODO Auto-generated method stub
|
||||
log(" getRestorePointInTime()");
|
||||
return c.getLongValue("");
|
||||
return client.getLongValue("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRestorePrecision() {
|
||||
// TODO Auto-generated method stub
|
||||
log(" getRestorePrecision()");
|
||||
return c.getStringValue("");
|
||||
return client.getStringValue("");
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getActiveContentSize() {
|
||||
// scylla does not compress commit log, so this is equivalent
|
||||
// scylla does not compress commit log, so this is equivalent
|
||||
return getActiveOnDiskSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getActiveOnDiskSize() {
|
||||
return c.getLongValue("/commitlog/metrics/total_commit_log_size");
|
||||
return client.getLongValue("/commitlog/metrics/total_commit_log_size");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Loading…
Reference in New Issue
Block a user