Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-36212

persisted configuration includes cache internals.

    Details

    • Similar Issues:

      Description

      When you configure the AD plugin (1.47 ) with a cache the main jenkins config contains the internals of the cache implementation and not the spcific cache configuration.

      The plugin should just persist the cache configuration (ttl/count) and recreate the caches on demand to prevent being tied to internal cache implementation/api changes.

      config.xml
        <securityRealm class="hudson.plugins.active_directory.ActiveDirectorySecurityRealm" plugin="active-directory@1.47">
          <domain>internal.local</domain>
          <bindName>binduser</bindName>
          <bindPassword>somevalue</bindPassword>
          <server>someServer:3268</server>
          <groupLookupStrategy>RECURSIVE</groupLookupStrategy>
          <removeIrrelevantGroups>false</removeIrrelevantGroups>
          <cache>
            <size>256</size>
            <ttl>30</ttl>
            <userCache class="com.google.common.cache.LocalCache$LocalManualCache" resolves-to="com.google.common.cache.LocalCache$ManualSerializationProxy">
              <keyStrength>STRONG</keyStrength>
              <valueStrength>STRONG</valueStrength>
              <keyEquivalence class="com.google.common.base.Equivalences$Equals"/>
              <valueEquivalence class="com.google.common.base.Equivalences$Equals" reference="../keyEquivalence"/>
              <expireAfterWriteNanos>30000000000</expireAfterWriteNanos>
              <expireAfterAccessNanos>0</expireAfterAccessNanos>
              <maxWeight>256</maxWeight>
              <weigher class="com.google.common.cache.CacheBuilder$OneWeigher">INSTANCE</weigher>
              <concurrencyLevel>4</concurrencyLevel>
              <removalListener class="com.google.common.cache.CacheBuilder$NullListener">INSTANCE</removalListener>
            </userCache>
            <groupCache class="com.google.common.cache.LocalCache$LocalManualCache" resolves-to="com.google.common.cache.LocalCache$ManualSerializationProxy">
              <keyStrength>STRONG</keyStrength>
              <valueStrength>STRONG</valueStrength>
              <keyEquivalence class="com.google.common.base.Equivalences$Equals" reference="../../userCache/keyEquivalence"/>
              <valueEquivalence class="com.google.common.base.Equivalences$Equals" reference="../../userCache/keyEquivalence"/>
              <expireAfterWriteNanos>30000000000</expireAfterWriteNanos>
              <expireAfterAccessNanos>0</expireAfterAccessNanos>
              <maxWeight>256</maxWeight>
              <weigher class="com.google.common.cache.CacheBuilder$OneWeigher">INSTANCE</weigher>
              <concurrencyLevel>4</concurrencyLevel>
              <removalListener class="com.google.common.cache.CacheBuilder$NullListener">INSTANCE</removalListener>
            </groupCache>
          </cache>
        </securityRealm>
      

        Attachments

          Activity

          teilo James Nord created issue -
          teilo James Nord made changes -
          Field Original Value New Value
          Description When you configure the AD plugin with a cache the main jenkins config contains the internals of the cache implementation and not the spcific cache configuration.

          The plugin should just persist the cache configuration (ttl/count) and recreate the caches on demand to prevent being tied to internal cache implementation/api changes.


          {code:xml|title=config.xml}
            <securityRealm class="hudson.plugins.active_directory.ActiveDirectorySecurityRealm" plugin="active-directory@1.47">
              <domain>internal.local</domain>
              <bindName>binduser</bindName>
              <bindPassword>somevalue</bindPassword>
              <server>someServer:3268</server>
              <groupLookupStrategy>RECURSIVE</groupLookupStrategy>
              <removeIrrelevantGroups>false</removeIrrelevantGroups>
              <cache>
                <size>256</size>
                <ttl>30</ttl>
                <userCache class="com.google.common.cache.LocalCache$LocalManualCache" resolves-to="com.google.common.cache.LocalCache$ManualSerializationProxy">
                  <keyStrength>STRONG</keyStrength>
                  <valueStrength>STRONG</valueStrength>
                  <keyEquivalence class="com.google.common.base.Equivalences$Equals"/>
                  <valueEquivalence class="com.google.common.base.Equivalences$Equals" reference="../keyEquivalence"/>
                  <expireAfterWriteNanos>30000000000</expireAfterWriteNanos>
                  <expireAfterAccessNanos>0</expireAfterAccessNanos>
                  <maxWeight>256</maxWeight>
                  <weigher class="com.google.common.cache.CacheBuilder$OneWeigher">INSTANCE</weigher>
                  <concurrencyLevel>4</concurrencyLevel>
                  <removalListener class="com.google.common.cache.CacheBuilder$NullListener">INSTANCE</removalListener>
                </userCache>
                <groupCache class="com.google.common.cache.LocalCache$LocalManualCache" resolves-to="com.google.common.cache.LocalCache$ManualSerializationProxy">
                  <keyStrength>STRONG</keyStrength>
                  <valueStrength>STRONG</valueStrength>
                  <keyEquivalence class="com.google.common.base.Equivalences$Equals" reference="../../userCache/keyEquivalence"/>
                  <valueEquivalence class="com.google.common.base.Equivalences$Equals" reference="../../userCache/keyEquivalence"/>
                  <expireAfterWriteNanos>30000000000</expireAfterWriteNanos>
                  <expireAfterAccessNanos>0</expireAfterAccessNanos>
                  <maxWeight>256</maxWeight>
                  <weigher class="com.google.common.cache.CacheBuilder$OneWeigher">INSTANCE</weigher>
                  <concurrencyLevel>4</concurrencyLevel>
                  <removalListener class="com.google.common.cache.CacheBuilder$NullListener">INSTANCE</removalListener>
                </groupCache>
              </cache>
            </securityRealm>
          {code}
          When you configure the AD plugin (1.47 ) with a cache the main jenkins config contains the internals of the cache implementation and not the spcific cache configuration.

          The plugin should just persist the cache configuration (ttl/count) and recreate the caches on demand to prevent being tied to internal cache implementation/api changes.


          {code:xml|title=config.xml}
            <securityRealm class="hudson.plugins.active_directory.ActiveDirectorySecurityRealm" plugin="active-directory@1.47">
              <domain>internal.local</domain>
              <bindName>binduser</bindName>
              <bindPassword>somevalue</bindPassword>
              <server>someServer:3268</server>
              <groupLookupStrategy>RECURSIVE</groupLookupStrategy>
              <removeIrrelevantGroups>false</removeIrrelevantGroups>
              <cache>
                <size>256</size>
                <ttl>30</ttl>
                <userCache class="com.google.common.cache.LocalCache$LocalManualCache" resolves-to="com.google.common.cache.LocalCache$ManualSerializationProxy">
                  <keyStrength>STRONG</keyStrength>
                  <valueStrength>STRONG</valueStrength>
                  <keyEquivalence class="com.google.common.base.Equivalences$Equals"/>
                  <valueEquivalence class="com.google.common.base.Equivalences$Equals" reference="../keyEquivalence"/>
                  <expireAfterWriteNanos>30000000000</expireAfterWriteNanos>
                  <expireAfterAccessNanos>0</expireAfterAccessNanos>
                  <maxWeight>256</maxWeight>
                  <weigher class="com.google.common.cache.CacheBuilder$OneWeigher">INSTANCE</weigher>
                  <concurrencyLevel>4</concurrencyLevel>
                  <removalListener class="com.google.common.cache.CacheBuilder$NullListener">INSTANCE</removalListener>
                </userCache>
                <groupCache class="com.google.common.cache.LocalCache$LocalManualCache" resolves-to="com.google.common.cache.LocalCache$ManualSerializationProxy">
                  <keyStrength>STRONG</keyStrength>
                  <valueStrength>STRONG</valueStrength>
                  <keyEquivalence class="com.google.common.base.Equivalences$Equals" reference="../../userCache/keyEquivalence"/>
                  <valueEquivalence class="com.google.common.base.Equivalences$Equals" reference="../../userCache/keyEquivalence"/>
                  <expireAfterWriteNanos>30000000000</expireAfterWriteNanos>
                  <expireAfterAccessNanos>0</expireAfterAccessNanos>
                  <maxWeight>256</maxWeight>
                  <weigher class="com.google.common.cache.CacheBuilder$OneWeigher">INSTANCE</weigher>
                  <concurrencyLevel>4</concurrencyLevel>
                  <removalListener class="com.google.common.cache.CacheBuilder$NullListener">INSTANCE</removalListener>
                </groupCache>
              </cache>
            </securityRealm>
          {code}
          fbelzunc Félix Belzunce Arcos made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          rtyler R. Tyler Croy made changes -
          Workflow JNJira [ 172873 ] JNJira + In-Review [ 185804 ]
          Show
          batmat Baptiste Mathus added a comment - Fixed with https://github.com/jenkinsci/active-directory-plugin/commit/af4f0ec5c9f965e28289d5443e16d1dea3255668
          batmat Baptiste Mathus made changes -
          Status In Progress [ 3 ] Open [ 1 ]
          Hide
          batmat Baptiste Mathus added a comment -

          Fixed and released in 1.48

          Show
          batmat Baptiste Mathus added a comment - Fixed and released in 1.48
          batmat Baptiste Mathus made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]

            People

            • Assignee:
              fbelzunc Félix Belzunce Arcos
              Reporter:
              teilo James Nord
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: