Aborting on all DoNotRetryIOEs is too generic I think. For instance, my last run aborted do to an UnknownScannerException. For an application rolling over cluster woes, we'd expect the scanner to not be retried but a new scanner to be acquired, making this a non-terminal exception for the sake of this test.
Of list of Exceptions derived from NoNotRetryIOE, I think only the following should be treated as fatal for the purposes of this test: AccessDeniedException, CoprocessorException, FatalConnectionException, InvalidFamilyOperationException, NamespaceExistException, NamespaceNotFoundException, NoSuchColumnFamilyException, TableExistsException, TableNotFoundException.
That leaves the following exceptions which will be retried by the test harness up to the specified number of times: HBaseSnapshotException, LeaseException, NotAllMetaRegionsOnlineException, ScannerTimeoutException, TableNotDisabledException, TableNotEnabledException, UnknownScannerException.
What say you?