Fixing issue with prefetch thread, where it kept on dying and falling behind. Catching throwable instead of error. Assigning thread name to the prefetch thread.
This commit is contained in:
parent
585fa63508
commit
ffdfe82b79
2 changed files with 13 additions and 3 deletions
|
|
@ -110,9 +110,11 @@ public class PrefetchGetRecordsCache implements GetRecordsCache {
|
|||
}
|
||||
|
||||
private class DefaultGetRecordsCacheDaemon implements Runnable {
|
||||
private volatile boolean isShutdown = false;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (true) {
|
||||
while (!isShutdown) {
|
||||
if (Thread.currentThread().isInterrupted()) {
|
||||
log.warn("Prefetch thread was interrupted.");
|
||||
callShutdownOnStrategy();
|
||||
|
|
@ -132,7 +134,7 @@ public class PrefetchGetRecordsCache implements GetRecordsCache {
|
|||
} catch (InterruptedException e) {
|
||||
log.info("Thread was interrupted, indicating shutdown was called on the cache.");
|
||||
callShutdownOnStrategy();
|
||||
} catch (Error e) {
|
||||
} catch (Throwable e) {
|
||||
log.error("Error was thrown while getting records, please check for the error", e);
|
||||
}
|
||||
}
|
||||
|
|
@ -143,6 +145,7 @@ public class PrefetchGetRecordsCache implements GetRecordsCache {
|
|||
if (!getRecordsRetrievalStrategy.isShutdown()) {
|
||||
getRecordsRetrievalStrategy.shutdown();
|
||||
}
|
||||
isShutdown = true;
|
||||
}
|
||||
|
||||
private void sleepBeforeNextCall() throws InterruptedException {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ package com.amazonaws.services.kinesis.clientlibrary.lib.worker;
|
|||
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
|
||||
import lombok.extern.apachecommons.CommonsLog;
|
||||
|
||||
@CommonsLog
|
||||
|
|
@ -37,7 +39,12 @@ public class SimpleRecordsFetcherFactory implements RecordsFetcherFactory {
|
|||
return new BlockingGetRecordsCache(maxRecords, getRecordsRetrievalStrategy, idleMillisBetweenCalls);
|
||||
} else {
|
||||
return new PrefetchGetRecordsCache(maxSize, maxByteSize, maxRecordsCount, maxRecords,
|
||||
getRecordsRetrievalStrategy, Executors.newFixedThreadPool(1), idleMillisBetweenCalls);
|
||||
getRecordsRetrievalStrategy,
|
||||
Executors.newFixedThreadPool(1, new ThreadFactoryBuilder()
|
||||
.setDaemon(true)
|
||||
.setNameFormat("prefetch-get-records-cache-%d")
|
||||
.build()),
|
||||
idleMillisBetweenCalls);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue