REPO-2625 / REPO-2626: Use of the heartbeat data sender

This commit is contained in:
Ancuta Morarasu
2017-09-12 01:46:53 +03:00
parent ca14f06392
commit 58f272d01b
5 changed files with 67 additions and 78 deletions

View File

@@ -25,13 +25,25 @@
*/
package org.alfresco.heartbeat;
import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.security.GeneralSecurityException;
import java.util.Date;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.alfresco.heartbeat.datasender.HBData;
import org.alfresco.repo.descriptor.DescriptorDAO;
import org.alfresco.repo.dictionary.CustomModelsInfo;
import org.alfresco.repo.transaction.RetryingTransactionHelper;
import org.alfresco.repo.usage.RepoUsageComponent;
import org.alfresco.service.cmr.admin.RepoUsage;
import org.alfresco.service.cmr.dictionary.CustomModelService;
import org.alfresco.service.cmr.repository.HBDataCollectorService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.descriptor.Descriptor;
@@ -39,18 +51,10 @@ import org.alfresco.service.license.LicenseException;
import org.alfresco.service.transaction.TransactionService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.extensions.surf.util.Base64;
import java.io.IOException;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.security.GeneralSecurityException;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.*;
public class CommunityHBDataCollector extends HBBaseDataCollector {
public class CommunityHBDataCollector extends HBBaseDataCollector
{
/** The logger. */
private static final Log logger = LogFactory.getLog(CommunityHBDataCollector.class);
@@ -78,35 +82,39 @@ public class CommunityHBDataCollector extends HBBaseDataCollector {
/** Provides information about custom models */
private CustomModelService customModelService;
public void setCurrentRepoDescriptorDAO(DescriptorDAO currentRepoDescriptorDAO) {
public void setCurrentRepoDescriptorDAO(DescriptorDAO currentRepoDescriptorDAO)
{
this.currentRepoDescriptorDAO = currentRepoDescriptorDAO;
}
public void setServerDescriptorDAO(DescriptorDAO serverDescriptorDAO) {
public void setServerDescriptorDAO(DescriptorDAO serverDescriptorDAO)
{
this.serverDescriptorDAO = serverDescriptorDAO;
}
public void setAuthorityService(AuthorityService authorityService) {
public void setAuthorityService(AuthorityService authorityService)
{
this.authorityService = authorityService;
}
public void setRepoUsageComponent(RepoUsageComponent repoUsageComponent) {
public void setRepoUsageComponent(RepoUsageComponent repoUsageComponent)
{
this.repoUsageComponent = repoUsageComponent;
}
public void setTransactionService(TransactionService transactionService) {
public void setTransactionService(TransactionService transactionService)
{
this.transactionService = transactionService;
}
public void setCustomModelService(CustomModelService customModelService) {
public void setCustomModelService(CustomModelService customModelService)
{
this.customModelService = customModelService;
}
@Override
public List<HBData> collectData()
{
String timeStamp = new SimpleDateFormat("YYYY-MM-dd'T'HH:mm:ss.sss'Z'").format(new Date());
List<HBData> collectedData = new LinkedList<>();
RetryingTransactionHelper.RetryingTransactionCallback<Void> initCallback = new RetryingTransactionHelper.RetryingTransactionCallback<Void>()
@@ -120,7 +128,6 @@ public class CommunityHBDataCollector extends HBBaseDataCollector {
};
transactionService.getRetryingTransactionHelper().doInTransaction(initCallback, true);
// collect repository info data
logger.debug("Preparing repository info data...");
Map<String, Object> infoValues = new HashMap<String, Object>();
@@ -133,7 +140,7 @@ public class CommunityHBDataCollector extends HBBaseDataCollector {
this.currentRepoDescriptorDAO.getDescriptor().getId(),
"acs.repository.info",
"1.0",
timeStamp,
new Date(),
infoValues);
collectedData.add(infoData);
@@ -148,7 +155,7 @@ public class CommunityHBDataCollector extends HBBaseDataCollector {
this.currentRepoDescriptorDAO.getDescriptor().getId(),
"acs.repository.usage.system",
"1.0",
timeStamp,
new Date(),
systemUsageValues);
collectedData.add(systemUsageData);
@@ -171,7 +178,7 @@ public class CommunityHBDataCollector extends HBBaseDataCollector {
this.currentRepoDescriptorDAO.getDescriptor().getId(),
"acs.repository.usage.model",
"1.0",
timeStamp,
new Date(),
modelUsageValues);
collectedData.add(modelUsageData);
@@ -209,14 +216,13 @@ public class CommunityHBDataCollector extends HBBaseDataCollector {
this.currentRepoDescriptorDAO.getDescriptor().getId(),
"acs.repository.license",
"1.0",
timeStamp,
new Date(),
licenseValues);
collectedData.add(licenseData);
return collectedData;
}
/**
* Initializes static parameters on first invocation. Avoid doing it on construction due to bootstrap dependencies
* (e.g. patch service must have run)

View File

@@ -27,6 +27,7 @@ package org.alfresco.heartbeat;
import java.util.List;
import org.alfresco.heartbeat.datasender.HBData;
import org.alfresco.service.cmr.repository.HBDataCollectorService;
public abstract class HBBaseDataCollector

View File

@@ -28,21 +28,25 @@ package org.alfresco.heartbeat;
import java.util.LinkedList;
import java.util.List;
import org.alfresco.heartbeat.datasender.HBData;
import org.alfresco.heartbeat.datasender.HBDataSenderService;
import org.alfresco.service.cmr.repository.HBDataCollectorService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
public class HBDataCollectorServiceImpl implements HBDataCollectorService
{
/** The logger. */
private static final Log logger = LogFactory.getLog(HBDataCollectorServiceImpl.class);
private List<HBBaseDataCollector> collectors = new LinkedList<>();
// private HBDataSenderService dataSender;
private HBDataSenderService hbDataSenderService;
private boolean enabled;
public void setHbDataSenderService(HBDataSenderService hbDataSenderService)
{
this.hbDataSenderService = hbDataSenderService;
}
@Override
public void registerCollector(HBBaseDataCollector collector)
@@ -55,17 +59,15 @@ public class HBDataCollectorServiceImpl implements HBDataCollectorService
{
for (HBBaseDataCollector collector : collectors)
{
List<HBData> data = collector.collectData();
// try
// {
// dataSender.sendData(data);
// }
// catch (Exception e)
// {
// // log exception;
// }
try
{
hbDataSenderService.sendData(data);
}
catch (Exception e)
{
// log exception;
}
}
}

View File

@@ -25,51 +25,27 @@
*/
package org.alfresco.heartbeat;
import org.alfresco.repo.descriptor.DescriptorDAO;
import org.alfresco.repo.dictionary.CustomModelsInfo;
import org.alfresco.repo.transaction.RetryingTransactionHelper.RetryingTransactionCallback;
import org.alfresco.repo.usage.RepoUsageComponent;
import org.alfresco.service.cmr.admin.RepoUsage;
import org.alfresco.service.cmr.dictionary.CustomModelService;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Date;
import org.alfresco.service.cmr.repository.HBDataCollectorService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType;
import org.alfresco.service.descriptor.Descriptor;
import org.alfresco.service.license.LicenseDescriptor;
import org.alfresco.service.license.LicenseException;
import org.alfresco.service.license.LicenseService;
import org.alfresco.service.license.LicenseService.LicenseChangeHandler;
import org.alfresco.service.transaction.TransactionService;
import org.alfresco.traitextender.SpringExtensionBundle;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONException;
import org.json.JSONObject;
import org.quartz.*;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.extensions.surf.util.Base64;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.URL;
import java.security.GeneralSecurityException;
import java.security.KeyStore;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.cert.Certificate;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* This class communicates some very basic repository statistics to Alfresco on a regular basis.
@@ -205,13 +181,13 @@ public class HeartBeat implements LicenseChangeHandler
* @throws GeneralSecurityException
* an encryption related exception
*/
public void sendData() throws IOException, GeneralSecurityException
public void collectAndSendData() throws IOException, GeneralSecurityException
{
this.dataCollectorService.collectAndSendData();
}
/**
* Listens for license changes. If a license is change or removed, the heartbeat job is resheduled.
* Listens for license changes. If a license is change or removed, the heartbeat job is rescheduled.
*/
public synchronized void onLicenseChange(LicenseDescriptor licenseDescriptor)
{
@@ -297,7 +273,7 @@ public class HeartBeat implements LicenseChangeHandler
final HeartBeat heartBeat = (HeartBeat) dataMap.get("heartBeat");
try
{
heartBeat.sendData();
heartBeat.collectAndSendData();
}
catch (final Exception e)
{