Apache kafka 卡夫卡恐慌Hyperledger面料订购商

Apache kafka 卡夫卡恐慌Hyperledger面料订购商,apache-kafka,apache-zookeeper,hyperledger-fabric,Apache Kafka,Apache Zookeeper,Hyperledger Fabric,我在订购者日志中收到此错误: 2018-05-31 19:22:31.010 IST [orderer/consensus/kafka] try -> DEBU 2a3 [channel: testchainid] Need to retry because process failed = kafka server: The requested offset is outside the range of offsets maintained by the server for the

我在订购者日志中收到此错误:

2018-05-31 19:22:31.010 IST [orderer/consensus/kafka] try -> DEBU 2a3 [channel: testchainid] Need to retry because process failed = kafka server: The requested offset is outside the range of offsets maintained by the server for the given topic/partition.
由于此错误,区块链上的写入操作不会发生


如果有人知道有关此错误的任何信息,请告诉我

我只是在测试可能导致网络中断或使其处于不一致状态的内容时才看到此错误

从我的经验来看,它与领导卡夫卡经纪人以低于订购方预期的偏移量提供主题相关。我可以通过硬重置Kafka代理来创建错误,这样它们是新的,但订购方和网络的其他部分不是。或者,通过硬重置Zookeepers,当消费者和生产者(订购者)提出请求时,他们将其视为一个新主题,并可能将Leader Broker分配给该主题的最新代理

我不确定您的网络是如何进入这种状态的,但我非常确定错误与订购方要求的偏移量值高于领导者卡夫卡经纪人对该主题的偏移量有关。基本上类似于数组的索引超出范围错误


由于我只是在试验,为了解决这个问题,我刚刚重新启动了整个网络(删除所有数据持久性)。

如果是一个实时应用程序,我无法删除所有数据。有什么解决方法吗?我不能100%确定您是如何达到该错误的,但您可能会硬重设所有订购者。这完全取决于你是否能确认你的卡夫卡经纪人对所有交易都是最新的。我想你可以通过增加一个新的订购者来证实这一点。新的订购者将从所有通道上的偏移量0开始,赶上当前订购者,或至少赶上最后一个“稳定”点。如果该状态正常,我认为您可以硬重置您的实际订购者,他们也会这样做。检查新订购者获得的块编号,并将其与订购者和peersOh进行比较,确认哪个代理是主题testchainid的主要代理,然后将其日志与集群中其他代理的日志进行比较。确保leader broker具有相同或最新的日志。