As the title, i am seeing an error in our error logs. Seems like it is related to heartbeat, but where acs is sending these heart beat? As per the log the server is not something that we use.
Is this configurable?
java.net.UnknownHostException: hbrx.alfresco.com: Name or service not known
2020-11-23 19:22:12,645 ERROR [heartbeat.datasender.HBDataSenderServiceImpl] [QuartzScheduler_Worker-1] [HB] Target is unavailable: https://hbrx.alfresco.com java.net.UnknownHostException: hbrx.alfresco.com: Name or service not known at java.base/java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method) at java.base/java.net.InetAddress$PlatformNameService.lookupAllHostAddr(InetAddress.java:929) at java.base/java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1515) at java.base/java.net.InetAddress$NameServiceAddresses.get(InetAddress.java:848) at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505) at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364) at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298) at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45) at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:112) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) at org.alfresco.heartbeat.datasender.HBDataSenderServiceImpl.isTargetAvailable(HBDataSenderServiceImpl.java:90) at org.alfresco.heartbeat.datasender.HBDataSenderServiceImpl.process(HBDataSenderServiceImpl.java:152) at org.alfresco.heartbeat.datasender.HBDataSenderServiceImpl.process(HBDataSenderServiceImpl.java:143) at org.alfresco.heartbeat.datasender.internal.schedule.HBDataSenderJob.execute(HBDataSenderJob.java:40) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Looking on this class (looked alfresco-heartbeat-data-sender jar) seems url is configurable but not finding where ? comment on the class says it is sent to AWS somewhere but question is why? Can we disable it?
package org.alfresco.heartbeat.datasender; import java.util.List; import java.util.function.Consumer; import org.alfresco.heartbeat.datasender.internal.HBDataCacheQueue; import org.alfresco.heartbeat.datasender.internal.HBDataConsumer; import org.alfresco.heartbeat.datasender.internal.schedule.HBSendDataScheduler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.HttpStatus; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; /** * Heartbeat Data Sender service implementation - collected data is sent to an ingestion endpoint (AWS). * * @author Ancuta Morarasu * */ public class HBDataSenderServiceImpl implements HBDataSenderService { private static Log logger = LogFactory.getLog(HBDataSenderServiceImpl.class); private static final String INGEST_ENDPOINT = "/ingest"; private static final String HEALTH_ENDPOINT = "/health"; private String heartBeatUrl; private int batchSize; private HBDataCacheQueue<HBData> dataCache; private boolean sendingEnabled; private HBSendDataScheduler scheduler; protected HBDataSenderServiceImpl() { this.dataCache = new HBDataCacheQueue<>(); } protected HBSendDataScheduler getScheduler() { return scheduler; } protected void setScheduler(HBSendDataScheduler scheduler) { this.scheduler = scheduler; } protected void setCacheMaxEntries(long maxEntries) { dataCache.setMaxEntries(maxEntries); } protected void setBatchSize(int size) { this.batchSize = size; } protected void setHeartBeatUrl(String heartBeatUrl) { this.heartBeatUrl = heartBeatUrl; } protected String getHeartBeatIngestionUrl() { return heartBeatUrl + INGEST_ENDPOINT; } protected boolean isTargetAvailable() { boolean available = true; try (CloseableHttpClient client = HttpClients.createDefault()) { HttpGet httpGet = new HttpGet(heartBeatUrl + HEALTH_ENDPOINT); CloseableHttpResponse response = client.execute(httpGet); available = response.getStatusLine().getStatusCode() == HttpStatus.SC_OK; if (logger.isDebugEnabled()) { logger.debug("[HB] Target available: " + response.getStatusLine().getReasonPhrase() + " - " + response.getStatusLine().getStatusCode()); } } catch (Exception e) { logger.error("[HB] Target is unavailable: " + heartBeatUrl, e); available = false; } return available; } protected int getCacheCount() { return dataCache.size(); } @Override public synchronized void enable(boolean heartbeatState) { this.sendingEnabled = heartbeatState; if (sendingEnabled) { // Schedule the sending job scheduler.scheduleJob(); } else { // Stop the sending job scheduler.stopJob(); } } @Override public void sendData(HBData data) { dataCache.add(data); } @Override public void sendData(List<HBData> dataBatch) { dataCache.addAll(dataBatch); } public void process() { process(new HBDataConsumer<HBData>(getHeartBeatIngestionUrl())); } public void process(Consumer<List<HBData>> consumer) { // Check the availability of the target, if the heartbeat server is down, there is no need to start sending data. if (isTargetAvailable()) { try { dataCache.process(batchSize, consumer); } catch(Exception ex) { // Don't propagate any processing error. logger.error("[HB] Cache processing error: " + ex.getMessage()); } } } }
Please help
Solved! Go to Solution.
try to add heartbeat.enabled=true to alfresco-global.properties
Thnx @EddieMay it is working, after adding properties to false i am not getting the log.
Hi @venur
Glad its working & thanks for reporting back - really helpful to other users.
All the best,
Ask for and offer help to other Alfresco Content Services Users and members of the Alfresco team.
Related links:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.