diff options
-rw-r--r-- | lib/PublicInbox/XapHelper.pm | 12 | ||||
-rw-r--r-- | lib/PublicInbox/xap_helper.h | 4 |
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/PublicInbox/XapHelper.pm b/lib/PublicInbox/XapHelper.pm index ef6a47a3..36266e65 100644 --- a/lib/PublicInbox/XapHelper.pm +++ b/lib/PublicInbox/XapHelper.pm @@ -37,9 +37,15 @@ sub cmd_test_inspect { } sub iter_retry_check ($) { - die unless ref($@) =~ /\bDatabaseModifiedError\b/; - $_[0]->{srch}->reopen; - undef; # retries + if (ref($@) =~ /\bDatabaseModifiedError\b/) { + $_[0]->{srch}->reopen; + undef; # retries + } elsif (ref($@) =~ /\bDocNotFoundError\b/) { + warn "doc not found: $@"; + 0; # continue to next doc + } else { + die; + } } sub dump_ibx_iter ($$$) { diff --git a/lib/PublicInbox/xap_helper.h b/lib/PublicInbox/xap_helper.h index 17085adc..871a381c 100644 --- a/lib/PublicInbox/xap_helper.h +++ b/lib/PublicInbox/xap_helper.h @@ -256,6 +256,8 @@ static enum exc_iter dump_ibx_iter(struct req *req, const char *ibx_id, } catch (const Xapian::DatabaseModifiedError & e) { req->srch->db->reopen(); return ITER_RETRY; + } catch (const Xapian::DocNotFoundError & e) { // oh well... + warnx("doc not found: %s", e.get_description().c_str()); } return ITER_OK; } @@ -456,6 +458,8 @@ static enum exc_iter dump_roots_iter(struct req *req, } catch (const Xapian::DatabaseModifiedError & e) { req->srch->db->reopen(); return ITER_RETRY; + } catch (const Xapian::DocNotFoundError & e) { // oh well... + warnx("doc not found: %s", e.get_description().c_str()); } return ITER_OK; } |