Description

Sampling of an application which includes a very heavy query load testing against an EmbeddedSolrServer reveals a huge amount of the time spent on initialization of the QueryParser itself, specifically an internal class called LookaheadSuccess which extends from Error. With every instance of QueryParser created, it spends time populating the stacktrace for this object, which is created as a final instance variable (the variable called jj_ls).

Ideally an exception shouldn't be used as a signaling mechanism, or at the very least, not an exception created on every single object instantiation.