We're in a situation where we need to optimize some of our collections. These optimizations are done with waitSearcher=true as a simple throttling mechanism to prevent too many collections from being optimized at once.
We're seeing these optimize commands return without error after 10 minutes but well before the end of the operation. Our Solr logs show errors with socketTimeout stack traces. Setting distribUpdateSoTimeout to a higher value has no effect.
See the links section for my patch.
It turns out that ConcurrentUpdateSolrClient delegates commit and optimize commands to a private HttpSolrClient but fails to pass along its builder's timeouts to that client.
A patch is attached in the links section.