/** * This implementation of initializeListener adds this instance of * UrisToWriterListener to the two RetryListener's in this QueryBatcher so they * will retry any batches that fail during the uris request. */ @Override public void initializeListener(QueryBatcher queryBatcher) { HostAvailabilityListener hostAvailabilityListener = HostAvailabilityListener.getInstance(queryBatcher); if ( hostAvailabilityListener != null ) { BatchFailureListener<QueryBatch> retryListener = hostAvailabilityListener.initializeRetryListener(this); if ( retryListener != null ) onFailure(retryListener); } NoResponseListener noResponseListener = NoResponseListener.getInstance(queryBatcher); if ( noResponseListener != null ) { BatchFailureListener<QueryBatch> noResponseRetryListener = noResponseListener.initializeRetryListener(this); if ( noResponseRetryListener != null ) onFailure(noResponseRetryListener); } }
protected boolean isHostUnavailableException(Throwable throwable, Set<Throwable> path) { // Check if the exception is an IOException and check if the // message indicates an end of stream on a Connection. if ( IOException.class.isInstance(throwable) && throwable.getMessage().contains("unexpected end of stream on") ) { return true; } // we need to check our recursion path to avoid infinite recursion if a // getCause() pointed to itself or an ancestor if ( throwable.getCause() != null && !path.contains(throwable.getCause()) ) { path.add(throwable.getCause()); boolean isCauseHostUnavailableException = isHostUnavailableException(throwable.getCause(), path); if ( isCauseHostUnavailableException == true ) return true; } return false; }
private QueryBatcher newQueryBatcher(QueryBatcherImpl batcher) { // add a default listener to handle host failover scenarios batcher.onQueryFailure(new HostAvailabilityListener(this)); QueryJobReportListener queryJobListener = new QueryJobReportListener(); batcher.onQueryFailure(queryJobListener); batcher.onQueryFailure(new NoResponseListener(this)); batcher.onUrisReady(queryJobListener); return batcher; }
@Override public WriteBatcher newWriteBatcher() { WriteBatcherImpl batcher = new WriteBatcherImpl(this, getForestConfig()); batcher.onBatchFailure(new HostAvailabilityListener(this)); WriteJobReportListener writeJobListener = new WriteJobReportListener(); batcher.onBatchFailure(writeJobListener); batcher.onBatchFailure(new NoResponseListener(this)); batcher.onBatchSuccess(writeJobListener); return batcher; }
/** * This implementation of initializeListener adds this instance of * ExportToWriterListener to the two RetryListener's in this QueryBatcher so they * will retry any batches that fail during the read request. */ @Override public void initializeListener(QueryBatcher queryBatcher) { HostAvailabilityListener hostAvailabilityListener = HostAvailabilityListener.getInstance(queryBatcher); if ( hostAvailabilityListener != null ) { BatchFailureListener<QueryBatch> retryListener = hostAvailabilityListener.initializeRetryListener(this); if ( retryListener != null ) onFailure(retryListener); } NoResponseListener noResponseListener = NoResponseListener.getInstance(queryBatcher); if ( noResponseListener != null ) { BatchFailureListener<QueryBatch> noResponseRetryListener = noResponseListener.initializeRetryListener(this); if ( noResponseRetryListener != null ) onFailure(noResponseRetryListener); } }
/** * This implementation of initializeListener adds this instance of * ExportListener to the two RetryListener's in this QueryBatcher so they * will retry any batches that fail during the read request. */ @Override public void initializeListener(QueryBatcher queryBatcher) { HostAvailabilityListener hostAvailabilityListener = HostAvailabilityListener.getInstance(queryBatcher); if ( hostAvailabilityListener != null ) { BatchFailureListener<QueryBatch> retryListener = hostAvailabilityListener.initializeRetryListener(this); if ( retryListener != null ) onFailure(retryListener); } NoResponseListener noResponseListener = NoResponseListener.getInstance(queryBatcher); if ( noResponseListener != null ) { BatchFailureListener<QueryBatch> noResponseRetryListener = noResponseListener.initializeRetryListener(this); if ( noResponseRetryListener != null ) onFailure(noResponseRetryListener); } }
/** * This implementation of initializeListener adds this instance of * DeleteListener to the two RetryListener's in this QueryBatcher so they * will retry any batches that fail during the delete request. */ @Override public void initializeListener(QueryBatcher queryBatcher) { HostAvailabilityListener hostAvailabilityListener = HostAvailabilityListener.getInstance(queryBatcher); if ( hostAvailabilityListener != null ) { BatchFailureListener<QueryBatch> retryListener = hostAvailabilityListener.initializeRetryListener(this); if ( retryListener != null ) onFailure(retryListener); } NoResponseListener noResponseListener = NoResponseListener.getInstance(queryBatcher); if ( noResponseListener != null ) { BatchFailureListener<QueryBatch> noResponseRetryListener = noResponseListener.initializeRetryListener(this); if ( noResponseRetryListener != null ) onFailure(noResponseRetryListener); } }