You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@aries.apache.org by "Guillaume Nodet (JIRA)" <ji...@apache.org> on 2018/02/19 10:10:00 UTC

[jira] [Comment Edited] (ARIES-1068) JNDI lookup performance bad when security enabled

    [ https://issues.apache.org/jira/browse/ARIES-1068?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14043312#comment-14043312 ] 

Guillaume Nodet edited comment on ARIES-1068 at 2/19/18 10:09 AM:
------------------------------------------------------------------

Further minor tweak for ServiceTrackerCustomizers:

ungetService can throw an IllegalStateException if the bundle is no longer valid, and this code needs to silently ignore this

Line 330:
{code}
try {
        _callerContext.ungetService(reference);
      } catch (IllegalStateException e) {
        //Shouldn't matter that we get an IllegalStateException here.
        if (LOGGER.isLoggable(Level.FINE)) LOGGER.log(Level.FINE, "IllegalStateException ungetting " + reference + " from " + _callerContext);
      }
{code}

Line 422:
{code}
try {
                      bCtx.ungetService(serviceRef);
                    } catch (IllegalStateException e) {
                      //Shouldn't matter that we get an IllegalStateException here.
                      if (LOGGER.isLoggable(Level.FINE)) LOGGER.log(Level.FINE, "CacheBundleTrackerCustomizer.removedBundle IllegalStateException ungetting " + serviceRef + " from " + bCtx);
                    }
{code}



was (Author: sgormley):
Further minor tweak for ServiceTrackerCustomizers:

ungetService can throw an IllegalStateException if the bundle is no longer valid, and this code needs to silently ignore this

Line 330:
try {
        _callerContext.ungetService(reference);
      } catch (IllegalStateException e) {
        //Shouldn't matter that we get an IllegalStateException here.
        if (LOGGER.isLoggable(Level.FINE)) LOGGER.log(Level.FINE, "IllegalStateException ungetting " + reference + " from " + _callerContext);
      }

Line 422:
try {
                      bCtx.ungetService(serviceRef);
                    } catch (IllegalStateException e) {
                      //Shouldn't matter that we get an IllegalStateException here.
                      if (LOGGER.isLoggable(Level.FINE)) LOGGER.log(Level.FINE, "CacheBundleTrackerCustomizer.removedBundle IllegalStateException ungetting " + serviceRef + " from " + bCtx);
                    }

> JNDI lookup performance bad when security enabled
> -------------------------------------------------
>
>                 Key: ARIES-1068
>                 URL: https://issues.apache.org/jira/browse/ARIES-1068
>             Project: Aries
>          Issue Type: Bug
>          Components: JNDI
>            Reporter: Simon Gormley
>            Assignee: Jeremy Hughes
>            Priority: Critical
>         Attachments: servicelookupperf.patch
>
>
> JNDI lookups can be slow if Java security is enabled, specifically the getService methods take time.
> If the services are cached then the lookup only has to be performed once, but care has to be taken that the context performing the service lookup has the required permissions to do so, and so cache buckets for each context will be necessary. 
> Also to prevent a leak, when contexts drop from scope, the associated caches need to be cleared out.
> The ServiceTrackerCustomizer for JNDI already had some caching ability, and the provided patch extends this to avoid looking up Services where possible.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)