In iterate.rb, yield(repo, nxt) is called without a rescue block:
before[repo] =
if nxt.nil?
# ...
else
@loog.debug("Next is ##{nxt}, starting from it")
yield(repo, nxt) # raises StandardError → no context logged
end
The existing rescue at the end of over catches only Fbe::OffQuota. Any other exception propagates up with no information about which repository (repo) or which item (nxt) caused the failure.
In production this makes debugging iteration failures extremely difficult — the stacktrace shows the exception type but not the repository or fact being processed at the time of the crash.
What should happen: the yield call should preserve context before re-raising, e.g.:
begin
yield(repo, nxt)
rescue => e
raise "#{e.class} in #{repo} at #{nxt}: #{e.message}"
end
In
iterate.rb,yield(repo, nxt)is called without a rescue block:The existing
rescueat the end ofovercatches onlyFbe::OffQuota. Any other exception propagates up with no information about which repository (repo) or which item (nxt) caused the failure.In production this makes debugging iteration failures extremely difficult — the stacktrace shows the exception type but not the repository or fact being processed at the time of the crash.
What should happen: the
yieldcall should preserve context before re-raising, e.g.: