akka - akka.persistence.RecoveryTimedOut:恢复超时,30000毫秒内没有拿到快照
问题描述
由于超时,我的测试失败。这是我在日志输出中看到的:
2018-05-15 10:47:56.152 WARN com.datastax.driver.core.NettyUtil [UserDataServiceSpec-cassandra-plugin-default-dispatcher-27] [] [] - Found Netty's native epoll transport, but not running on linux-based operating system. Using NIO instead.
2018-05-15 10:48:38.616 ERROR n.f.c.indexing.UniquelyIndexingActor [UserDataServiceSpec-akka.actor.default-dispatcher-39] [UserDataServiceSpec-akka.actor.default-dispatcher-29] [akka.tcp://UserDataServiceSpec@127.0.0.1:51627/user/$c/user-email-indexer] - Persistence failure when replaying events for persistenceId [user-email-indexer]. Last known sequence number [0]
akka.persistence.RecoveryTimedOut: Recovery timed out, didn't get snapshot within 30000 milliseconds
2018-05-15 10:48:38.617 ERROR a.c.sharding.PersistentShardCoordinator [UserDataServiceSpec-akka.actor.default-dispatcher-39] [UserDataServiceSpec-akka.actor.default-dispatcher-30] [akka.tcp://UserDataServiceSpec@127.0.0.1:51627/system/sharding/userdataCoordinator/singleton/coordinator] - Persistence failure when replaying events for persistenceId [/sharding/userdataCoordinator]. Last known sequence number [0]
akka.persistence.RecoveryTimedOut: Recovery timed out, didn't get snapshot within 30000 milliseconds
2018-05-15 10:48:38.618 INFO akka.actor.LocalActorRef [UserDataServiceSpec-akka.actor.default-dispatcher-39] [UserDataServiceSpec-akka.actor.default-dispatcher-35] [akka://UserDataServiceSpec/user/$c/user-email-indexer] - Message [akka.persistence.SnapshotProtocol$LoadSnapshotFailed] from Actor[akka://UserDataServiceSpec/system/cassandra-snapshot-store#-750137778] to Actor[akka://UserDataServiceSpec/user/$c/user-email-indexer#1201357728] was not delivered. [1] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
2018-05-15 10:48:38.619 INFO akka.actor.LocalActorRef [UserDataServiceSpec-akka.actor.default-dispatcher-37] [UserDataServiceSpec-akka.actor.default-dispatcher-39] [akka://UserDataServiceSpec/system/sharding/userdataCoordinator/singleton/coordinator] - Message [akka.cluster.sharding.ShardCoordinator$RebalanceTick$] from Actor[akka://UserDataServiceSpec/system/sharding/userdataCoordinator/singleton/coordinator#-75387958] to Actor[akka://UserDataServiceSpec/system/sharding/userdataCoordinator/singleton/coordinator#-75387958] was not delivered. [2] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.
(不要问我为什么我们不使用内存存储来测试持久性actor。这与现在的问题无关。)
我在 Akka 和 JVM 方面没有经验,但我看到的消息只是“你搞砸了,伙计”的等价物。他们没有提示如何解决问题或为什么会发生这种RecoveryTimedOut
情况。
如果有人能给我一个有价值的建议如何诊断问题,那就太好了。
UniquelyIndexingActor
被创建为集群单例。
解决方案
尝试将此添加到您的配置中:
akka {
persistence {
journal-plugin-fallback {
recovery-event-timeout = 60s
}
}
}
它为我解决了这个问题。我在https://github.com/akka/akka/blob/master/akka-persistence/src/main/resources/reference.conf中找到了对它的引用
推荐阅读
- matlab - 如何找到四个矩阵的行列式
- ios - xcode自定义键盘使用按钮进行快捷方式
- scala - Scala:如何知道哪个概率对应哪个类?
- scala - 如何根据数据集中一列中数组中存在的多个值在数据集中创建新行
- angular - Angular 身份验证在守卫之前等待在本地存储中设置权限
- erlang - 使用尾递归时出现无法解释的行为
- c# - 如何使用 vue js 传递和检索 id?
- npm - 无法从 Windows 上的本地 npm install 运行 gulp 或其他 npm 命令
- excel - 使用 ParamArray 时 ByRef 参数类型不匹配
- python - python根据子列表值重新排列列表中的元素