0

I implement reading from AWS/Kinesis stream using KCL, but after read many messages from shards, suddenly i see this error in server logs:

ERROR 1 --- [oordinator-0000] c.a.s.kinesis.leases.impl.LeaseRenewer   : Encountered an exception while renewing a lease.
java.lang.IllegalStateException: Connection pool shut down
    at org.apache.http.util.Asserts.check(Asserts.java:34) ~[httpcore-4.4.14.jar:4.4.14]
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:269) ~[httpclient-4.5.13.jar:4.5.13]
    at jdk.internal.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
    at com.amazonaws.http.conn.ClientConnectionManagerFactory$Handler.invoke(ClientConnectionManagerFactory.java:76) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.conn.$Proxy87.requestConnection(Unknown Source) ~[na:na]
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:176) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.13.jar:4.5.13]
    at com.amazonaws.http.apache.client.impl.SdkHttpClient.execute(SdkHttpClient.java:72) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1346) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1157) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:814) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:781) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:755) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:715) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:697) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:561) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:541) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:6409) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:6376) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeUpdateItem(AmazonDynamoDBClient.java:5994) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:5958) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseManager.renewLease(LeaseManager.java:419) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.renewLease(LeaseRenewer.java:176) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.renewLease(LeaseRenewer.java:159) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.access$000(LeaseRenewer.java:49) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer$RenewLeaseTask.call(LeaseRenewer.java:151) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer$RenewLeaseTask.call(LeaseRenewer.java:137) ~[amazon-kinesis-client-1.14.8.jar:na]
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2022-11-14 01:31:52.777 ERROR 1 --- [oordinator-0000] c.a.s.kinesis.leases.impl.LeaseRenewer   : Encountered an exception while renewing a lease.
java.lang.IllegalStateException: Connection pool shut down
    at org.apache.http.util.Asserts.check(Asserts.java:34) ~[httpcore-4.4.14.jar:4.4.14]
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:269) ~[httpclient-4.5.13.jar:4.5.13]
    at jdk.internal.reflect.GeneratedMethodAccessor61.invoke(Unknown Source) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Unknown Source) ~[na:na]
    at com.amazonaws.http.conn.ClientConnectionManagerFactory$Handler.invoke(ClientConnectionManagerFactory.java:76) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.conn.$Proxy87.requestConnection(Unknown Source) ~[na:na]
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:176) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.13.jar:4.5.13]
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.13.jar:4.5.13]
    at com.amazonaws.http.apache.client.impl.SdkHttpClient.execute(SdkHttpClient.java:72) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1346) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1157) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:814) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:781) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:755) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:715) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:697) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:561) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:541) ~[aws-java-sdk-core-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.doInvoke(AmazonDynamoDBClient.java:6409) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.invoke(AmazonDynamoDBClient.java:6376) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.executeUpdateItem(AmazonDynamoDBClient.java:5994) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.updateItem(AmazonDynamoDBClient.java:5958) ~[aws-java-sdk-dynamodb-1.12.300.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseManager.renewLease(LeaseManager.java:419) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.renewLease(LeaseRenewer.java:176) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.renewLease(LeaseRenewer.java:159) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.access$000(LeaseRenewer.java:49) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer$RenewLeaseTask.call(LeaseRenewer.java:151) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer$RenewLeaseTask.call(LeaseRenewer.java:137) ~[amazon-kinesis-client-1.14.8.jar:na]
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]

then server back to read messages again, and after reading about 10 messages i see this log again:

ERROR 1 --- [oordinator-0000] c.a.s.k.leases.impl.LeaseCoordinator     : LeasingException encountered in lease renewing thread
com.amazonaws.services.kinesis.leases.exceptions.DependencyException: Encountered an exception while renewing leases. The number of leases which might not have been renewed is 334
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.renewLeases(LeaseRenewer.java:130) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseCoordinator.runRenewer(LeaseCoordinator.java:350) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseCoordinator$RenewerRunnable.run(LeaseCoordinator.java:274) ~[amazon-kinesis-client-1.14.8.jar:na]
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.FutureTask.runAndReset(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[na:na]
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
Caused by: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Connection pool shut down
    at java.base/java.util.concurrent.FutureTask.report(Unknown Source) ~[na:na]
    at java.base/java.util.concurrent.FutureTask.get(Unknown Source) ~[na:na]
    at com.amazonaws.services.kinesis.leases.impl.LeaseRenewer.renewLeases(LeaseRenewer.java:111) ~[amazon-kinesis-client-1.14.8.jar:na]
    ... 8 common frames omitted

And the final log is next log before server run out of memory and shutdown directly after getting heap memory exception:

INFO 1 --- [skExecutor-9401] k.c.l.w.KinesisClientLibLeaseCoordinator : Worker 659d8b25-2067-4a40-b0df-1fdb0b2979bf could not update checkpoint for shard shardId-000000001060 because it does not hold the lease
2022-11-14 01:31:52.791  INFO 1 --- [skExecutor-9307] s.i.a.i.k.KclMessageDrivenChannelAdapter : Caught shutdown exception, skipping checkpoint.
com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException: Can't update checkpoint - instance doesn't hold the lease for this shard
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibLeaseCoordinator.setCheckpoint(KinesisClientLibLeaseCoordinator.java:198) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer.advancePosition(RecordProcessorCheckpointer.java:307) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer.checkpoint(RecordProcessorCheckpointer.java:85) ~[amazon-kinesis-client-1.14.8.jar:na]
    at org.springframework.integration.aws.inbound.kinesis.KclMessageDrivenChannelAdapter$RecordProcessor.checkpoint(KclMessageDrivenChannelAdapter.java:551) ~[spring-integration-aws-2.4.0.jar:na]
    at org.springframework.integration.aws.inbound.kinesis.KclMessageDrivenChannelAdapter$RecordProcessor.checkpointIfBatchMode(KclMessageDrivenChannelAdapter.java:573) ~[spring-integration-aws-2.4.0.jar:na]
    at org.springframework.integration.aws.inbound.kinesis.KclMessageDrivenChannelAdapter$RecordProcessor.processRecords(KclMessageDrivenChannelAdapter.java:427) ~[spring-integration-aws-2.4.0.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.V1ToV2RecordProcessorAdapter.processRecords(V1ToV2RecordProcessorAdapter.java:42) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.callProcessRecords(ProcessTask.java:221) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.call(ProcessTask.java:176) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:24) ~[amazon-kinesis-client-1.14.8.jar:na]
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]
2022-11-14 01:31:52.791  INFO 1 --- [skExecutor-9401] s.i.a.i.k.KclMessageDrivenChannelAdapter : Caught shutdown exception, skipping checkpoint.
com.amazonaws.services.kinesis.clientlibrary.exceptions.ShutdownException: Can't update checkpoint - instance doesn't hold the lease for this shard
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisClientLibLeaseCoordinator.setCheckpoint(KinesisClientLibLeaseCoordinator.java:198) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer.advancePosition(RecordProcessorCheckpointer.java:307) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.RecordProcessorCheckpointer.checkpoint(RecordProcessorCheckpointer.java:85) ~[amazon-kinesis-client-1.14.8.jar:na]
    at org.springframework.integration.aws.inbound.kinesis.KclMessageDrivenChannelAdapter$RecordProcessor.checkpoint(KclMessageDrivenChannelAdapter.java:551) ~[spring-integration-aws-2.4.0.jar:na]
    at org.springframework.integration.aws.inbound.kinesis.KclMessageDrivenChannelAdapter$RecordProcessor.checkpointIfBatchMode(KclMessageDrivenChannelAdapter.java:573) ~[spring-integration-aws-2.4.0.jar:na]
    at org.springframework.integration.aws.inbound.kinesis.KclMessageDrivenChannelAdapter$RecordProcessor.processRecords(KclMessageDrivenChannelAdapter.java:427) ~[spring-integration-aws-2.4.0.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.V1ToV2RecordProcessorAdapter.processRecords(V1ToV2RecordProcessorAdapter.java:42) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.callProcessRecords(ProcessTask.java:221) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.call(ProcessTask.java:176) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49) ~[amazon-kinesis-client-1.14.8.jar:na]
    at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:24) ~[amazon-kinesis-client-1.14.8.jar:na]
    at java.base/java.util.concurrent.FutureTask.run(Unknown Source) ~[na:na]
    at java.base/java.lang.Thread.run(Unknown Source) ~[na:na]


