Hi Chad,
No this is not an expected behavior of policy server.
Policy server has a polling mechanism to check the health of ODBC connection at regular interval (15 seconds) and reestablish connection if it gets hung.
The polling mechanism within a connection begins as soon as a connection is created. It starts in an initialized state and, when the policy server, the network and the database server are behaving normally, it should go from initialized to available. The available state is where a connection should
spend most of its time. When a statement needs to be executed it obtains a connection and the connection transitions into the active state allowing nothing else can use it. It may not remain in this state for more than fifteen seconds. If it does, it will be flagged as hung. If a connection is flagged as hung it will be disconnected and reconnected to the database server. Internally, the database layer grabs a connection from the connection pool for each statement that it obtains. If there are no available
connections in the pool and the maximum number of connections has not been exceeded, a new connection is generated and placed in the pool. After the statement is through executing, the statement releases the connection, the connection transitions into the available state, and another statement may use it.
However, that said, if the ping (polling) thread which does the regular ping itself gets into hung state, then I am guessing that this could lead to the behavior that you are experiencing.
If you can reproduce the issue and can provide the policy server trace logs, I suggest opening a support case for the root cause analysis.
Cheers,
Ujwol