Details

    • Affects:
      Release Notes
    • Release Notes Text:
      Hide
      A performance issue was identified in org.jnp.interfaces.NamingContext.checkRef, where every new InitialContext looped through the provider list in order. An unavailable node at the beginning of the provider list could cause a delay because it was waiting for a timeout before checking the next node. The fix adds an available JNDI Property (jnp.unorderedProviderList) and a system property (jboss.global.jnp.disableDiscovery). These properties change the initial JNDI server lookup order when multiple providers are used. Without the property (default), each provider is still tried in order on every new InitialContext. With the new property set, any existing connection to any provider is used before checking the provider list in order again.
      Show
      A performance issue was identified in org.jnp.interfaces.NamingContext.checkRef, where every new InitialContext looped through the provider list in order. An unavailable node at the beginning of the provider list could cause a delay because it was waiting for a timeout before checking the next node. The fix adds an available JNDI Property (jnp.unorderedProviderList) and a system property (jboss.global.jnp.disableDiscovery). These properties change the initial JNDI server lookup order when multiple providers are used. Without the property (default), each provider is still tried in order on every new InitialContext. With the new property set, any existing connection to any provider is used before checking the provider list in order again.
    • Release Notes Docs Status:
      Documented as Resolved Issue
    • Docs QE Status:
      ON_QA

      Description

      org.jnp.interfaces.NamingContext.checkRef always loops through the provider list in order,
      trying to connect to the first before checking for a cached connection to a later provider.

      This affects performance because it can cause a delay on every context created, waiting for a timeout on a node that is down.

      For instance, the following takes a very long time when node1 is down.

      ...
      env.put ( Context.PROVIDER_URL, "node1:1100,node2:1100" );
      for ( int i = 0; i < 1000; ++ i )

      { InitialContext ctx = new InitialContext ( env ); ... }

      If checkRef looked for a cached connection to any of the listed providers before trying to connect to an uncached one,
      there would only be a timeout delay on the very first connection attempt.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  dereed Dennis Reed
                  Reporter:
                  dereed Dennis Reed
                  Writer:
                  Jared Morgan
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: