IBM Support

JR44539: CMVC 224654 - IMPROVE THE PERFORMANCE OF THE 'BEST DEAL' LOGIC

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • 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
    

Local fix

  • Adjust promotions so that fewer promotions belonging to the same
    Promotion Group have the same priority or disable the "Best
    Deal" feature.
    

Problem summary

  • 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:
    

Problem conclusion

  • 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
    

Temporary fix

Comments

APAR Information

  • APAR number

    JR44539

  • Reported component name

    WC BUS EDITION

  • Reported component ID

    5724I3800

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-10-26

  • Closed date

    2013-01-08

  • Last modified date

    2013-01-08

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WC BUS EDITION

  • Fixed component ID

    5724I3800

Applicable component levels

  • R700 PSY

       UP

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSYSYL","label":"WebSphere Commerce Enterprise"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
08 January 2013