Direct links to fixes
Closed as program error.
After enabling the "Best Deal" feature, the system may run into an OutOfMemoryException when processing an order that meets the promotion criteria. A javacore generated at the time of the OutOfMemoryException will show one or more WebContainer threads with a stack trace similar to the following: 3XMTHREADINFO "WebContainer : 2" J9VMThread:0x00000000331DCD00, j9thread_t:0x000001001DF56760, java/lang/Thread:0x0000000051FA65D0, state:CW, prio=5 3XMTHREADINFO1 (native thread ID:0xC80081, native priority:0x5, native policy:UNKNOWN) 3XMTHREADINFO3 Java callstack: 4XESTACKTRACE at com/ibm/commerce/marketing/promotion/internal/runtime/SequenceCo mbinationBuilder.buildCombination(SequenceCombinationBuilder.jav a:396(Compiled Code)) 4XESTACKTRACE at com/ibm/commerce/marketing/promotion/internal/runtime/SequenceCo mbinationBuilder.buildCombination(SequenceCombinationBuilder.jav a:404(Compiled Code)) 4XESTACKTRACE at com/ibm/commerce/marketing/promotion/internal/runtime/SequenceCo mbinationBuilder.buildCombination(SequenceCombinationBuilder.jav a:404(Compiled Code)) 4XESTACKTRACE at com/ibm/commerce/marketing/promotion/internal/runtime/SequenceCo mbinationBuilder.buildCombination(SequenceCombinationBuilder.jav a:404(Compiled Code)) 4XESTACKTRACE at com/ibm/commerce/marketing/promotion/internal/runtime/SequenceCo mbinationBuilder.getSequenceCombinations(SequenceCombinationBuil der.java:348) 4XESTACKTRACE at com/ibm/commerce/marketing/promotion/runtime/DefaultPromotionEng ine.invoke(DefaultPromotionEngine.java:527) 4XESTACKTRACE at com/shc/ecom/universalpromotions/UniversalPromotionEngineWrapper .invoke(UniversalPromotionEngineWrapper.java:69) 4XESTACKTRACE at com/ibm/commerce/order/commands/PromotionEngineOrderCalculateCmd Impl.invokePromotionEngine(PromotionEngineOrderCalculateCmdImpl. java:825) 4XESTACKTRACE at com/ibm/commerce/order/commands/PromotionEngineOrderCalculateCmd Impl.getCatalogEntryQuantitiesToAdd(PromotionEngineOrderCalculat eCmdImpl.java:497) 4XESTACKTRACE at com/ibm/commerce/order/commands/PromotionEngineOrderCalculateCmd Impl.performExecute(PromotionEngineOrderCalculateCmdImpl.java) The heapdump will show a significant portion of the heap being used by the SequenceCombinationBuilder class
Adjust promotions so that fewer promotions belonging to the same Promotion Group have the same priority or disable the "Best Deal" feature.
USERS AFFECTED: WebSphere Commerce v7.0 users who have enabled Best Deal calculation in the promotions engine. PROBLEM ABSTRACT: Using the "Best Deal" feature with promotions, the Promotion Engine generates a sequence combination list of all the possible permutations for which promotions can be applied. With a higher number of promotions, this can cause the system to run into an OutOfMemoryException as the sequence combination list is generated. BUSINESS IMPACT: Impacts site performance, could result in an OutOfMemoryException RECOMMENDATION:
A number of changes were made to improve the performance and configurability of the Best Deal logic, including: 1) The Promotion Engine can be configured to restrict which Promotion Groups will be processed using the Best Deal logic. 2) The Promotion Engine can be configured so that only a certain number of promotions per Promotion Group will be considered using the Best Deal logic. When either of these configurations are not specified, the default behavior will be used (All promotions per Promotion Group and all Promotion Groups will use the Best Deal logic). The following configuration can be implemented to reduce the number of promotions considered for "Best Deal" evaluation. In: WCSPromotionEngineConfig.xml, set the flags as follows: PromotionGroupsForBestDealEvaluation: The comma-separated list of promotion groups that should participate in the best deal evaluation. If no promotions groups are configured, then all promotion groups are considered. MaxPromotionsPerGroupForBestDealEvaluation: The maximum number of promotions per group to use in the best deal evaluation. If no maximum value is set, then there will be no limit on the number of promotions per group considered for best deal evaluation. SequenceCombinationLimit: The maximum number of best deal combinations to use in the best deal evaluation. For example: <DefaultBehavior> <StatelessInvocation>true</StatelessInvocation> <CheckTargetingAtRuntime>true</CheckTargetingAtRuntime> <SkipTargetingOnCodeEntered>true</SkipTargetingOnCodeEntered> <PriceAdjustmentBasedOnStandardOfferPrice>true</PriceAdjustmentB asedOnStandardOfferPrice> <Debug>false</Debug> <EvaluationFlowControl>1</EvaluationFlowControl> <MaxPromotionsPerGroupForBestDealEvaluation>3</MaxPromotionsPerG roupForBestDealEvaluation> <PromotionGroupsForBestDealEvaluation>MyCustomPromotionGroup,Ord erLevelPromotion</PromotionGroupsForBestDealEvaluation> <SequenceCombinationLimit>50</SequenceCombinationLimit> </DefaultBehavior> The following guidelines should be considered when configuring Best Deal support. The determination of the best deal is a factorial type of problem in that the number of possible promotion combinations is the factorial value of the number of promotions being considered in the promotion group. The larger the value, the higher the performance impact. Example: For 5 promotions in the same group with the same priority, 5 factorial is 5x4x3x2x1 = 120 combinations. 1) Keep the maximum configuration to 5 deals per group (MaxPromotionsPerGroupForBestDealEvaluation) and 120 combinations total (SequenceCombinationLimit), or 6 deals per group and 720 combinations total. 2) Keep the total number of combinations (SequenceCombinationLimit) equal to or less than the factorial of the number of promotions per group being considered (MaxPromotionsPerGroupForBestDealEvaluation). ------------------------------------------------------------- The latest available maintenance information can be obtained from the Recommended Fixes for WebSphere Commerce technote: http://www.ibm.com/support/docview.wss?rs=3046&uid=swg21261296
Reported component name
WC BUS EDITION
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
WC BUS EDITION
Fixed component ID
Applicable component levels