prebid-server icon indicating copy to clipboard operation
prebid-server copied to clipboard

cookie_sync limit inconsistency

Open bretg opened this issue 1 year ago • 2 comments

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).

bretg avatar Feb 23 '24 12:02 bretg

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
}

Net-burst avatar Feb 23 '24 14:02 Net-burst

Discussed in committee. A limit=0 will mean max-limit. We'll do this in 3.0.

bretg avatar Feb 23 '24 15:02 bretg