Enable optimization for a large number of Event Token values

Issue summary

If an event contains a token with too many values, the query processor cannot produce the necessary SQL query. As a result, an error similar to the following can be found in the logs:

2014-10-21 17:01:46,189 [processBroker-process-pool-thread-1] ERROR - The query 
processor ran out of internal resources and could not produce query plan. This
is a rare event and only expected for extremely complex queries or queries
that reference a very large number of tables or partitions. Please simplify
the query. If you believe you have received this message in error, contact
Customer Support Services for more information.

Technical context

Generally, tokens include a single value. Typical system limits are approximately 80-100 values per token; this number varies depending on the size and length of the input strings.

 

Be aware that token values in this range have an implied performance cost on the resolution of subscription-based notifications. As a result, you should load-test them according to their projected throughputs to determine where system limits might occur.

 

Note: Before attempting to use a large number of tokens, we strongly recommend that you consult with xMatters Advisors and Consultants to determine your business requirements, and implement a best practices solution.

Resolution

xMatters 4.1 Patch 5 optimized the SQL to handle more Event Tokens. However, this optimization is not enabled by default, so you must implement it by carrying out the following steps:

  1. In each of the following directories, open the daoApplicationContext.xml file in a text editor:
    • <xMHOME>\axis2\WEB-INF\classes\resources\spring\integration
    • <xMHOME>\cocoon\WEB-INF\classes\resources\spring\integration
    • <xMHOME>\webapps\mobilegateway\WEB-INF\classes\resources\spring\integration
    • <xMHOME>\node\assets\resources\spring\integration
  2. Locate the following section:
       <bean id="eventDAO"
           parent="dbMetaDataDAOImpl">
         <property name="sessionFactory">
          <ref bean="sessionFactory"/>
         </property>
         <property name="subscriptionOptimizationFlag" value="false" />
       </bean>
  3. Change
    <property name="subscriptionOptimizationFlag" value="false" />
    to
    <property name="subscriptionOptimizationFlag" value="true" />:

Further information

xMatters internal reference: SUP-4900, PRE-4364, DTN-2578, DTN-2579

JDN-1987: originally created by Cameron Stewart

Have more questions? Submit a request

0 Comments

Please sign in to leave a comment.
Powered by Zendesk