IBM Support

Standalone LDAP problem

Troubleshooting


Problem

Our standalone LDAP instance is encountering a problem when starting up on a server that coincidentally underwent system maintenance. The it appears as though the service runs, but the socket is never opened and no connections are made to the LDAP instance. This occurs even after a fresh install of the entire Initiate software on the server.

Symptom

The following errors are found in the mpildap log:

04:15:44 [00032] ERROR WaiterApplicationContextExecutor: Expecting state (resolving-dependencies) not (dependencies-resolved) for context [OsgiBundleXmlApplicationContext(bundle=com.initiate.server.engine, config=osgibundle:/META-INF/spring/*.xml)]; assuming an interruption and bailing out
04:15:44 [00029] INFO com.initiate.server.hibernate: ServiceEvent REGISTERED
04:15:44 [00029] INFO com.initiate.server.hibernate: ServiceEvent REGISTERED
04:15:44 [00029] INFO com.initiate.server.logic: ServiceEvent REGISTERED
04:15:44 [00029] INFO com.initiate.server.jmx.server: ServiceEvent REGISTERED
04:15:44 [00029] INFO com.initiate.server.jmx.server: ServiceEvent REGISTERED
04:15:44 [00033] INFO or.AuditedConnectorServerFactory: JMX connector available at: service:jmx:jmxmp://localhost:1220
04:15:44 [00029] INFO com.initiate.server.jmx.jmxmp: ServiceEvent REGISTERED
04:15:44 [00029] INFO om.initiate.server.log.log4j.jmx: ServiceEvent REGISTERED
04:15:44 [00032] INFO nate.BootstrapSessionFactoryBean: Building new Hibernate SessionFactory
04:15:44 [00029] INFO com.initiate.server.ldap.client: ServiceEvent REGISTERED
04:15:45 [00033] INFO ervice.EmbeddedLdapServerService: Attempting to start the internal LDAP server service.
04:15:47 [00032] INFO ernate.DynamicSessionFactoryBean: Building new Hibernate SessionFactory
04:15:48 [00033] ERROR container.BlueprintContainerImpl: Unable to start blueprint container for bundle com.initiate.server.ldap.server
org.osgi.service.blueprint.container.ComponentDefinitionException: Unable to intialize bean ldapService
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:582)
at org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:693)
at org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:64)
at org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:212)
at org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:140)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:606)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:313)
at org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:212)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.opends.server.config.ConfigException: An error occurred while trying to initialize a connection handler loaded from class org.opends.server.protocols.ldap.LDAPConnectionHandler with the information in configuration entry cn=LDAP Connection Handler,cn=Connection Handlers,cn=config: Unable to call select() in the LDAP connection handler: java.io.IOException: Invalid argument. It appears that your JVM may be susceptible to the issue described at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6322825, and it is unable to handle LDAP requests in its current configuration. Please upgrade to a newer JVM that does not exhibit this behavior (Java 5.0 Update 8 or higher) or set the number of available file descriptors to a value greater than or equal to 8193 (e.g., by issuing the command 'ulimit -n 8193') before starting the Directory Server (LDAPRequestHandler.java:161 LDAPConnectionHandler.java:730 NativeMethodAccessorImpl.java:-2 NativeMethodAccessorImpl.java:39 DelegatingMethodAccessorImpl.java:25 Method.java:597 ConnectionHandlerConfigManager.java:412 ConnectionHandlerConfigManager.java:312 DirectoryServer.java:3043 DirectoryServer.java:1399 EmbeddedUtils.java:89 EmbeddedLdapServerService.java:78 NativeMethodAccessorImpl.java:-2 NativeMethodAccessorImpl.java:39 DelegatingMethodAccessorImpl.java:25 Method.java:597 ReflectionUtils.java:235 AccessController.java:-2 ReflectionUtils.java:233 BeanRecipe.java:803 BeanRecipe.java:580 ...). This connection handler will be disabled
at org.opends.server.core.ConnectionHandlerConfigManager.getConnectionHandler(ConnectionHandlerConfigManager.java:422)
at org.opends.server.core.ConnectionHandlerConfigManager.initializeConnectionHandlerConfig(ConnectionHandlerConfigManager.java:312)
at org.opends.server.core.DirectoryServer.initializeConnectionHandlers(DirectoryServer.java:3043)
at org.opends.server.core.DirectoryServer.startServer(DirectoryServer.java:1399)
at org.opends.server.util.EmbeddedUtils.startServer(EmbeddedUtils.java:89)
at com.initiatesystems.hub.ldap.service.EmbeddedLdapServerService.start(EmbeddedLdapServerService.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.aries.blueprint.utils.ReflectionUtils$1.run(ReflectionUtils.java:235)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:233)
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:803)
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:580)
... 15 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.opends.server.core.ConnectionHandlerConfigManager.getConnectionHandler(ConnectionHandlerConfigManager.java:412)
... 29 more
Caused by: org.opends.server.types.InitializationException: Unable to call select() in the LDAP connection handler: java.io.IOException: Invalid argument. It appears that your JVM may be susceptible to the issue described at http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6322825, and it is unable to handle LDAP requests in its current configuration. Please upgrade to a newer JVM that does not exhibit this behavior (Java 5.0 Update 8 or higher) or set the number of available file descriptors to a value greater than or equal to 8193 (e.g., by issuing the command 'ulimit -n 8193') before starting the Directory Server
at org.opends.server.protocols.ldap.LDAPRequestHandler.<init>(LDAPRequestHandler.java:161)
at org.opends.server.protocols.ldap.LDAPConnectionHandler.initializeConnectionHandler(LDAPConnectionHandler.java:730)
... 34 more
Caused by: java.io.IOException: Invalid argument
at sun.nio.ch.DevPollArrayWrapper.poll0(Native Method)
at sun.nio.ch.DevPollArrayWrapper.poll(DevPollArrayWrapper.java:170)
at sun.nio.ch.DevPollSelectorImpl.doSelect(DevPollSelectorImpl.java:68)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.selectNow(SelectorImpl.java:88)
at org.opends.server.protocols.ldap.LDAPRequestHandler.<init>(LDAPRequestHandler.java:147)
... 35 more

Cause

The log indicates that the underlying cause is a Java bug on Solaris. More background information can be found at the official bug report at: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6322825.

Environment

Solaris 10

Resolving The Problem

There are two work-arounds for the Java exception shown above, You must ensure that both are considered.

  1. Set the file descriptor limit to > 8192. Ensure that the user and hard limits are set high enough.
  2. Override the default selector provider by setting the following JVM property. This line needs to be added to the wrapper.conf file. This is usually the 10th additional argument but may be different in other implementations, so we'll have to set the property name accordingly 'wrapper.java.additional.X'. "

The setting must be set as follows:

wrapper.java.additional.10=-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.PollSelectorProvider

[{"Product":{"code":"SSLVY3","label":"Initiate Master Data Service"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Component":"--","Platform":[{"code":"PF027","label":"Solaris"}],"Version":"9.2.0","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg21613217