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.