KB Article #177502

JNDI.Initialize: Accept call failed error -- on WINDOWS

Problem

-- When using a JMS CommAdapter, sometimes the following errors appear in trace (always mentioning Integratorpool37, never another port):


ERROR :20151020:13.47.09.89:Procengine jms(procengine(ta_jms)):JNDI.Initialize: failed to initialize notification: accept call failed

ERROR :20151020:13.47.09.89:Procengine jms(procengine(ta_jms)):PORTER.FREEPORT: unknown anonymous port "VS91SWFAXWY01P"/"Integratorpool37"


Resolution

* This is not a ports issue. You can try recreating the porter.mem file (KB #72624) or adding more ports for the commAdapter (KBs #63390 and #65497), but they will not solve the issue. The problem is the "accept call failed" error, which indicates an issue coming from the OS.


The cause of that error is the sockets per process limit. In Windows the BSOCKET_SOCKET_COUNT environment variable establishes the maximum number of socket connections allowed per process (similar to the ulimit –n option in Linux). The default (if you don’t have the variable set) is 64, which is very few.


In the error message (such as the one above), Integratorpool37 is number 65 in the environment, and therefore there are no sockets left to be allotted for it.


The following steps must be followed in order to set the BSOCKET_SOCKET_COUNT variable:


1. Check in Copilot->Help->Details to see if the BSOCKET_SOCKET_COUNT variable is already set.

2. If the variable is not set, in %CORE_ROOT%\config\environment.dat the following line must be added:

BSOCKET_SOCKET_COUNT=1024

3. If the variable is set but it has a small value, the %CORE_ROOT%\config\environment.dat file must be edited so that the variable is set to 1024.

4. A restart of Integrator is needed for the changes to be taken into account.