native Memory Tracking:
Total: reserved=5356493063, committed=4756977927
-                 Java Heap (reserved=4294967296, committed=4294967296)
                            (mmap: reserved=4294967296, committed=4294967296) 
 
-                     Class (reserved=257082284, committed=68006828)
                            (classes #11596)
                            (  instance classes #10884, array classes #712)
                            (malloc=1995692 #35200) 
                            (mmap: reserved=255086592, committed=66011136) 
                            (  Metadata:   )
                            (    reserved=58720256, committed=57884672)
                            (    used=56743912)
                            (    free=1140760)
                            (    waste=0 =0.00%)
                            (  Class space:)
                            (    reserved=196366336, committed=8126464)
                            (    used=7488320)
                            (    free=638144)
                            (    waste=0 =0.00%)
 
-                    Thread (reserved=220970784, committed=20037408)
                            (thread #209)
                            (stack: reserved=219947008, committed=19013632)
                            (malloc=774944 #1256) 
                            (arena=248832 #416)
 
-                      Code (reserved=257037944, committed=47531640)
                            (malloc=3405432 #12450) 
                            (mmap: reserved=253632512, committed=44126208) 
 
-                        GC (reserved=231540279, committed=231540279)
                            (malloc=37516855 #51275) 
                            (mmap: reserved=194023424, committed=194023424) 
 
-                  Compiler (reserved=1067450, committed=1067450)
                            (malloc=74786 #746) 
                            (arena=992664 #11)
 
-                  Internal (reserved=2376498, committed=2376498)
                            (malloc=2343730 #9777) 
                            (mmap: reserved=32768, committed=32768) 
 
-                    Symbol (reserved=14679784, committed=14679784)
                            (malloc=12347464 #143005) 
                            (arena=2332320 #1)
 
-    Native Memory Tracking (reserved=4228952, committed=4228952)
                            (malloc=39032 #486) 
                            (tracking overhead=4189920)
 
-               Arena Chunk (reserved=72018832, committed=72018832)
                            (malloc=72018832) 
 
-                   Tracing (reserved=97, committed=97)
                            (malloc=97 #5) 
 
-                   Logging (reserved=4572, committed=4572)
                            (malloc=4572 #192) 
 
-                 Arguments (reserved=19083, committed=19083)
                            (malloc=19083 #495) 
 
-                    Module (reserved=231144, committed=231144)
                            (malloc=231144 #1923) 
 
-              Synchronizer (reserved=259872, committed=259872)
                            (malloc=259872 #2016) 
 
-                 Safepoint (reserved=8192, committed=8192)
                            (mmap: reserved=8192, committed=8192) 

Any idea why this happen?

mibrahim.iti
  • 1,928
  • 5
  • 22
  • 50

0 Answers0