Uploaded image for project: 'Commons Pool'
  1. Commons Pool
  2. POOL-293

Allow for simpler extending of EvictionConfig for use with custom EvictionPolicies

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 2.3
    • Fix Version/s: 2.4.1
    • Labels:
      None

      Description

      Presently, EvictionConfig contains just three items of configuration: the minEvictableIdleTimeMillis, softMinEvictableIdleTimeMillis, and minIdle. In the case of GenericObjectPool, these are set inside the evict() method and passed along to the evictionPolicy.evict method. The evictionPolicy cannot be set directly, but rather is only instantiated by specifying a class name. The evictionPolicy also cannot be read in a subclass.

      Consequently if it is desired to pass along some additional parameter to the evictionPolicy, it has to either be a constant or a static variable applying to every instance of the policy. It isn't possible to easily pass it along using a subclass of EvictionConfig because it's being created inside evict(), and because there isn't a way to get a handle to the EvictionPolicy once it's created, it also can't be set on the policy after the fact.

      It would be nice if BaseGenericObjectPool#getEvictionPolicy() were protected instead of default security so that a subclass could invoke a setter on the evictionPolicy instance to configure it, or if GenericObjectPool#evict could call a protected method like createEvictionConfigInstance(...), so that a subclass could provide a custom EvictionConfig instance containing the additional configuration for a subclassed EvictionPolicy to use.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              spatula Nick Johnson
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: