<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Is heartbeat url configuable? where acs is sending heart beat request? in Alfresco Forum</title>
    <link>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111635#M31160</link>
    <description>&lt;P&gt;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.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this configurable?&lt;/P&gt;&lt;P&gt;java.net.UnknownHostException: &lt;A href="http://hbrx.alfresco.com" target="_self" rel="nofollow noopener noreferrer"&gt;hbrx.alfresco.com&lt;/A&gt;: Name or service not known&lt;/P&gt;&lt;PRE&gt;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)&lt;/PRE&gt;&lt;P&gt;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?&lt;/P&gt;&lt;PRE&gt;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&amp;lt;HBData&amp;gt; dataCache;
    private boolean sendingEnabled;
    
    private HBSendDataScheduler scheduler;

    protected HBDataSenderServiceImpl()
    {
        this.dataCache = new HBDataCacheQueue&amp;lt;&amp;gt;();
    }

    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;
    }

    &lt;STRONG&gt;protected void setHeartBeatUrl(String heartBeatUrl)
    {
        this.heartBeatUrl = heartBeatUrl;
    }&lt;/STRONG&gt;
    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&amp;lt;HBData&amp;gt; dataBatch)
    {
        dataCache.addAll(dataBatch);
    }

    public void process()
    {
        process(new HBDataConsumer&amp;lt;HBData&amp;gt;(getHeartBeatIngestionUrl()));
    }
    public void process(Consumer&amp;lt;List&amp;lt;HBData&amp;gt;&amp;gt; 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());
            }
        }
    }

}&lt;/PRE&gt;&lt;P&gt;Please help&lt;/P&gt;</description>
    <pubDate>Mon, 23 Nov 2020 19:36:35 GMT</pubDate>
    <dc:creator>venur</dc:creator>
    <dc:date>2020-11-23T19:36:35Z</dc:date>
    <item>
      <title>Is heartbeat url configuable? where acs is sending heart beat request?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111635#M31160</link>
      <description>&lt;P&gt;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.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is this configurable?&lt;/P&gt;&lt;P&gt;java.net.UnknownHostException: &lt;A href="http://hbrx.alfresco.com" target="_self" rel="nofollow noopener noreferrer"&gt;hbrx.alfresco.com&lt;/A&gt;: Name or service not known&lt;/P&gt;&lt;PRE&gt;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)&lt;/PRE&gt;&lt;P&gt;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?&lt;/P&gt;&lt;PRE&gt;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&amp;lt;HBData&amp;gt; dataCache;
    private boolean sendingEnabled;
    
    private HBSendDataScheduler scheduler;

    protected HBDataSenderServiceImpl()
    {
        this.dataCache = new HBDataCacheQueue&amp;lt;&amp;gt;();
    }

    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;
    }

    &lt;STRONG&gt;protected void setHeartBeatUrl(String heartBeatUrl)
    {
        this.heartBeatUrl = heartBeatUrl;
    }&lt;/STRONG&gt;
    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&amp;lt;HBData&amp;gt; dataBatch)
    {
        dataCache.addAll(dataBatch);
    }

    public void process()
    {
        process(new HBDataConsumer&amp;lt;HBData&amp;gt;(getHeartBeatIngestionUrl()));
    }
    public void process(Consumer&amp;lt;List&amp;lt;HBData&amp;gt;&amp;gt; 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());
            }
        }
    }

}&lt;/PRE&gt;&lt;P&gt;Please help&lt;/P&gt;</description>
      <pubDate>Mon, 23 Nov 2020 19:36:35 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111635#M31160</guid>
      <dc:creator>venur</dc:creator>
      <dc:date>2020-11-23T19:36:35Z</dc:date>
    </item>
    <item>
      <title>Re: Is heartbeat url configuable? where acs is sending heart beat request?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111636#M31161</link>
      <description>&lt;P&gt;try to add heartbeat.enabled=true to alfresco-global.properties&lt;/P&gt;</description>
      <pubDate>Tue, 24 Nov 2020 08:53:33 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111636#M31161</guid>
      <dc:creator>kaynezhang</dc:creator>
      <dc:date>2020-11-24T08:53:33Z</dc:date>
    </item>
    <item>
      <title>Re: Is heartbeat url configuable? where acs is sending heart beat request?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111637#M31162</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;A href="https://migration33.stage.lithium.com/t5/user/viewprofilepage/user-id/82702"&gt;@venur&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The heartbeat sends anonymous info to Alfresco about product usage. If you are using Community Edition you can &lt;A href="https://docs.alfresco.com/6.0/concepts/heartbeatintro.html" target="_self" rel="nofollow noopener noreferrer"&gt;disable&lt;/A&gt; it:&amp;nbsp;&lt;/P&gt;
&lt;PRE class="pre"&gt;heartbeat.enabled=false&lt;/PRE&gt;
&lt;P&gt;HTH&lt;/P&gt;</description>
      <pubDate>Tue, 24 Nov 2020 11:41:01 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111637#M31162</guid>
      <dc:creator>EddieMay</dc:creator>
      <dc:date>2020-11-24T11:41:01Z</dc:date>
    </item>
    <item>
      <title>Re: Is heartbeat url configuable? where acs is sending heart beat request?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111638#M31163</link>
      <description>&lt;P&gt;Thnx&amp;nbsp;&lt;A href="https://migration33.stage.lithium.com/t5/user/viewprofilepage/user-id/76783"&gt;@EddieMay&lt;/A&gt;&amp;nbsp;it is working, after adding properties to false i am not getting the log.&lt;/P&gt;</description>
      <pubDate>Tue, 24 Nov 2020 13:25:21 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111638#M31163</guid>
      <dc:creator>venur</dc:creator>
      <dc:date>2020-11-24T13:25:21Z</dc:date>
    </item>
    <item>
      <title>Re: Is heartbeat url configuable? where acs is sending heart beat request?</title>
      <link>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111639#M31164</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;A href="https://migration33.stage.lithium.com/t5/user/viewprofilepage/user-id/82702"&gt;@venur&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Glad its working &amp;amp; thanks for reporting back - really helpful to other users.&lt;/P&gt;
&lt;P&gt;All the best,&lt;/P&gt;</description>
      <pubDate>Tue, 24 Nov 2020 13:27:33 GMT</pubDate>
      <guid>https://connect.hyland.com/t5/alfresco-forum/is-heartbeat-url-configuable-where-acs-is-sending-heart-beat/m-p/111639#M31164</guid>
      <dc:creator>EddieMay</dc:creator>
      <dc:date>2020-11-24T13:27:33Z</dc:date>
    </item>
  </channel>
</rss>

