Direct Socket Interface Stops Printing Label Requests
Problem
There are a maximum of 10 worker threads to handle incoming requests to a Direct Socket Interface (DSI). If the client connection process fails to close, it is possible to lock worker threads. When this occurs you will see the following symptoms.
- LPS does not print requests to DSI.
- LPS is otherwise healthy and prints from all other methods.
- Connections to the DSI port (TCP 2813 by default) are successful.
- Netstat reports that there are at least as many ESTABLISHED connections as worker threads.
- Netstat may display many connections in CLOSE_WAIT.
Explanation
Direct Socket Interface was designed to listen for incoming connections and wait for all data from a client. Because this connection is a very simple and does not use any kind of application-level acknowledgement sequence, LPS can not close a session. Instead LPS relies on the client to close the connection when the client is finished sending the label request. If the client does not close the connection, then the worker thread can not proceed to newer requests.
Short Term Solution
Restarting the LPS service will free the worker threads and DSI will function until the client connections get into the same state. Because this does not address the root cause, it will not completely solve the issue.
Long Term Solution
It is important to note that when using DSI that the client close the connection in a timely manner. The long term solution is to find the cause of the client failing to close the connection. You may need to use a packet capturing utility and have a network administrator analyse the results.
Workaround
A possible workaround is to use file drop instead of DSI. If your client system can stream label requests to a specific port, it is likely that it can be configured to write a file into a drop directory instead. File Drop The action of making print requests by placing files in the LPS scan directory. LPS detects this request and responds by printing the label. See Scan Directory. has separate worker threads from DSI and does not have the same network requirements.
Article Number
2015031
Versions
All supported LPS family product versions.