StatusUpdaterBolt:找不到 ID 的未确认元组
StatusUpdaterBolt: Could not find unacked tuple for ID
我有一个非常简单的拓扑,它从 ES 索引 (AggregationSpout) 中喷出,获取页面 (FetcherBolt) 并使用 StatusUpdaterBolt 将 ES 状态更新为 "FETCHED"。
但是,我注意到日志文件中有这样的警告:
[WARN] Could not find unacked tuple for 357dc2fcb59c6457884a8f7a83794c4cf77f490a3acfd849a792a35153ed4665
相应的调试信息如下所示:
...
2017-12-06 12:44:53.572 o.e.t.T.tracer
elasticsearch[client][transport_client_boss][T#2] [TRACE]
[214][indices:data/write/bulk] received response from
[{ESPatentNode-1}{S4C2h8WjRuu6MpM25oM-3w}{Fvjny3VaQl2w45hPXZ5A9g}{127.0.0.1}{127.0.0.1:9300}]
2017-12-06 12:44:53.572 c.d.s.e.p.StatusUpdaterBolt
elasticsearch[client][listener][T#1] [DEBUG] afterBulk [105] with 47
responses 2017-12-06 12:44:53.572 c.d.s.e.p.StatusUpdaterBolt
elasticsearch[client][listener][T#1] [DEBUG] Acked 1 tuple(s) for ID
5967f802c84e3e9c6ac22a3184e0665b850779cba9050fa4ec910a41f9f90655
2017-12-06 12:44:53.573 c.d.s.e.p.StatusUpdaterBolt
elasticsearch[client][listener][T#1] [DEBUG] Acked 2 tuple(s) for ID
357dc2fcb59c6457884a8f7a83794c4cf77f490a3acfd849a792a35153ed4665
2017-12-06 12:44:53.573 c.d.s.e.p.StatusUpdaterBolt
elasticsearch[client][listener][T#1] [DEBUG] Acked 1 tuple(s) for ID
092e59cd1ebb004884babfaf1d6ca4b7505b3dcb1b3cb3a52b9072d647fb7a93
2017-12-06 12:44:53.573 c.d.s.e.p.StatusUpdaterBolt
elasticsearch[client][listener][T#1] [WARN] Could not find unacked
tuple for
357dc2fcb59c6457884a8f7a83794c4cf77f490a3acfd849a792a35153ed4665
我想了解的是:
- 为什么一个 ID 可以附加多个元组
- 如何在 StatusUpdaterBolt
的 afterBulk 方法中通过 "response" 循环两次相同的 "waitAck" 缓存元素
在此先感谢您的帮助!
这些警告很正常,请参阅下面的解释。
如果元组具有相同的 URL,它们将具有相同的 ID。使用调试级别的日志,您应该看到映射 => 'Sent to ES buffer {} with ID {}'
- 因为状态是 FETCHED,元组被发送到 ES(unlike DISCOVERED) more than once, then in the pseudo ack method 我们将两个元组作为值和 ID 存储在缓存中。当处理来自 ES 的 returns 时,我们得到 2不同的结果,第一个确认两个元组,第二个除了触发您看到的消息外什么都不做。
问题是,如果您所做的只是获取,为什么您会多次获得相同的 URL。这可能值得研究。
谢谢!
我有一个非常简单的拓扑,它从 ES 索引 (AggregationSpout) 中喷出,获取页面 (FetcherBolt) 并使用 StatusUpdaterBolt 将 ES 状态更新为 "FETCHED"。
但是,我注意到日志文件中有这样的警告:
[WARN] Could not find unacked tuple for 357dc2fcb59c6457884a8f7a83794c4cf77f490a3acfd849a792a35153ed4665
相应的调试信息如下所示: ...
2017-12-06 12:44:53.572 o.e.t.T.tracer elasticsearch[client][transport_client_boss][T#2] [TRACE] [214][indices:data/write/bulk] received response from [{ESPatentNode-1}{S4C2h8WjRuu6MpM25oM-3w}{Fvjny3VaQl2w45hPXZ5A9g}{127.0.0.1}{127.0.0.1:9300}] 2017-12-06 12:44:53.572 c.d.s.e.p.StatusUpdaterBolt elasticsearch[client][listener][T#1] [DEBUG] afterBulk [105] with 47 responses 2017-12-06 12:44:53.572 c.d.s.e.p.StatusUpdaterBolt elasticsearch[client][listener][T#1] [DEBUG] Acked 1 tuple(s) for ID 5967f802c84e3e9c6ac22a3184e0665b850779cba9050fa4ec910a41f9f90655 2017-12-06 12:44:53.573 c.d.s.e.p.StatusUpdaterBolt elasticsearch[client][listener][T#1] [DEBUG] Acked 2 tuple(s) for ID 357dc2fcb59c6457884a8f7a83794c4cf77f490a3acfd849a792a35153ed4665 2017-12-06 12:44:53.573 c.d.s.e.p.StatusUpdaterBolt elasticsearch[client][listener][T#1] [DEBUG] Acked 1 tuple(s) for ID 092e59cd1ebb004884babfaf1d6ca4b7505b3dcb1b3cb3a52b9072d647fb7a93 2017-12-06 12:44:53.573 c.d.s.e.p.StatusUpdaterBolt elasticsearch[client][listener][T#1] [WARN] Could not find unacked tuple for 357dc2fcb59c6457884a8f7a83794c4cf77f490a3acfd849a792a35153ed4665
我想了解的是:
- 为什么一个 ID 可以附加多个元组
- 如何在 StatusUpdaterBolt 的 afterBulk 方法中通过 "response" 循环两次相同的 "waitAck" 缓存元素
在此先感谢您的帮助!
这些警告很正常,请参阅下面的解释。
如果元组具有相同的 URL,它们将具有相同的 ID。使用调试级别的日志,您应该看到映射 => 'Sent to ES buffer {} with ID {}'
- 因为状态是 FETCHED,元组被发送到 ES(unlike DISCOVERED) more than once, then in the pseudo ack method 我们将两个元组作为值和 ID 存储在缓存中。当处理来自 ES 的 returns 时,我们得到 2不同的结果,第一个确认两个元组,第二个除了触发您看到的消息外什么都不做。
问题是,如果您所做的只是获取,为什么您会多次获得相同的 URL。这可能值得研究。
谢谢!