Unable to start all drivers after eDir/IdM upgrade

  • 7024268
  • 18-Nov-2019
  • 18-Nov-2019

Environment

eDirectory 9.x
Identity Manager 4.7.x
Identity Manager 4.8
SUSE Linux Enterprise Server 12

Situation

After in-place upgrade of a server it's not possible to start up all drivers. Some drivers get stuck starting up, and errors can point to Out Of Memory conditions or it can lead to system crashes. The system behaves normally with the first 25-30 drivers, but after a certain limit, it's not possible to start another one, no matter what kind of driver it is.

Some of the errors that can be seen are:

Code(-9010) An exception occurred: java.lang.OutOfMemoryError: unable to create new native thread

An exception occurred: com.microfocus.database.DBException: createOrOpenMap:RetCode:50436

Resolution

Check the ndsd unit file and verify that the parameter TasksMax is set. The default location of the file is:

/usr/lib/systemd/system/ndsdtmpl-etc-opt-novell-eDirectory-conf-nds.conf@.service

Edit the file and add the line "TasksMax=infinity" in the [Service] section. Save the change and reload the systemctl daemon with the command:

systemctl daemon-reload

After this, restart the ndsd process for the change to take effect.

Cause

The errors mentioned above indicate that the system is not able to create a new thread. A likely cause for this is that the Operating System is imposing a limit on the amount of threads created.

By default, the ndsd unit file should contain the line:

TasksMax=infinity

If this line is missing, the operating system will limit the maximum amount of threads to 256 and cause these problems.

Additional Information

Here is the full stack of one of the most common errors that can be seen with this issue:

com.microfocus.database.DBException: createOrOpenMap:RetCode:50436
at com.microfocus.database.zoomdb.jni.MapInterface.createOrOpenMap(Native Method)
at com.microfocus.database.zoomdb.hashmap.HashMapImpl.mapCreateOrOpen(Unknown Source)
at com.microfocus.database.zoomdb.map.MapImpl.open(Unknown Source)
at com.microfocus.database.zoomdb.map.MapHandler.open(Unknown Source)
at com.microfocus.database.zoomdb.HashMapMakerImpl.make(Unknown Source)
....