ICEpush
  1. ICEpush
  2. PUSH-178

Improve control of annotation scanning performance (Part 1)

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.0.1, EE 3.0.0
    • Fix Version/s: 3.1, EE-3.0.0.GA_P01
    • Component/s: Push Library
    • Labels:
      None
    • Environment:
      ICEpush
    • Assignee Priority:
      P1
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.), Compatibility/Configuration

      Description

      The PushGroupManagerFactory.newPushGroupManager() method has some code that attempts to scan the classpath for implementations of an interface to determine which PushGroupManager implementation to use. The main use case for this is detecting EPS. In applications or environments where the classpath contains many libraries, this can cause a performance issue during the initial request.

      We discussed two strategies for dealing with this. For the short-term, we should supply a context-parameter that allows this to be turned off for environments that know EPS is not being used. In the long-term, we should switch to using the TLD to simply specify which implementation should be used.

        Activity

        Hide
        Deryk Sinotte added a comment -

        Assigning to Jack and linking to SaleForce case.

        Show
        Deryk Sinotte added a comment - Assigning to Jack and linking to SaleForce case.
        Hide
        Jack Van Ooststroom added a comment -

        Sending core/src/main/java/org/icepush/PushGroupManagerFactory.java
        Sending core/src/main/java/org/icepush/servlet/MainServlet.java
        Transmitting file data ..
        Committed revision 29921.

        Show
        Jack Van Ooststroom added a comment - Sending core/src/main/java/org/icepush/PushGroupManagerFactory.java Sending core/src/main/java/org/icepush/servlet/MainServlet.java Transmitting file data .. Committed revision 29921.
        Hide
        Jack Van Ooststroom added a comment -

        Introduced a new String context parameter org.icepush.pushGroupManager which can be used to specify either org.icepush.LocalPushGroupManager or com.icesoft.push.DynamicPushGroupManager (in case of EPS) to avoid annotation scanning.

        Scenarios:

        • org.icepush.pushGroupManager is not specified or empty -> annotation scanning for @ExtendedPushGroupManager: if found use it, if not revert to LocalPushGroupManager
        • org.icepush.pushGroupManager is specified -> load class: if successful use it, if not revert to LocalPushGroupManager

        I tested these scenarios both with and without EPS.

        Marking this one as FIXED.

        Show
        Jack Van Ooststroom added a comment - Introduced a new String context parameter org.icepush.pushGroupManager which can be used to specify either org.icepush.LocalPushGroupManager or com.icesoft.push.DynamicPushGroupManager (in case of EPS) to avoid annotation scanning. Scenarios: org.icepush.pushGroupManager is not specified or empty -> annotation scanning for @ExtendedPushGroupManager: if found use it, if not revert to LocalPushGroupManager org.icepush.pushGroupManager is specified -> load class: if successful use it, if not revert to LocalPushGroupManager I tested these scenarios both with and without EPS. Marking this one as FIXED.

          People

          • Assignee:
            Jack Van Ooststroom
            Reporter:
            Deryk Sinotte
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: