mirror of
https://github.com/ton-blockchain/ton
synced 2025-02-12 19:22:37 +00:00
Drop only accepted duplicate ext messages, don't cache errors (#902)
Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
parent
f344aa46c3
commit
4d39772e40
3 changed files with 12 additions and 4 deletions
|
@ -85,6 +85,10 @@ class LiteServerCacheImpl : public LiteServerCache {
|
|||
}
|
||||
}
|
||||
|
||||
void drop_send_message_from_cache(td::Bits256 key) override {
|
||||
send_message_cache_.erase(key);
|
||||
}
|
||||
|
||||
private:
|
||||
struct CacheEntry : public td::ListNode {
|
||||
explicit CacheEntry(td::Bits256 key, td::BufferSlice value) : key_(key), value_(std::move(value)) {
|
||||
|
|
|
@ -531,8 +531,11 @@ void LiteQuery::perform_sendMessage(td::BufferSlice data) {
|
|||
auto copy = data.clone();
|
||||
td::actor::send_closure_later(
|
||||
manager_, &ValidatorManager::check_external_message, std::move(copy),
|
||||
[Self = actor_id(this), data = std::move(data), manager = manager_](td::Result<td::Ref<ExtMessage>> res) mutable {
|
||||
[Self = actor_id(this), data = std::move(data), manager = manager_, cache = cache_,
|
||||
cache_key = cache_key_](td::Result<td::Ref<ExtMessage>> res) mutable {
|
||||
if (res.is_error()) {
|
||||
// Don't cache errors
|
||||
td::actor::send_closure(cache, &LiteServerCache::drop_send_message_from_cache, cache_key);
|
||||
td::actor::send_closure(Self, &LiteQuery::abort_query,
|
||||
res.move_as_error_prefix("cannot apply external message to current state : "s));
|
||||
} else {
|
||||
|
|
|
@ -32,6 +32,7 @@ class LiteServerCache : public td::actor::Actor {
|
|||
virtual void update(td::Bits256 key, td::BufferSlice value) = 0;
|
||||
|
||||
virtual void process_send_message(td::Bits256 key, td::Promise<td::Unit> promise) = 0;
|
||||
virtual void drop_send_message_from_cache(td::Bits256 key) = 0;
|
||||
};
|
||||
|
||||
} // namespace ton::validator
|
Loading…
Reference in a new issue