Ошибки разблокировки DynamoDB во время остановки приложения, когда Spring Kinesis Binder пытается снять блокировку - PullRequest
1 голос
/ 26 мая 2020

Когда приложение останавливается, связыватель kinesis пытается разблокировать DynamoDB и выдает исключение сбоя разблокировки.

Я следил за этим исходным сообщением с аналогичной проблемой и обновленным spring-integration- aws версию до v2.3.1.RELEASE. Но по-прежнему отображается та же ошибка при завершении работы приложения.

    2020-05-26 16:02:20.445  INFO [] 47251 --- [           main] com.vf.uk.dal.Application   : Started Application in 27.697 seconds (JVM running for 28.31)
    2020-05-26 16:02:20.914  INFO [] 47251 --- [esis-consumer-1] a.i.k.KinesisMessageDrivenChannelAdapter : The [ShardConsumer{shardOffset=KinesisShardOffset{iteratorType=LATEST, sequenceNumber='null', timestamp=null, stream='kinesis-test', shard='shardId-000000000000', reset=false}, state=NEW}] has been started.
    2020-05-26 16:02:49.128  INFO [] 47251 --- [extShutdownHook] a.i.k.KinesisMessageDrivenChannelAdapter : stopped KinesisMessageDrivenChannelAdapter{shardOffsets=[KinesisShardOffset{iteratorType=LATEST, sequenceNumber='null', timestamp=null, stream='kinesis-test', shard='shardId-000000000000', reset=false}], consumerGroup='anonymous.17f05415-386f-4eb5-bdf1-be7d9044f170'}
    2020-05-26 16:02:49.129  INFO [] 47251 --- [extShutdownHook] o.s.i.endpoint.EventDrivenConsumer       : Removing {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel
    2020-05-26 16:02:49.129  INFO [] 47251 --- [extShutdownHook] o.s.i.channel.PublishSubscribeChannel    : Channel 'V1-1.errorChannel' has 0 subscriber(s).
    2020-05-26 16:02:49.129  INFO [] 47251 --- [extShutdownHook] o.s.i.endpoint.EventDrivenConsumer       : stopped bean '_org.springframework.integration.errorLogger'
    2020-05-26 16:02:49.133 ERROR [] 47251 --- [s-shard-locks-1] a.i.k.KinesisMessageDrivenChannelAdapter : Error during unlocking: DynamoDbLock [lockKey=anonymous.17f05415-386f-4eb5-bdf1-be7d9044f170:kinesis-test:shardId-000000000000,lockedAt=2020-05-26@16:02:20.641, lockItem=null]

    org.springframework.dao.DataAccessResourceFailureException: Failed to release lock at anonymous.17f05415-386f-4eb5-bdf1-be7d9044f170:kinesis-test:shardId-000000000000; nested exception is java.util.concurrent.RejectedExecutionException: Task org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock$$Lambda$1323/0x0000000800dd6840@11fc5cb1 rejected from java.util.concurrent.ThreadPoolExecutor@145d3a23[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 1]
        at org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock.unlock(DynamoDbLockRegistry.java:526) ~[spring-integration-aws-2.3.1.RELEASE.jar:na]
        at org.springframework.integration.aws.inbound.kinesis.KinesisMessageDrivenChannelAdapter$ShardConsumerManager.run(KinesisMessageDrivenChannelAdapter.java:1294) ~[spring-integration-aws-2.3.1.RELEASE.jar:na]
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[na:na]
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
        at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
    Caused by: java.util.concurrent.RejectedExecutionException: Task org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock$$Lambda$1323/0x0000000800dd6840@11fc5cb1 rejected from java.util.concurrent.ThreadPoolExecutor@145d3a23[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 1]
        at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2055) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:825) ~[na:na]
        at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1355) ~[na:na]
        at org.springframework.integration.aws.lock.DynamoDbLockRegistry$DynamoDbLock.unlock(DynamoDbLockRegistry.java:519) ~[spring-integration-aws-2.3.1.RELEASE.jar:na]
        ... 6 common frames omitted

    2020-05-26 16:02:49.133  INFO [] 47251 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'
    2020-05-26 16:02:49.139  INFO [] 47251 --- [extShutdownHook] o.s.s.c.ThreadPoolTaskScheduler          : Shutting down ExecutorService 'taskScheduler'
    2020-05-26 16:02:49.158  INFO [] 47251 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'

Используемые зависимости:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.2.RELEASE</version>
    </parent>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream-binder-kinesis</artifactId>
        <version>2.0.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-bus</artifactId>
    </dependency>

1 Ответ

0 голосов
/ 26 мая 2020

Если вы подтвердите мне, что вы не создаете свой собственный DynamoDbLockRegistry bean, тогда я увижу, что нужно исправить.

Тем не менее, это не должно быть критической ошибкой в ​​конце жизненного цикла приложения: вы все равно остановили его, и вся разблокированная блокировка из-за этой ошибки будет снята в следующий раз, когда истечет срок действия leaseDuration.

ОБНОВЛЕНИЕ

Исправление здесь: https://github.com/spring-projects/spring-integration-aws/commit/bc4a1c7c5975555fb5237642b8b97d8633f0f6cb

...