prebid-server
prebid-server copied to clipboard
cookie_sync limit inconsistency
There’s a discrepancy in /cookie_sync limit parameter handling between PBS Go and Java in the case of limit <= 0.
For PBS-Java, limit<=0 means that the configured cookie-sync.max-limit is used.
For PBS-Go, limit<=0 means that the configured cookie-sync.default-limit will be used instead (if it’s defined).
Java limit logic:
private CookieSyncContext resolveLimit(CookieSyncContext cookieSyncContext) {
final AccountCookieSyncConfig accountCookieSyncConfig = cookieSyncContext.getAccount().getCookieSync();
final int resolvedLimit = ObjectUtils.firstNonNull(
cookieSyncContext.getCookieSyncRequest().getLimit(),
ObjectUtil.getIfNotNull(accountCookieSyncConfig, AccountCookieSyncConfig::getDefaultLimit),
defaultLimit);
final int adjustedLimit = resolvedLimit <= 0 ? Integer.MAX_VALUE : resolvedLimit;
final int resolvedMaxLimit = ObjectUtils.firstNonNull(
ObjectUtil.getIfNotNull(accountCookieSyncConfig, AccountCookieSyncConfig::getMaxLimit),
maxLimit);
final int adjustedMaxLimit = resolvedMaxLimit <= 0 ? Integer.MAX_VALUE : resolvedMaxLimit;
return cookieSyncContext.with(Math.min(adjustedLimit, adjustedMaxLimit));
}
Go limit logic:
func (c *cookieSyncEndpoint) setLimit(request cookieSyncRequest, cookieSyncConfig config.CookieSync) cookieSyncRequest {
if request.Limit <= 0 && cookieSyncConfig.DefaultLimit != nil {
request.Limit = *cookieSyncConfig.DefaultLimit
}
if cookieSyncConfig.MaxLimit != nil && (request.Limit <= 0 || request.Limit > *cookieSyncConfig.MaxLimit) {
request.Limit = *cookieSyncConfig.MaxLimit
}
if request.Limit < 0 {
request.Limit = 0
}
return request
}
Discussed in committee. A limit=0 will mean max-limit. We'll do this in 3.0.