I moved the refresh mutex from synx_refresh to hard_refresh because a connection failure in cursor would call refresh on the client (see line 477 in cursor), thus allowing a code path to @manager.refresh outside of a mutex.