提交 70a86b5c 编写于 作者: Y yong.you

refator thread info

上级 86279b65
...@@ -35,7 +35,7 @@ public class CatClientModule extends AbstractModule { ...@@ -35,7 +35,7 @@ public class CatClientModule extends AbstractModule {
ThreadRenamingRunnable.setThreadNameDeterminer(ThreadNameDeterminer.CURRENT); ThreadRenamingRunnable.setThreadNameDeterminer(ThreadNameDeterminer.CURRENT);
// tracking thread start/stop // tracking thread start/stop
// Threads.addListener(new CatThreadListener(ctx)); Threads.addListener(new CatThreadListener(ctx));
File clientConfigFile = ctx.getAttribute("cat-client-config-file"); File clientConfigFile = ctx.getAttribute("cat-client-config-file");
ClientConfigManager clientConfigManager = ctx.lookup(ClientConfigManager.class); ClientConfigManager clientConfigManager = ctx.lookup(ClientConfigManager.class);
......
...@@ -75,7 +75,6 @@ public class TopAnalyzer extends AbstractMessageAnalyzer<TopReport> implements L ...@@ -75,7 +75,6 @@ public class TopAnalyzer extends AbstractMessageAnalyzer<TopReport> implements L
new ProblemReportVisitor(topReport).visitProblemReport(report); new ProblemReportVisitor(topReport).visitProblemReport(report);
} }
} }
return topReport; return topReport;
} }
...@@ -93,7 +92,7 @@ public class TopAnalyzer extends AbstractMessageAnalyzer<TopReport> implements L ...@@ -93,7 +92,7 @@ public class TopAnalyzer extends AbstractMessageAnalyzer<TopReport> implements L
} }
private boolean validateDomain(String domain) { private boolean validateDomain(String domain) {
return !domain.equals("FrontEnd"); return !domain.equals(ReportConstants.FRONT_END) && !domain.equals(ReportConstants.ALL);
} }
static class ProblemReportVisitor extends com.dianping.cat.consumer.problem.model.transform.BaseVisitor { static class ProblemReportVisitor extends com.dianping.cat.consumer.problem.model.transform.BaseVisitor {
......
...@@ -22,7 +22,6 @@ import org.unidal.helper.Files.AutoClose; ...@@ -22,7 +22,6 @@ import org.unidal.helper.Files.AutoClose;
import org.unidal.helper.Formats; import org.unidal.helper.Formats;
import org.unidal.helper.Scanners; import org.unidal.helper.Scanners;
import org.unidal.helper.Scanners.FileMatcher; import org.unidal.helper.Scanners.FileMatcher;
import org.unidal.helper.Threads;
import org.unidal.helper.Threads.Task; import org.unidal.helper.Threads.Task;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
...@@ -33,7 +32,7 @@ import com.dianping.cat.message.Message; ...@@ -33,7 +32,7 @@ import com.dianping.cat.message.Message;
import com.dianping.cat.message.MessageProducer; import com.dianping.cat.message.MessageProducer;
import com.dianping.cat.message.Transaction; import com.dianping.cat.message.Transaction;
public class DumpUploader implements Initializable, LogEnabled { public class DumpUploader implements Initializable, Task, LogEnabled {
@Inject @Inject
private ServerConfigManager m_configManager; private ServerConfigManager m_configManager;
...@@ -44,22 +43,28 @@ public class DumpUploader implements Initializable, LogEnabled { ...@@ -44,22 +43,28 @@ public class DumpUploader implements Initializable, LogEnabled {
private Logger m_logger; private Logger m_logger;
private Thread m_job;
private long m_sleepPeriod = 1000L * 60; private long m_sleepPeriod = 1000L * 60;
private volatile boolean m_active = true;
@Override @Override
public void enableLogging(Logger logger) { public void enableLogging(Logger logger) {
m_logger = logger; m_logger = logger;
} }
@Override
public String getName() {
return "DumpUploader";
}
@Override @Override
public void initialize() throws InitializationException { public void initialize() throws InitializationException {
m_baseDir = m_configManager.getHdfsLocalBaseDir("dump"); m_baseDir = m_configManager.getHdfsLocalBaseDir("dump");
if (!m_configManager.isLocalMode()) { }
if (m_job == null) {
m_job = Threads.forGroup("Cat").start(new WriteJob()); private boolean isActive() {
} synchronized (this) {
return m_active;
} }
} }
...@@ -72,163 +77,148 @@ public class DumpUploader implements Initializable, LogEnabled { ...@@ -72,163 +77,148 @@ public class DumpUploader implements Initializable, LogEnabled {
return out; return out;
} }
public void setSleepPeriod(long period) { @Override
m_sleepPeriod = period; public void run() {
} while (isActive()) {
try {
class WriteJob implements Task { if (Cat.isInitialized()) {
private volatile boolean m_active = true; Calendar cal = Calendar.getInstance();
@Override if (cal.get(Calendar.MINUTE) >= 10) {
public String getName() { upload();
return "DumpUploader";
}
private boolean isActive() {
synchronized (this) {
return m_active;
}
}
@Override
public void run() {
while (isActive()) {
try {
if (Cat.isInitialized()) {
Calendar cal = Calendar.getInstance();
if (cal.get(Calendar.MINUTE) >= 10) {
upload();
}
} }
} catch (Exception e) {
m_logger.warn("Error when dumping message to HDFS. " + e.getMessage());
}
try {
Thread.sleep(m_sleepPeriod);
} catch (InterruptedException e) {
m_active = false;
} }
} catch (Exception e) {
m_logger.warn("Error when dumping message to HDFS. " + e.getMessage());
} }
} try {
Thread.sleep(m_sleepPeriod);
@Override } catch (InterruptedException e) {
public void shutdown() {
synchronized (this) {
m_active = false; m_active = false;
} }
} }
}
private void upload() { public void setSleepPeriod(long period) {
File baseDir = new File(m_baseDir, "outbox"); m_sleepPeriod = period;
final List<String> paths = new ArrayList<String>(); }
Scanners.forDir().scan(baseDir, new FileMatcher() { @Override
@Override public void shutdown() {
public Direction matches(File base, String path) { synchronized (this) {
if (new File(base, path).isFile()) { m_active = false;
paths.add(path); }
} }
return Direction.DOWN; private void upload() {
File baseDir = new File(m_baseDir, "outbox");
final List<String> paths = new ArrayList<String>();
Scanners.forDir().scan(baseDir, new FileMatcher() {
@Override
public Direction matches(File base, String path) {
if (new File(base, path).isFile()) {
paths.add(path);
} }
});
int len = paths.size(); return Direction.DOWN;
}
});
if (len > 0) { int len = paths.size();
Cat.setup("DumpUploader");
MessageProducer cat = Cat.getProducer(); if (len > 0) {
String ip = NetworkInterfaceManager.INSTANCE.getLocalHostAddress(); Cat.setup("DumpUploader");
Transaction root = cat.newTransaction("System", "Dump-" + ip);
Collections.sort(paths); MessageProducer cat = Cat.getProducer();
String ip = NetworkInterfaceManager.INSTANCE.getLocalHostAddress();
Transaction root = cat.newTransaction("System", "Dump-" + ip);
root.addData("files", paths); Collections.sort(paths);
root.setStatus(Message.SUCCESS);
for (int i = 0; i < len; i++) { root.addData("files", paths);
String path = paths.get(i); root.setStatus(Message.SUCCESS);
Transaction t = cat.newTransaction("System", "UploadDump");
File file = new File(baseDir, path);
t.addData("file", path); for (int i = 0; i < len; i++) {
String path = paths.get(i);
Transaction t = cat.newTransaction("System", "UploadDump");
File file = new File(baseDir, path);
FSDataOutputStream fdos = null; t.addData("file", path);
try {
fdos = makeHdfsOutputStream(path);
FileInputStream fis = new FileInputStream(file);
long start = System.currentTimeMillis(); FSDataOutputStream fdos = null;
try {
fdos = makeHdfsOutputStream(path);
FileInputStream fis = new FileInputStream(file);
Files.forIO().copy(fis, fdos, AutoClose.INPUT_OUTPUT); long start = System.currentTimeMillis();
double sec = (System.currentTimeMillis() - start) / 1000d; Files.forIO().copy(fis, fdos, AutoClose.INPUT_OUTPUT);
String size = Formats.forNumber().format(file.length(), "0.#", "B");
String speed = sec <= 0 ? "N/A" : Formats.forNumber().format(file.length() / sec, "0.0", "B/s");
t.addData("size", size); double sec = (System.currentTimeMillis() - start) / 1000d;
t.addData("speed", speed); String size = Formats.forNumber().format(file.length(), "0.#", "B");
t.setStatus(Message.SUCCESS); String speed = sec <= 0 ? "N/A" : Formats.forNumber().format(file.length() / sec, "0.0", "B/s");
if (!file.delete()) { t.addData("size", size);
m_logger.warn("Can't delete file: " + file); t.addData("speed", speed);
} t.setStatus(Message.SUCCESS);
} catch (AlreadyBeingCreatedException e) {
Cat.logError(e);
t.setStatus(e);
m_logger.error(String.format("Already being created (%s)!", path), e);
} catch (AccessControlException e) {
cat.logError(e);
t.setStatus(e);
m_logger.error(String.format("No permission to create HDFS file(%s)!", path), e);
} catch (Exception e) {
cat.logError(e);
t.setStatus(e);
m_logger.error(String.format("Uploading file(%s) to HDFS(%s) failed!", file, path), e);
} finally {
try {
if (fdos != null) {
fdos.close();
}
} catch (IOException e) {
Cat.logError(e);
}
t.complete();
}
if (!file.delete()) {
m_logger.warn("Can't delete file: " + file);
}
} catch (AlreadyBeingCreatedException e) {
Cat.logError(e);
t.setStatus(e);
m_logger.error(String.format("Already being created (%s)!", path), e);
} catch (AccessControlException e) {
cat.logError(e);
t.setStatus(e);
m_logger.error(String.format("No permission to create HDFS file(%s)!", path), e);
} catch (Exception e) {
cat.logError(e);
t.setStatus(e);
m_logger.error(String.format("Uploading file(%s) to HDFS(%s) failed!", file, path), e);
} finally {
try { try {
Thread.sleep(100); if (fdos != null) {
} catch (InterruptedException e) { fdos.close();
break; }
} catch (IOException e) {
Cat.logError(e);
} }
t.complete();
} }
root.complete(); try {
Thread.sleep(100);
} catch (InterruptedException e) {
break;
}
} }
// the path has two depth root.complete();
for (int i = 0; i < 2; i++) { }
final List<String> directionPaths = new ArrayList<String>();
Scanners.forDir().scan(baseDir, new FileMatcher() { // the path has two depth
@Override for (int i = 0; i < 2; i++) {
public Direction matches(File base, String path) { final List<String> directionPaths = new ArrayList<String>();
if (new File(base, path).isDirectory()) {
directionPaths.add(path);
}
return Direction.DOWN; Scanners.forDir().scan(baseDir, new FileMatcher() {
@Override
public Direction matches(File base, String path) {
if (new File(base, path).isDirectory()) {
directionPaths.add(path);
} }
});
for (String path : directionPaths) {
try {
File file = new File(baseDir, path);
file.delete(); return Direction.DOWN;
} catch (Exception e) { }
} });
for (String path : directionPaths) {
try {
File file = new File(baseDir, path);
file.delete();
} catch (Exception e) {
} }
} }
} }
......
...@@ -9,7 +9,6 @@ import org.unidal.initialization.ModuleContext; ...@@ -9,7 +9,6 @@ import org.unidal.initialization.ModuleContext;
import com.dianping.cat.consumer.CatConsumerAdvancedModule; import com.dianping.cat.consumer.CatConsumerAdvancedModule;
import com.dianping.cat.consumer.CatConsumerModule; import com.dianping.cat.consumer.CatConsumerModule;
import com.dianping.cat.consumer.problem.aggregation.AggregationConfigManager;
import com.dianping.cat.hadoop.hdfs.DumpUploader; import com.dianping.cat.hadoop.hdfs.DumpUploader;
import com.dianping.cat.message.spi.core.MessageConsumer; import com.dianping.cat.message.spi.core.MessageConsumer;
import com.dianping.cat.message.spi.core.TcpSocketReceiver; import com.dianping.cat.message.spi.core.TcpSocketReceiver;
...@@ -21,6 +20,7 @@ import com.dianping.cat.system.alarm.AlarmTask; ...@@ -21,6 +20,7 @@ import com.dianping.cat.system.alarm.AlarmTask;
import com.dianping.cat.system.alarm.threshold.listener.ExceptionDataListener; import com.dianping.cat.system.alarm.threshold.listener.ExceptionDataListener;
import com.dianping.cat.system.alarm.threshold.listener.ServiceDataListener; import com.dianping.cat.system.alarm.threshold.listener.ServiceDataListener;
import com.dianping.cat.system.alarm.threshold.listener.ThresholdAlertListener; import com.dianping.cat.system.alarm.threshold.listener.ThresholdAlertListener;
import com.dianping.cat.system.config.ConfigReloadTask;
import com.dianping.cat.system.event.EventListenerRegistry; import com.dianping.cat.system.event.EventListenerRegistry;
import com.dianping.cat.system.notify.ScheduledMailTask; import com.dianping.cat.system.notify.ScheduledMailTask;
...@@ -30,26 +30,30 @@ public class CatHomeModule extends AbstractModule { ...@@ -30,26 +30,30 @@ public class CatHomeModule extends AbstractModule {
@Override @Override
protected void execute(ModuleContext ctx) throws Exception { protected void execute(ModuleContext ctx) throws Exception {
ServerConfigManager serverConfigManager = ctx.lookup(ServerConfigManager.class); ServerConfigManager serverConfigManager = ctx.lookup(ServerConfigManager.class);
ctx.lookup(DumpUploader.class);
ctx.lookup(MessageConsumer.class); ctx.lookup(MessageConsumer.class);
ctx.lookup(DomainNavManager.class); if (!serverConfigManager.isLocalMode()) {
ctx.lookup(AggregationConfigManager.class); ConfigReloadTask configReloadTask = ctx.lookup(ConfigReloadTask.class);
DumpUploader uploader = ctx.lookup(DumpUploader.class);
Threads.forGroup("Cat").start(configReloadTask);
Threads.forGroup("Cat").start(uploader);
}
if (serverConfigManager.isJobMachine() && !serverConfigManager.isLocalMode()) { if (serverConfigManager.isJobMachine() && !serverConfigManager.isLocalMode()) {
// MetricAlert metricAlert = ctx.lookup(MetricAlert.class);
// Threads.forGroup("Cat").start(metricAlert);
DefaultTaskConsumer taskConsumer = ctx.lookup(DefaultTaskConsumer.class); DefaultTaskConsumer taskConsumer = ctx.lookup(DefaultTaskConsumer.class);
MetricAlert metricAlert = ctx.lookup(MetricAlert.class); MetricAlert metricAlert = ctx.lookup(MetricAlert.class);
DomainNavManager domainNavManager = ctx.lookup(DomainNavManager.class);
Threads.forGroup("Cat").start(domainNavManager);
Threads.forGroup("Cat").start(metricAlert); Threads.forGroup("Cat").start(metricAlert);
Threads.forGroup("Cat").start(taskConsumer); Threads.forGroup("Cat").start(taskConsumer);
} }
executeAlarmModule(ctx); executeAlarmModule(ctx);
} }
private void executeAlarmModule(ModuleContext ctx) throws Exception { private void executeAlarmModule(ModuleContext ctx) throws Exception {
ServerConfigManager serverConfigManager = ctx.lookup(ServerConfigManager.class); ServerConfigManager serverConfigManager = ctx.lookup(ServerConfigManager.class);
EventListenerRegistry registry = ctx.lookup(EventListenerRegistry.class); EventListenerRegistry registry = ctx.lookup(EventListenerRegistry.class);
ExceptionDataListener exceptionDataListener = ctx.lookup(ExceptionDataListener.class); ExceptionDataListener exceptionDataListener = ctx.lookup(ExceptionDataListener.class);
ServiceDataListener serviceDataListener = ctx.lookup(ServiceDataListener.class); ServiceDataListener serviceDataListener = ctx.lookup(ServiceDataListener.class);
......
...@@ -48,14 +48,14 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { ...@@ -48,14 +48,14 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ValueTranslater.class)); .req(ValueTranslater.class));
all.add(C(PayloadNormalizer.class).req(ServerConfigManager.class)); all.add(C(PayloadNormalizer.class).req(ServerConfigManager.class));
all.add(C(StateGraphs.class, StateGraphs.class).// all.add(C(StateGraphs.class, StateGraphs.class).//
req(ReportService.class)); req(ReportService.class));
all.add(C(Module.class, CatHomeModule.ID, CatHomeModule.class)); all.add(C(Module.class, CatHomeModule.ID, CatHomeModule.class));
all.add(C(ModuleManager.class, DefaultModuleManager.class) // all.add(C(ModuleManager.class, DefaultModuleManager.class) //
.config(E("topLevelModules").value(CatHomeModule.ID))); .config(E("topLevelModules").value(CatHomeModule.ID)));
all.add(C(DomainNavManager.class).req(ProjectDao.class, ServerConfigManager.class)); all.add(C(DomainNavManager.class).req(ProjectDao.class));
all.add(C(EventCollectManager.class).req(EventDao.class, ServerConfigManager.class)); all.add(C(EventCollectManager.class).req(EventDao.class, ServerConfigManager.class));
...@@ -70,7 +70,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { ...@@ -70,7 +70,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.req(ModelService.class, "dependency")); .req(ModelService.class, "dependency"));
all.add(C(ConfigReloadTask.class).req(MetricConfigManager.class, ProductLineConfigManager.class)); all.add(C(ConfigReloadTask.class).req(MetricConfigManager.class, ProductLineConfigManager.class));
// report serivce // report serivce
all.addAll(new ReportServiceComponentConfigurator().defineComponents()); all.addAll(new ReportServiceComponentConfigurator().defineComponents());
// task // task
...@@ -84,7 +84,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { ...@@ -84,7 +84,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
.config(E("datasourceFile").value("/data/appdatas/cat/datasources.xml"))); .config(E("datasourceFile").value("/data/appdatas/cat/datasources.xml")));
all.addAll(new CatDatabaseConfigurator().defineComponents()); all.addAll(new CatDatabaseConfigurator().defineComponents());
all.addAll(new UserDatabaseConfigurator().defineComponents()); all.addAll(new UserDatabaseConfigurator().defineComponents());
// for abtest module // for abtest module
all.addAll(new ABTestComponentConfigurator().defineComponents()); all.addAll(new ABTestComponentConfigurator().defineComponents());
...@@ -93,7 +93,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { ...@@ -93,7 +93,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator {
// for alarm module // for alarm module
all.addAll(new AlarmComponentConfigurator().defineComponents()); all.addAll(new AlarmComponentConfigurator().defineComponents());
return all; return all;
} }
} }
...@@ -14,7 +14,7 @@ import com.dianping.cat.core.dal.MonthlyReportDao; ...@@ -14,7 +14,7 @@ import com.dianping.cat.core.dal.MonthlyReportDao;
import com.dianping.cat.core.dal.WeeklyReportDao; import com.dianping.cat.core.dal.WeeklyReportDao;
import com.dianping.cat.report.service.DailyReportService; import com.dianping.cat.report.service.DailyReportService;
import com.dianping.cat.report.service.HourlyReportService; import com.dianping.cat.report.service.HourlyReportService;
import com.dianping.cat.report.service.MonthReportCache; import com.dianping.cat.report.service.MonthlyReportCache;
import com.dianping.cat.report.service.MonthlyReportService; import com.dianping.cat.report.service.MonthlyReportService;
import com.dianping.cat.report.service.ReportService; import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.service.WeeklyReportCache; import com.dianping.cat.report.service.WeeklyReportCache;
...@@ -45,13 +45,13 @@ public class ReportServiceComponentConfigurator extends AbstractResourceConfigur ...@@ -45,13 +45,13 @@ public class ReportServiceComponentConfigurator extends AbstractResourceConfigur
all.add(C(WeeklyReportCache.class)// all.add(C(WeeklyReportCache.class)//
.req(DailyReportService.class, HourlyReportService.class, ServerConfigManager.class)); .req(DailyReportService.class, HourlyReportService.class, ServerConfigManager.class));
all.add(C(MonthReportCache.class)// all.add(C(MonthlyReportCache.class)//
.req(DailyReportService.class, HourlyReportService.class, ServerConfigManager.class)); .req(DailyReportService.class, HourlyReportService.class, ServerConfigManager.class));
all.add(C(ReportService.class, ReportServiceImpl.class)// all.add(C(ReportService.class, ReportServiceImpl.class)//
.req(HourlyReportService.class, DailyReportService.class, WeeklyReportService.class, .req(HourlyReportService.class, DailyReportService.class, WeeklyReportService.class,
MonthlyReportService.class)// MonthlyReportService.class)//
.req(WeeklyReportCache.class, MonthReportCache.class)); .req(WeeklyReportCache.class, MonthlyReportCache.class));
return all; return all;
......
...@@ -26,7 +26,7 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionReport; ...@@ -26,7 +26,7 @@ import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.message.Transaction; import com.dianping.cat.message.Transaction;
public class MonthReportCache implements Initializable { public class MonthlyReportCache implements Initializable {
private long m_end; private long m_end;
......
...@@ -23,7 +23,7 @@ import com.dianping.cat.core.dal.WeeklyReport; ...@@ -23,7 +23,7 @@ import com.dianping.cat.core.dal.WeeklyReport;
import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.helper.TimeUtil;
import com.dianping.cat.report.service.DailyReportService; import com.dianping.cat.report.service.DailyReportService;
import com.dianping.cat.report.service.HourlyReportService; import com.dianping.cat.report.service.HourlyReportService;
import com.dianping.cat.report.service.MonthReportCache; import com.dianping.cat.report.service.MonthlyReportCache;
import com.dianping.cat.report.service.MonthlyReportService; import com.dianping.cat.report.service.MonthlyReportService;
import com.dianping.cat.report.service.ReportService; import com.dianping.cat.report.service.ReportService;
import com.dianping.cat.report.service.WeeklyReportCache; import com.dianping.cat.report.service.WeeklyReportCache;
...@@ -46,7 +46,7 @@ public class ReportServiceImpl implements ReportService { ...@@ -46,7 +46,7 @@ public class ReportServiceImpl implements ReportService {
private WeeklyReportCache m_weeklyReportCache; private WeeklyReportCache m_weeklyReportCache;
@Inject @Inject
private MonthReportCache m_monthReportCache; private MonthlyReportCache m_monthReportCache;
public static final int s_hourly = 1; public static final int s_hourly = 1;
......
...@@ -11,34 +11,25 @@ import java.util.concurrent.ConcurrentHashMap; ...@@ -11,34 +11,25 @@ import java.util.concurrent.ConcurrentHashMap;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.dal.jdbc.DalException; import org.unidal.dal.jdbc.DalException;
import org.unidal.helper.Threads;
import org.unidal.helper.Threads.Task; import org.unidal.helper.Threads.Task;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
import com.dianping.cat.Cat; import com.dianping.cat.Cat;
import com.dianping.cat.ServerConfigManager;
import com.dianping.cat.core.dal.Project; import com.dianping.cat.core.dal.Project;
import com.dianping.cat.core.dal.ProjectDao; import com.dianping.cat.core.dal.ProjectDao;
import com.dianping.cat.core.dal.ProjectEntity; import com.dianping.cat.core.dal.ProjectEntity;
import com.dianping.cat.helper.TimeUtil; import com.dianping.cat.helper.TimeUtil;
public class DomainNavManager implements Initializable { public class DomainNavManager implements Task, Initializable {
@Inject @Inject
private ProjectDao m_projectDao; private ProjectDao m_projectDao;
@Inject
private ServerConfigManager m_serverConfigManager;
// key is domain // key is domain
private Map<String, Project> m_projects = new ConcurrentHashMap<String, Project>(); private Map<String, Project> m_projects = new ConcurrentHashMap<String, Project>();
public static final String DEFAULT = "Default"; public static final String DEFAULT = "Default";
public Collection<String> getDomains() {
return m_projects.keySet();
}
public Map<String, Department> getDepartment(Collection<String> domains) { public Map<String, Department> getDepartment(Collection<String> domains) {
Map<String, Department> result = new TreeMap<String, Department>(); Map<String, Department> result = new TreeMap<String, Department>();
...@@ -53,7 +44,7 @@ public class DomainNavManager implements Initializable { ...@@ -53,7 +44,7 @@ public class DomainNavManager implements Initializable {
projectLine = project.getProjectLine(); projectLine = project.getProjectLine();
} }
Department temp = result.get(department); Department temp = result.get(department);
if (temp == null) { if (temp == null) {
temp = new Department(); temp = new Department();
result.put(department, temp); result.put(department, temp);
...@@ -65,6 +56,15 @@ public class DomainNavManager implements Initializable { ...@@ -65,6 +56,15 @@ public class DomainNavManager implements Initializable {
return result; return result;
} }
public Collection<String> getDomains() {
return m_projects.keySet();
}
@Override
public String getName() {
return "Domain-Info-Reload";
}
public Project getProjectByName(String domain) { public Project getProjectByName(String domain) {
synchronized (m_projects) { synchronized (m_projects) {
return m_projects.get(domain); return m_projects.get(domain);
...@@ -80,9 +80,6 @@ public class DomainNavManager implements Initializable { ...@@ -80,9 +80,6 @@ public class DomainNavManager implements Initializable {
@Override @Override
public void initialize() throws InitializationException { public void initialize() throws InitializationException {
reloadDomainInfo(); reloadDomainInfo();
if (!m_serverConfigManager.isLocalMode()&&m_serverConfigManager.isJobMachine()) {
Threads.forGroup("Cat").start(new DomainReload());
}
} }
public void reloadDomainInfo() { public void reloadDomainInfo() {
...@@ -101,6 +98,28 @@ public class DomainNavManager implements Initializable { ...@@ -101,6 +98,28 @@ public class DomainNavManager implements Initializable {
} }
} }
@Override
public void run() {
boolean active = true;
while (active) {
try {
reloadDomainInfo();
} catch (Exception e) {
Cat.logError(e);
}
try {
Thread.sleep(3 * TimeUtil.ONE_MINUTE);
} catch (InterruptedException e) {
active = false;
}
}
}
@Override
public void shutdown() {
}
public static class Department { public static class Department {
private Map<String, ProjectLine> m_projectLines = new HashMap<String, ProjectLine>(); private Map<String, ProjectLine> m_projectLines = new HashMap<String, ProjectLine>();
...@@ -129,36 +148,6 @@ public class DomainNavManager implements Initializable { ...@@ -129,36 +148,6 @@ public class DomainNavManager implements Initializable {
} }
} }
public class DomainReload implements Task {
@Override
public String getName() {
return "Domain-Info-Reload";
}
@Override
public void run() {
boolean active = true;
while (active) {
try {
reloadDomainInfo();
} catch (Exception e) {
Cat.logError(e);
}
try {
Thread.sleep(3 * TimeUtil.ONE_MINUTE);
} catch (InterruptedException e) {
active = false;
}
}
}
@Override
public void shutdown() {
}
}
public static class ProjectLine { public static class ProjectLine {
private List<String> m_lineDomains = new ArrayList<String>(); private List<String> m_lineDomains = new ArrayList<String>();
......
package com.dianping.cat.system.config; package com.dianping.cat.system.config;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
import org.unidal.helper.Threads;
import org.unidal.helper.Threads.Task; import org.unidal.helper.Threads.Task;
import org.unidal.lookup.annotation.Inject; import org.unidal.lookup.annotation.Inject;
...@@ -10,7 +7,7 @@ import com.dianping.cat.Cat; ...@@ -10,7 +7,7 @@ import com.dianping.cat.Cat;
import com.dianping.cat.consumer.advanced.MetricConfigManager; import com.dianping.cat.consumer.advanced.MetricConfigManager;
import com.dianping.cat.consumer.advanced.ProductLineConfigManager; import com.dianping.cat.consumer.advanced.ProductLineConfigManager;
public class ConfigReloadTask implements Initializable { public class ConfigReloadTask implements Task {
@Inject @Inject
private ProductLineConfigManager m_productLineConfigManager; private ProductLineConfigManager m_productLineConfigManager;
...@@ -19,37 +16,30 @@ public class ConfigReloadTask implements Initializable { ...@@ -19,37 +16,30 @@ public class ConfigReloadTask implements Initializable {
private MetricConfigManager m_metricConfigManager; private MetricConfigManager m_metricConfigManager;
@Override @Override
public void initialize() throws InitializationException { public String getName() {
Threads.forGroup("Cat").start(new Reload()); return "Config-Reload";
} }
public class Reload implements Task { @Override
@Override public void run() {
public String getName() { boolean active = true;
return "Config-Reload"; while (active) {
} try {
m_productLineConfigManager.refreshProductLineConfig();
@Override m_metricConfigManager.refreshMetricConfig();
public void run() { } catch (Exception e) {
boolean active = true; Cat.logError(e);
while (active) { }
try { try {
m_productLineConfigManager.refreshProductLineConfig(); Thread.sleep(60 * 1000L);
m_metricConfigManager.refreshMetricConfig(); } catch (InterruptedException e) {
} catch (Exception e) { active = false;
Cat.logError(e);
}
try {
Thread.sleep(60 * 1000L);
} catch (InterruptedException e) {
active = false;
}
} }
} }
}
@Override @Override
public void shutdown() { public void shutdown() {
}
} }
} }
...@@ -50,9 +50,6 @@ ...@@ -50,9 +50,6 @@
<requirement> <requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role> <role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement> </requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements> </requirements>
</component> </component>
<component> <component>
...@@ -187,8 +184,8 @@ ...@@ -187,8 +184,8 @@
</requirements> </requirements>
</component> </component>
<component> <component>
<role>com.dianping.cat.report.service.MonthReportCache</role> <role>com.dianping.cat.report.service.MonthlyReportCache</role>
<implementation>com.dianping.cat.report.service.MonthReportCache</implementation> <implementation>com.dianping.cat.report.service.MonthlyReportCache</implementation>
<requirements> <requirements>
<requirement> <requirement>
<role>com.dianping.cat.report.service.DailyReportService</role> <role>com.dianping.cat.report.service.DailyReportService</role>
...@@ -221,7 +218,7 @@ ...@@ -221,7 +218,7 @@
<role>com.dianping.cat.report.service.WeeklyReportCache</role> <role>com.dianping.cat.report.service.WeeklyReportCache</role>
</requirement> </requirement>
<requirement> <requirement>
<role>com.dianping.cat.report.service.MonthReportCache</role> <role>com.dianping.cat.report.service.MonthlyReportCache</role>
</requirement> </requirement>
</requirements> </requirements>
</component> </component>
...@@ -2358,9 +2355,6 @@ ...@@ -2358,9 +2355,6 @@
<requirement> <requirement>
<role>com.dianping.cat.core.dal.ProjectDao</role> <role>com.dianping.cat.core.dal.ProjectDao</role>
</requirement> </requirement>
<requirement>
<role>com.dianping.cat.ServerConfigManager</role>
</requirement>
</requirements> </requirements>
</component> </component>
<component> <component>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册