Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/message_pool/msgpool/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,11 @@ where
// Only republish messages from local addresses, ie. transactions which were
// sent to this node directly.
for actor in local_addrs.read().iter() {
let resolved = resolve_to_key(api, key_cache, actor, &ts)?;
let Ok(resolved) = resolve_to_key(api, key_cache, actor, &ts).inspect_err(|e| {
tracing::debug!(%actor, "republish: failed to resolve address: {e:#}");
}) else {
continue;
};
if let Some(mset) = pending.read().get(&resolved) {
if mset.msgs.is_empty() {
continue;
Expand Down Expand Up @@ -339,8 +343,9 @@ impl<T: Provider> MpoolCtx<'_, T> {
.get_mut(from)
.and_then(|temp| temp.remove(&sequence))
.is_none()
&& let Ok(resolved) = resolve_to_key(self.api, self.key_cache, from, self.ts)
.inspect_err(|e| tracing::debug!(%from, "remove: failed to resolve address: {e:#}"))
{
let resolved = resolve_to_key(self.api, self.key_cache, from, self.ts)?;
remove(&resolved, self.pending, sequence, true)?;
}
Ok(())
Expand Down
5 changes: 4 additions & 1 deletion src/message_pool/msgpool/msg_pool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,10 @@ where
/// messages found, return None result type.
pub fn pending_for(&self, a: &Address) -> Option<Vec<SignedMessage>> {
let cur_ts = self.current_tipset();
let resolved = self.resolve_to_key(a, &cur_ts).ok()?;
let resolved = self
.resolve_to_key(a, &cur_ts)
.inspect_err(|e| tracing::debug!(%a, "pending_for: failed to resolve address: {e:#}"))
.ok()?;
let pending = self.pending.read();
let mset = pending.get(&resolved)?;
if mset.msgs.is_empty() {
Expand Down
6 changes: 1 addition & 5 deletions src/message_pool/msgpool/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -101,11 +101,7 @@ impl<DB: Blockstore> Provider for ChainStore<DB> {
.map_err(|err| err.into())
}

// NOTE: Lotus resolves to deterministic address at finality to guarantee
// the ID→key mapping is reorg-stable. We currently resolve against the
// tipset's parent state, which is safe but does not provide the same
// reorg-safety guarantee.
// See https://github.com/filecoin-project/lotus/blob/006da4c7e1c1c29ac02b32112c0d205e4085ba35/chain/stmgr/stmgr.go#L347
// TODO(forest): https://github.com/ChainSafe/forest/issues/6891
fn resolve_to_key(&self, addr: &Address, ts: &Tipset) -> Result<Address, Error> {
let state = StateTree::new_from_root(self.blockstore().clone(), ts.parent_state())
.map_err(|e| Error::Other(e.to_string()))?;
Expand Down
Loading