When the netldi communicates with a client running on an earlier version of $GEMSTONE, the socket can be left open after the end of the exchange, resulting in a socket leak and eventually running out of file descriptors. This can occur when a client attempts an RPC login via the netldi, or does a gslist -v.
This bug can also impact the shared page cache monitor process, leaking sockets whenever a client running an earlier version of $GEMSTONE does a "gslist -v" against it. This will cause the shared page cache monitor process to eventually crash with an error similar to:
Error: open(/opt/gemstone/locks/gemstone.hostid, O_EXCL | O_CREAT | O_APPEND | O_RDWR) failed with errno=24,EMFILE, The process has too many open files
Followed by errors on the stone and associated gem processes similar to:
The stone's connection to the local shared cache monitor was lost.
Error Text: ' Semaphore operation Clear on semaphore 190 failed, error = errno=22,EINVAL, Invalid argument (programmer error)
If you are using an environment with mixed versions of GemStone:
1. Use unique version names for netldi processes to avoid attempting to RPC login to a netldi on the wrong version of $GEMSTONE. For example, netldi2.4.6 versus netldi3.2.12. Make appropriate adjustments to your login parameters to reference these.
2. Avoid using "gslist -v". If you must, use "gslist -v -N" and specify a netldi of the proper version (see #1 above).
3. If these cannot be avoided, periodically stop/restart the netldi and stone processes.
Last updated: 1/22/16