Uploaded image for project: 'PUBLIC - Liferay Portal Community Edition'
  1. PUBLIC - Liferay Portal Community Edition
  2. LPS-65393

PortalInstances out-of-sync adding or removing company on cluster



      Steps to Reproduce - 6.2
      1. Setup 6.2 cluster (running on localhost:8080 and localhost:9080 - patch level: portal-128
      2. Add Portal Instance from Control Panel (ie. virtual host: test) on node1
      3. Navigate to Control Panel > User > Roles and click on 'Power user' then on 'Define permission tab'
      Checkpoint: you can see the list to default set permission provided to power user role
      4. Now login as test user in test:9080 (node2)
      5. Navigate to Control Panel > User > Roles and click on 'Power user' then on 'Define permission' tab
      Result: empty page is shown apart from the menu bar on the left

      PortalInstances is a "psuedo" cache of Company information. It is used, for example, by PortalUtil to return configured companies or the default one.

      In a cluster environment when you add or remove a company from a node, in the other nodes PortalInstances is not updated.

      I've configured a cluster with two nodes and two company (on the left node1 on the right node2). In the homepage a custom portlet will show:

      • output of PortalUtil.getCompanyIds
      • output of CompanyLocalServiceUtil.getCompanies()

      On node1 I've added a new instance

      New company is visible on PortalInstances on node1

      But when I refresh homepage on node2:

      • CompanyLocalServiceUtil has the new company
      • PortalInstances doesn't have the new company

      Database is up-to-date. PortalInstances is out of sync.
      All the code running on node2 using PortalInstances or PortalUtil will never see the new company.

      For example if you install a plugin with a StartupAction on node2 this Startup is runned only on two companies

      13:20:44,335 INFO  [localhost-startStop-2][HookHotDeployListener:709] Registering hook for test_instances-portlet
      Loading file:/wos1/java/products/bundle625/liferay-portal-6.2-ce-ga6/tomcat-7.0.62/temp/9-test_instances-portlet/WEB-INF/classes/portal.properties
      13:20:44,344 INFO  [localhost-startStop-2][TestStartupAction:21] Company 20155:liferay.com
      13:20:44,355 INFO  [localhost-startStop-2][TestStartupAction:21] Company 20535:test01.vm.local
      13:20:44,355 INFO  [localhost-startStop-2][HookHotDeployListener:851] Hook for test_instances-portlet is available for use
      13:20:44,357 INFO  [localhost-startStop-2][PortletHotDeployListener:344] Registering portlets for test_instances-portlet
      13:20:44,451 INFO  [localhost-startStop-2][PortletHotDeployListener:492] 1 portlet for test_instances-portlet is available for use

      The things will go worst when you remove a company


        1. cluster01.png
          46 kB
        2. cluster02.png
          25 kB
        3. cluster03.png
          74 kB
        4. cluster04.png
          47 kB
        5. cluster05.png
          77 kB
        6. Reproduced.png
          46 kB
        7. test_instances-portlet.zip
          47 kB

        Issue Links



              linda.sui Linda Sui
              maumar Mauro Mariuzzo
              Kiyoshi Lee Kiyoshi Lee
              0 Vote for this issue
              1 Start watching this issue


                5 years, 47 weeks, 6 days ago


                  Version Package
                  6.2.X EE
                  7.0.0 DXP FP14
                  7.0.0 DXP SP3
                  7.0.3 CE GA4
                  7.0.X EE