mirror of https://github.com/apache/kafka.git
				
				
				
			KAFKA-8320 : fix retriable exception package for source connectors (#6675)
WorkerSourceTask is catching the exception from wrong package org.apache.kafka.common.errors. It is not clear from the API standpoint as to which package the connect framework supports - the one from common or connect. The safest thing would be to support both the packages even though it's less desirable. Author: Magesh Nandakumar <magesh.n.kumar@gmail.com> Reviewers: Arjun Satish <arjun@confluent.io>, Randall Hauch <rhauch@gmail.com>
This commit is contained in:
		
							parent
							
								
									2208f9966d
								
							
						
					
					
						commit
						5928ffd0dc
					
				| 
						 | 
				
			
			@ -21,7 +21,6 @@ import org.apache.kafka.clients.producer.KafkaProducer;
 | 
			
		|||
import org.apache.kafka.clients.producer.ProducerRecord;
 | 
			
		||||
import org.apache.kafka.clients.producer.RecordMetadata;
 | 
			
		||||
import org.apache.kafka.common.KafkaException;
 | 
			
		||||
import org.apache.kafka.common.errors.RetriableException;
 | 
			
		||||
import org.apache.kafka.common.header.internals.RecordHeaders;
 | 
			
		||||
import org.apache.kafka.common.metrics.Sensor;
 | 
			
		||||
import org.apache.kafka.common.metrics.stats.Avg;
 | 
			
		||||
| 
						 | 
				
			
			@ -31,6 +30,7 @@ import org.apache.kafka.common.metrics.stats.Total;
 | 
			
		|||
import org.apache.kafka.common.metrics.stats.Value;
 | 
			
		||||
import org.apache.kafka.common.utils.Time;
 | 
			
		||||
import org.apache.kafka.connect.errors.ConnectException;
 | 
			
		||||
import org.apache.kafka.connect.errors.RetriableException;
 | 
			
		||||
import org.apache.kafka.connect.header.Header;
 | 
			
		||||
import org.apache.kafka.connect.header.Headers;
 | 
			
		||||
import org.apache.kafka.connect.runtime.ConnectMetrics.MetricGroup;
 | 
			
		||||
| 
						 | 
				
			
			@ -243,7 +243,7 @@ class WorkerSourceTask extends WorkerTask {
 | 
			
		|||
    protected List<SourceRecord> poll() throws InterruptedException {
 | 
			
		||||
        try {
 | 
			
		||||
            return task.poll();
 | 
			
		||||
        } catch (RetriableException e) {
 | 
			
		||||
        } catch (RetriableException | org.apache.kafka.common.errors.RetriableException e) {
 | 
			
		||||
            log.warn("{} failed to poll records from SourceTask. Will retry operation.", this, e);
 | 
			
		||||
            // Do nothing. Let the framework poll whenever it's ready.
 | 
			
		||||
            return null;
 | 
			
		||||
| 
						 | 
				
			
			@ -341,7 +341,7 @@ class WorkerSourceTask extends WorkerTask {
 | 
			
		|||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                lastSendFailed = false;
 | 
			
		||||
            } catch (RetriableException e) {
 | 
			
		||||
            } catch (org.apache.kafka.common.errors.RetriableException e) {
 | 
			
		||||
                log.warn("{} Failed to send {}, backing off before retrying:", this, producerRecord, e);
 | 
			
		||||
                toSend = toSend.subList(processed, toSend.size());
 | 
			
		||||
                lastSendFailed = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue