You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sometimes there is an assertion happening in ntcf_system.t TC 28, it appears only on SunOS when select driver is used and dynamic load balancing is enabled.
[ W ][ 31JUL2023_13:13:04.846 ][ main ][ ntcf_system.t.cpp:9054 ]: ETIMEDOUT/ECONNREFUSED/ECONNABORTED (x100) (instantaneous)
[ F ][ 31JUL2023_13:13:05.157 ][ main ][ ntcf_system.t.cpp:11084 ]: Assertion failed: ta.numBlocksInUse() == 0
The text was updated successfully, but these errors were encountered:
There is a race condition occuring during ntcr::Interface::shutdown() process.
Scenario is the following:
resolver->shutdown(); is called. Which leads to the ntcdns::System::shutdown() execution. ntcdns::System::shutdown() does not drain its d_threadPool_sp or wait for complition of all enqued jobs, it justs sets d_state to e_STATE_STOPPING state.
resolver->shutdown(); then stops all reactor threads.
It can happen that all reactor threads manage to stop earlier than all ntcdns::System resolver jobs are processed. And when the last reactor thread is deregistered from the reactor it flushes it.
ntcdns::System jobs are processed. The results of processing with E_CANCELLED status are pushed to the only one strand, but this strand is never processed by reactor threads, as they are stopped. Thus ntcr::StreamSocket, ntcr::Strand and the resolver itself are not deleted (as callback itself contain pointers to them)
Sometimes there is an assertion happening in ntcf_system.t TC 28, it appears only on SunOS when select driver is used and dynamic load balancing is enabled.
The text was updated successfully, but these errors were encountered: