January 24, 2019
The sister Prebid Server projects are both busy and moving forward at different paces on different features. Sometimes a feature may exist in one implementation and not the other for an interim period. This page tracks known differences that may persist for longer than a couple of weeks.
- PBS-Java supports Stored Responses issue 861. PBS-Java PR 354.
- PBS-Java supports Currency conversion. PBS-Go has it implemented, but disabled by default(still under dev) issue 280, issue 760. PBS-Java PR 22
- PBS-Java Currency conversion supports finding intermediate conversion rate, e.g. if pairs USD : AUD = 1.2 and EUR : AUD = 1.5 are present and EUR to USD conversion is needed, will return (1/1.5) * 1.2 conversion rate.
- PBS-Go Currency conversion admin debug endpoint exposes following information: Sync source URL, Internal rates, Update frequency, Last update. PBS-Java
/currency-ratesadmin endpoint currently supports checking the latest update time only and is not available if currency conversion is disabled. - PBS-Java supports IP-address lookup in certain scenarios around GDPR. See https://github.com/rubicon-project/prebid-server-java/blob/master/docs/developers/PrebidServerJava_GDPR_Requirements.pdf
- PBS-Java supports InfluxDB, Graphite and Prometheus, PBS-Go supports InfluxDB and Prometheus as metrics backend.
- PBS-Java has Circuit Breaker mechanism for database, http and geolocation requests. This can protect the server in scenarios where an external service becomes unavailable.
- PBS-Java supports
ext.prebid.cache.{bids,vastxml}.returnCreativefield to control creative presence in response (trueby default). - PBS-Java support caching winning bids only through
auction.cache.only-winning-bidsconfiguration property or request fieldrequest.ext.prebid.cache.winningonly. PBS-Java issue 279, PR 484. - PBS-Java has a specific
host-cookieanduidscookie processing for all endpoints, that setsuids.HOST-BIDDERfromhost-cookieif first is absent or not equal to second. - PBS-Java has a specific
/cookie-syncbehaviour, that sets/setuidas usersync-url for host-bidder ifhost-cookiespecified butuids.HOST-BIDDERundefined or differs. - PBS-Java has
/eventendpoint to allow Web browsers and mobile applications to notify about different ad events (win, view etc). Filling new bid extensionsresponse.seatbid.bid.ext.prebid.events.{win,view}with events url after successful auction completing makes it possible. Also new targeting parameterhb_winurlwith win event url is supported. - PBS-Java supports per-account cache TTL and event URLs configuration in the database in columns
banner_cache_ttl,video_cache_ttlandevents_enabled. - PBS-Java does not support passing bidder extensions in
imp[...].ext.prebid.bidder. PBS-Go PR 846 - PBS-Java responds with active bidders only in
/info/biddersand/info/bidders/allendpoints, although PBS-Go returns all implemented ones. Calling/info/bidders/{bidderName}with a disabled bidder name will result in 404 Not Found, which is a desired behaviour, unlike in PBS-Go issue 988, PR. - PBS-Java supports video impression tracking issue 1015. PBS-Java PR 437.
- PBS-Java removes null objects or empty strings (e.g. in Go
/auctionresponse bid object will have fieldhb_cache: ""whereas in Java it will be absent; alsodigitrust: nullin PBS Go is not there in PBS Java). PBS-Go Issue 476 - All adapters have been ported to use OpenRTB directly in PBS-Java. PBS-Go Facebook AudienceNetwork adapter Issue 211
- Java and Go adapter internal interface returns currency in different ways:
- in PBS-Go, the adapter sets BidResponse.currency, which is outside of each TypedBid.
- in PBS-Java, the adapter set BidderBid[N].currency.
- PBS-Go use "60 seconds buffer + {bid,imp,mediaType}TTL" approach to determine caching TTL period.
- PBS-Java has different names for system metrics. For example instead of
active_connectionsit usesvertx.http.servers.[IP]:[PORT].open-netsockets.count. See Metrics for details. - PBS-Go
/openrtb2/{auction,amp}returns HTTP 503 Service Unavailable if request has blacklisted account or app, PBS-Java returns HTTP 403 Forbidden.
- PBS-Java supports geo location service interface to determine the country for incoming client request and provides a default implementation using MaxMind GeoLite2 Country database.
- Different checking of purpose IDs (1 -
Storage and access of information, 3 -Ad selection, delivery, reporting):- for
/auctionendpoint: in PBS-Java - doesn't support GDPR processing. - for
/openrtb2/{auction,amp}endpoint: in PBS-Java - 1 and 3 (for each bidder from request); in PBS-Go - doesn't support GDPR processing. - for
/cookie_syncendpoint: in PBS-Java - doesn't support GDPR processing; in PBS-Go - only 1 checked.
- for
- PBS-Java allows bidder to enforce GDPR processing. This information available in bidder meta info.