Most often violated quotas in Demandware (SFCC) – explained

Demandware makes it relatively easy to build a web-based e-commerce system without the need to care about the database, caching, scalability, and availability, which is much of the reason for its popularity among the enterprises. But its ease of use notwithstanding, Demandware has its nuances and subtleties that can bite developers, leading to hours of hair-pulling debugging. This article highlights some of the more common quota violations that need to beware of.

api.dw.serviceTimeoutNotSet

Quota api.dw.serviceTimeoutNotSet (not enforced, limit 0): 
limit exceeded 1 time(s), max actual was 1, current location:

The api.dw.serviceTimeoutNotSet API quota consists of:

  • Log file ID: api.dw.serviceTimeoutNotSet
  • Description: No explicit timeout was set for the service.
  • Limit:
    • Default Limit: 0

Reason:

The service in question has no explicit timeout set.

Solution:

Use the setTimeout() method of the HTTPClient like this:

var HTTPClient = require('dw/net/HTTPClient');
var hc = new HTTPClient();
hc.setTimeout(30000);

api.object.stringAttributeLength

Quota api.object.stringAttributeLength (not enforced, warn 120000, limit 200000): limit exceeded 1 time(s), max actual was 263000, current location: request/site Sites-PROJECT-Site/top pipeline Page-Show, further information: Check quota for string attribute 'textValue' for object 'CONTENT_AV' in order to write it to cache.

The api.object.stringAttributeLength API quota consists of:

  • Log file ID: api.object.stringAttributeLength
  • Description: The maximum string length which can be stored in a business object's long text or HTML field.
  • Limit:
    • Default Limit: 200,000 (warning at 120,000)

Reason:

The business object's attributes of type text have limit of 200000 characters.

Solution:

You are not supposed to store big data in Demandware objects. You have to truncate the data or store it in 3rd party system.

object.SlotConfigurationPO

Quota object.SlotConfigurationPO (not enforced, warn 6000, limit 10000): warn threshold exceeded 1 time(s), max actual was 8346, further information: n/a

The Slot Configurations object quota consists of:

  • Log file ID: object.SlotConfigurationPO
  • Description: The maximum number of slot configurations in an instance.
  • Limit: 10,000 (warning at 6,000)

Reason:

The maximum number of slot configurations in an instance is exceeded. Probably, there are a lot of unused (inactive) configurations, which are safe to delete.

Solution:

Delete all unused slots configurations.

object.CustomerImpl.relation.assignments

Quota object.CustomerImpl (internal, warn 600000, limit 1000000): limit exceeded 1 time(s), max actual was 18005915, further information: n/a

Explicit Customer Groups per Customer

The Explicit Customer Groups per Customer object relation quota consists of:

  • Log file ID: object.CustomerImpl.relation.assignments
  • Description: The maximum number of explicit customer groups a customer can be member of.
  • Limit: 50 (warning at 30)

Reason:

The Explicit Customer Groups per Customer object relation quota is hit because of too many customer groups.

Solution:

Revise the used customer groups and delete the unnecessary

api.queryObjects

Yet another undocumented quota.

Quota api.queryObjects@SF (internal, limit 50): limit exceeded 23 time(s), max actual was 73

Reason:

It is caused by querying custom objects returning too many results because of lack of refinement query

Solution

Try to avoid querying all the objects when not necessary. Add refinement query.

Reference

Leave a Reply

Your email address will not be published. Required fields are marked *