@@ -880,13 +880,20 @@ public Result execute(Request kvRequest) {
880880 throw new NoSQLException ("Request interrupted: " +
881881 ie .getMessage ());
882882 } catch (ExecutionException ee ) {
883- kvRequest .setRateLimitDelayedMs (rateDelayedMs );
884- statsControl .observeError (kvRequest );
885- logInfo (logger , "Unable to execute request: " +
886- ee .getCause ().getMessage ());
887- /* is there a better exception? */
888- throw new NoSQLException (
889- "Unable to execute request: " + ee .getCause ().getMessage ());
883+ /*
884+ * This can happen if a channel is bad in HttpClient.getChannel.
885+ * This happens if the channel is shut down by the server side
886+ * or the server (proxy) is restarted, etc. Treat it like
887+ * IOException above, but retry without waiting
888+ */
889+ String name = ee .getCause ().getClass ().getName ();
890+ logFine (logger , "Client ExecutionException, name: " +
891+ name + ", message: " + ee .getMessage () + ", retrying" );
892+
893+ kvRequest .addRetryException (ee .getCause ().getClass ());
894+ kvRequest .incrementRetries ();
895+ exception = ee .getCause ();
896+ continue ;
890897 } catch (TimeoutException te ) {
891898 exception = te ;
892899 logInfo (logger , "Timeout exception: " + te );
0 commit comments