<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Check cluster configuration Liferay DXP 7.0</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=112279161" />
  <subtitle>Check cluster configuration Liferay DXP 7.0</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=112279161</id>
  <updated>2026-04-05T07:52:30Z</updated>
  <dc:date>2026-04-05T07:52:30Z</dc:date>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112348998" />
    <author>
      <name>Joaquin Cabal</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112348998</id>
    <updated>2019-02-14T15:09:25Z</updated>
    <published>2019-02-14T15:09:25Z</published>
    <summary type="html">Ok I see Olaf. &lt;br /&gt;The DB should be enought when listener is called. And if the other has the cache invalidated fot that object, will be forced to go to DB with new data.&lt;br /&gt;​​​​​​​Thanks in advance.</summary>
    <dc:creator>Joaquin Cabal</dc:creator>
    <dc:date>2019-02-14T15:09:25Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112337890" />
    <author>
      <name>Olaf Kock</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112337890</id>
    <updated>2019-02-13T16:18:08Z</updated>
    <published>2019-02-13T16:18:08Z</published>
    <summary type="html">&lt;blockquote&gt;Joaquin Cabal&lt;br /&gt;&lt;br /&gt;Ok with that we so we know that the simple objects are not sinced.&lt;br /&gt;&lt;br /&gt;Apart from that we have a Listener afterUpdate JournalArticles. When we publish Journal articles from Staging to remote , to the ip of one of the nodes where load balancer is, this node execute all afterupdate listeners, but the other node doesn&amp;#39;t do that. You know if listener should be called in second node also?&lt;br /&gt;&lt;/blockquote&gt;Yes, I know. And no: They shouldn&amp;#39;t be called. They&amp;#39;re only called on the node where the update happens. All other nodes&amp;#39; cache will be invalidated and the objects technically never change in memory there. &lt;br /&gt;&lt;br /&gt;One of the usecases for clusters is to be able to distribute the load, in order to serve more requests. It&amp;#39;d be quite detrimental to execute such code on every single node. They share the database, and it should be enough to execute every listener once and only once.&lt;br /&gt;&lt;br /&gt;There&amp;#39;s no magic happening in clustering. Only expiring objects from the cache when other nodes signal that they&amp;#39;re changed.</summary>
    <dc:creator>Olaf Kock</dc:creator>
    <dc:date>2019-02-13T16:18:08Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112335115" />
    <author>
      <name>Joaquin Cabal</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112335115</id>
    <updated>2019-02-13T15:36:07Z</updated>
    <published>2019-02-13T15:36:07Z</published>
    <summary type="html">Ok with that we so we know that the simple objects are not sinced.&lt;br /&gt;&lt;br /&gt;Apart from that we have a Listener afterUpdate JournalArticles. When we publish Journal articles from Staging to remote , to the ip of one of the nodes where load balancer is, this node execute all afterupdate listeners, but the other node doesn&amp;#39;t do that. You know if listener should be called in second node also?</summary>
    <dc:creator>Joaquin Cabal</dc:creator>
    <dc:date>2019-02-13T15:36:07Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112329985" />
    <author>
      <name>Olaf Kock</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112329985</id>
    <updated>2019-02-13T14:37:10Z</updated>
    <published>2019-02-13T14:37:10Z</published>
    <summary type="html">&lt;blockquote&gt;Joaquin Cabal&lt;br /&gt;&lt;br /&gt;At osgi module level, a simple singleton class , when the variables of one node change , the other node should change also? Or the sinc of nodes is not at that level.&lt;br /&gt;&lt;/blockquote&gt;No, there&amp;#39;s no magic of reaching into another process&amp;#39;s memory. When an object is modified, the cluster communication layer will communicate the id of the changed object to the other cluster machines. In turn, the other nodes will remove the object in question from the cache. &lt;br /&gt;&lt;br /&gt;This means that any future access to those objects won&amp;#39;t be served from cache, so that they&amp;#39;ll be accessed from database, thus be current again.&lt;br /&gt;&lt;br /&gt;If you keep any objects in your own variables, there&amp;#39;s nothing that the cluster communication can do. In fact, keeping objects over long time in singletons is a recipe for disaster: You might even keep references to code that has long been undeployed. Don&amp;#39;t do that. This is the &amp;#34;custom cache&amp;#34; that you should eliminate. In fact, it&amp;#39;s arguable that &amp;#34;cache&amp;#34; is a good name for this. Keep the id and access the objects through the API when you need them. If they&amp;#39;re in cache, they&amp;#39;ll be served quickly. If they&amp;#39;re not in cache, they&amp;#39;ll be served with the current and updated fresh data.</summary>
    <dc:creator>Olaf Kock</dc:creator>
    <dc:date>2019-02-13T14:37:10Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112329648" />
    <author>
      <name>Joaquin Cabal</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112329648</id>
    <updated>2019-02-13T14:27:02Z</updated>
    <published>2019-02-13T14:27:02Z</published>
    <summary type="html">Hi Olaf,&lt;br /&gt;&lt;br /&gt;You know twe were trying to solve the error and didn&amp;#39;t find a solution yet.&lt;br /&gt;&lt;br /&gt;Maybe you can help me with this.&lt;br /&gt;&lt;br /&gt;At osgi module level, a simple singleton class , when the variables of one node change , the other node should change also? Or the sinc of nodes is not at that level.&lt;br /&gt;&lt;br /&gt;And having this in mind, if we use the Liferay impl cache in the module, should sinc between the nodes?&lt;br /&gt;&lt;br /&gt;Thnaks in advance!</summary>
    <dc:creator>Joaquin Cabal</dc:creator>
    <dc:date>2019-02-13T14:27:02Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112281069" />
    <author>
      <name>Joaquin Cabal</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112281069</id>
    <updated>2019-02-08T15:28:57Z</updated>
    <published>2019-02-08T15:28:57Z</published>
    <summary type="html">Thanks Olaf!&lt;br /&gt;&lt;br /&gt;We will work starting from Journal articles, without custom cache.&lt;br /&gt;Also will see if both nodes use same Elastic search instance.</summary>
    <dc:creator>Joaquin Cabal</dc:creator>
    <dc:date>2019-02-08T15:28:57Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112280146" />
    <author>
      <name>Olaf Kock</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112280146</id>
    <updated>2019-02-08T14:42:23Z</updated>
    <published>2019-02-08T14:42:23Z</published>
    <summary type="html">&lt;blockquote&gt;Joaquin CabalHi,  we are working with liferay 7.0 DXP  and have some doubts aboute the clustering config.&lt;br /&gt;&lt;br /&gt;This is current config:&lt;br /&gt;&lt;br /&gt;cluster.link.enabled=true&lt;br /&gt;lucene.replicate.write=true&lt;br /&gt;org.quartz.jobStore.isClustered=true&lt;br /&gt;ehcache.cluster.link.replication.enabled=true&lt;br /&gt;&lt;br /&gt;We have same Repository in both nodes, with AdvancedFileSystem. &lt;br /&gt;Also same Database.&lt;br /&gt;We have an own osgi module running on each node with some logic that doesn&amp;#39;t use Ehcache and has custom cache for Journal articles.&lt;br /&gt;&lt;/blockquote&gt;Starting from the end: You have a custom cache for Journal articles, and are wondering why it&amp;#39;s not updated through Liferay&amp;#39;s cluster communication? Start there. Or eliminate the cache - at least for a quick test.&lt;br /&gt;&lt;br /&gt;You should see evidence of proper caching (and peer discovery) in the logs. The default configuration uses Multicast. If that&amp;#39;s disabled, or if the machines can&amp;#39;t see each other, the cluster won&amp;#39;t be formed properly. Sooner or later you&amp;#39;ll see each other&amp;#39;s articles, but that&amp;#39;s only when the cache has been flushed.&lt;br /&gt;&lt;br /&gt;You also didn&amp;#39;t mention that you&amp;#39;ve configured all nodes to contact the same Elasticsearch instance.</summary>
    <dc:creator>Olaf Kock</dc:creator>
    <dc:date>2019-02-08T14:42:23Z</dc:date>
  </entry>
  <entry>
    <title>RE: Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112279497" />
    <author>
      <name>Joaquin Cabal</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112279497</id>
    <updated>2019-02-08T14:31:04Z</updated>
    <published>2019-02-08T14:31:04Z</published>
    <summary type="html">Hi,  we are working with liferay 7.0 DXP  and have some doubts aboute the clustering config.&lt;br /&gt;&lt;br /&gt;This is current config:&lt;br /&gt;&lt;br /&gt;cluster.link.enabled=true&lt;br /&gt;lucene.replicate.write=true&lt;br /&gt;org.quartz.jobStore.isClustered=true&lt;br /&gt;ehcache.cluster.link.replication.enabled=true&lt;br /&gt;&lt;br /&gt;We have same Repository in both nodes, with AdvancedFileSystem. &lt;br /&gt;Also same Database.&lt;br /&gt;We have an own osgi module running on each node with some logic that doesn&amp;#39;t use Ehcache and has custom cache for Journal articles.&lt;br /&gt;&lt;br /&gt;We have been researching and we still have differences between nodes. &lt;br /&gt;&lt;br /&gt;Specifically with Jorunal Articles, If we modify a Journal article, it should be replicated in both nodes at our own osgi module?&lt;br /&gt;&lt;br /&gt;Thanks in advance!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; </summary>
    <dc:creator>Joaquin Cabal</dc:creator>
    <dc:date>2019-02-08T14:31:04Z</dc:date>
  </entry>
  <entry>
    <title>Check cluster configuration Liferay DXP 7.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112279160" />
    <author>
      <name>Joaquin Cabal</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=112279160</id>
    <updated>2019-02-08T14:13:25Z</updated>
    <published>2019-02-08T14:13:25Z</published>
    <summary type="html">Check cluster configuration Liferay DXP 7.0</summary>
    <dc:creator>Joaquin Cabal</dc:creator>
    <dc:date>2019-02-08T14:13:25Z</dc:date>
  </entry>
</feed>
