glassfish
  1. glassfish
  2. GLASSFISH-17040

3.1.1 deployment performance - appclient module get loaded for a web app

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.1
    • Fix Version/s: 3.1.1_b12, 4.0
    • Component/s: standalone_client
    • Labels:
      None

      Description

      Using the felix console to monitor which module get loaded for the web application deployment, noticed the following appclient module got active:
      19|Active | 1|org.glassfish.appclient.gf-client-module (3.1.1.SNAPSHOT)

      and following got resolved:
      13|Resolved | 1|org.glassfish.appclient.acc-config (3.1.1.SNAPSHOT)
      46|Resolved | 1|org.glassfish.security.appclient.security (3.1.1.SNAPSHOT)

      we need to figure out which dependency had triggered the appclient related modules get loaded/resolved, they should not be for a web application. The test web application is attached in its parent issue.

        Issue Links

          Activity

          Hide
          Hong Zhang added a comment -

          Further analysis showed the gf-client.jar is brought in by the Archivist[] injection in ArchivistFactory. There is an appclient archivist (which is only intended to use on client side) resides in this module:

          Inhabitants / stack combination
          -----------------------------------
          Requested by LazyInhabitant-4987310(org.glassfish.appclient.client.acc.ACCAppClientArchivist, active: null) called from java.util.AbstractList$Itr.next:345 metadata

          {class: [org.glassfish.appclient.client.acc.ACCAppClientArchivist] index: [com.sun.enterprise.deployment.archivist.Archivist] }

          Looks like module org.glassfish.appclient.gf-client-module was started because org.glassfish.deployment.dol was started
          Since org.glassfish.deployment.dol contains ConstructorCreator-30908546(com.sun.enterprise.deployment.archivist.ArchivistFactory) called from java.util.AbstractList$Itr.next:345 metadata

          {class: [com.sun.enterprise.deployment.archivist.ArchivistFactory] index: [org.glassfish.api.ContractProvider] }
          Show
          Hong Zhang added a comment - Further analysis showed the gf-client.jar is brought in by the Archivist[] injection in ArchivistFactory. There is an appclient archivist (which is only intended to use on client side) resides in this module: Inhabitants / stack combination ----------------------------------- Requested by LazyInhabitant-4987310(org.glassfish.appclient.client.acc.ACCAppClientArchivist, active: null) called from java.util.AbstractList$Itr.next:345 metadata {class: [org.glassfish.appclient.client.acc.ACCAppClientArchivist] index: [com.sun.enterprise.deployment.archivist.Archivist] } Looks like module org.glassfish.appclient.gf-client-module was started because org.glassfish.deployment.dol was started Since org.glassfish.deployment.dol contains ConstructorCreator-30908546(com.sun.enterprise.deployment.archivist.ArchivistFactory) called from java.util.AbstractList$Itr.next:345 metadata {class: [com.sun.enterprise.deployment.archivist.ArchivistFactory] index: [org.glassfish.api.ContractProvider] }
          Hide
          Tim Quinn added a comment -

          I moved the ACCAppClientArchivist from gf-client-module into dol. Now, when I deploy the web app, the gf-client-module does NOT go into the active state (at least not when I telnet into 6666 and run bundles | grep gf-client).

          Running tests now.

          Show
          Tim Quinn added a comment - I moved the ACCAppClientArchivist from gf-client-module into dol. Now, when I deploy the web app, the gf-client-module does NOT go into the active state (at least not when I telnet into 6666 and run bundles | grep gf-client). Running tests now.
          Hide
          Tim Quinn added a comment -

          QL and deployment devtests passed. I have sent the two changed JARs to Amit to see if he can run some tests to measure the improvement, if any.

          Show
          Tim Quinn added a comment - QL and deployment devtests passed. I have sent the two changed JARs to Amit to see if he can run some tests to measure the improvement, if any.
          Hide
          Tim Quinn added a comment -

          Why fix this issue in 3.1.1?
          reduce memory footprint, increase performance of deployments that do not include app clients

          Which is the targeted build of 3.1.1 for this fix?
          b12

          Do regression tests exist for this issue?
          yes, deployment devtests and QL

          Which tests should QA (re)run to verify the fix did not destabilize GlassFish?
          any tests that involve app clients

          Show
          Tim Quinn added a comment - Why fix this issue in 3.1.1? reduce memory footprint, increase performance of deployments that do not include app clients Which is the targeted build of 3.1.1 for this fix? b12 Do regression tests exist for this issue? yes, deployment devtests and QL Which tests should QA (re)run to verify the fix did not destabilize GlassFish? any tests that involve app clients
          Hide
          scatari added a comment -

          Required to meet performance requirements.

          Show
          scatari added a comment - Required to meet performance requirements.
          Hide
          Tim Quinn added a comment -

          Fix checked in.

          3.1.1: rev 48031
          trunk: rev 48033

          Project: glassfish
          Repository: svn
          Revision: 48031
          Author: tjquinn
          Date: 2011-07-14 13:25:35 UTC
          Link:

          Log Message:
          ------------
          Fix for 17040

          The ACCAppClientArchivist is used only in the ACC to read client archives. But because it is an Archivist, the deployment infrastructure in the DAS loads this class, which causes the gf-client-module module to be activated during any deployment, regardless of whether the app contains an app client.

          These changes move the ACCAppClientArchivist out of gf-client-module into the deployment/dol module. As a result gf-client-module is not unnecessarily activated.

          Approved for 3.1.1: Sathyan
          Tests: QL, deployment devtests

          Revisions:
          ----------
          48031

          Modified Paths:
          ---------------
          branches/3.1.1/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/FacadeLaunchable.java

          Added Paths:
          ------------
          branches/3.1.1/deployment/dol/src/main/java/com/sun/enterprise/deployment/archivist/ACCAppClientArchivist.java

          Show
          Tim Quinn added a comment - Fix checked in. 3.1.1: rev 48031 trunk: rev 48033 Project: glassfish Repository: svn Revision: 48031 Author: tjquinn Date: 2011-07-14 13:25:35 UTC Link: Log Message: ------------ Fix for 17040 The ACCAppClientArchivist is used only in the ACC to read client archives. But because it is an Archivist, the deployment infrastructure in the DAS loads this class, which causes the gf-client-module module to be activated during any deployment, regardless of whether the app contains an app client. These changes move the ACCAppClientArchivist out of gf-client-module into the deployment/dol module. As a result gf-client-module is not unnecessarily activated. Approved for 3.1.1: Sathyan Tests: QL, deployment devtests Revisions: ---------- 48031 Modified Paths: --------------- branches/3.1.1/appclient/client/acc/src/main/java/org/glassfish/appclient/client/acc/FacadeLaunchable.java Added Paths: ------------ branches/3.1.1/deployment/dol/src/main/java/com/sun/enterprise/deployment/archivist/ACCAppClientArchivist.java

            People

            • Assignee:
              Tim Quinn
              Reporter:
              Hong Zhang
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: