Environment
eDirectory 9.x
Identity Manager 4.7.x
Identity Manager 4.7.x
Identity Manager 4.8
SUSE Linux Enterprise Server 12
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)
....