Currently the StreamHandler opens the client cache only once when the StreamHandler is initialized. During a collection reload the client cache is closed by the closeHook, but not re-opened. This causes null pointers as the CloudSolrClient sets the zkStateReader = null when it's closed.
A simple fix for this is to have the SolrClientCache clear it's internal map of clients after closing. The next time the cache is accessed it will then create new clients.