private void processIssues(Component component) { DiskCache<DefaultIssue>.DiskAppender cacheAppender = issueCache.newAppender(); try { Tracking<DefaultIssue, DefaultIssue> tracking = tracker.track(component); issueVisitors.beforeComponent(component); fillNewOpenIssues(component, tracking, cacheAppender); fillExistingOpenIssues(component, tracking, cacheAppender); closeUnmatchedBaseIssues(component, tracking, cacheAppender); issueVisitors.afterComponent(component); } catch (Exception e) { throw new IllegalStateException( String.format("Fail to process issues of component '%s'", component.getKey()), e); } finally { cacheAppender.close(); } }