On a large debuginfod test server, we observed that it's possible to have the same rpm/buildid identified with multiple locations, if the same content is accessible along several paths. That part's fine, but if some of the paths change - get removed - and before the next grooming pass, debuginfod gets confused. That's because multiple matches are tried in series (a sqlite scan loop), but an exception ("file not found") from one iteration can unintentionally cancel the scan. So we just need to put a try/catch around the handle_buildid_* function, to assure that other locations of the same content are attempted, regardless of exceptions.
commit f5015aebdb33