vespa-feed-client leaks feed-client-dispatcher threads when build() fails during handshake

The vespa-feed-client leaks threads when FeedClientBuilder.build() fails during the connection handshake. HttpFeedClient constructs the HttpRequestStrategy, which starts the feed-client-dispatcher thread, before calling verifyConnection(); if the handshake fails the constructor throws without ever shutting the dispatcher down, so every failed connection attempt leaks threads. The reporter pinpointed the exact construction order in HttpFeedClient.java and HttpRequestStrategy.java.

Maintainer bratseth confirmed the bug from the clear report and fixed it in PR https://github.com/vespa-engine/vespa/pull/37721, released in Vespa 8.747. Resolution: upgrade to Vespa 8.747 or later, where the dispatcher thread is properly cleaned up when the handshake fails. Source: https://github.com/vespa-engine/vespa/issues/37709

Source: https://github.com/vespa-engine/vespa/issues/37709