Skip to content
This repository was archived by the owner on Apr 24, 2026. It is now read-only.

Commit 6f702e0

Browse files
Privacy Sandbox Teamlusayaa
authored andcommitted
Release 1.0.0 (2024-10-14)
### ⚠ BREAKING CHANGES * GA release ### Features * Add 64 bit int sets support to key value cache * Add CBOR conversion for v2 objects * Add CBOR support to multi-partition flows in V2 * add CORS headers for envoy config * Add data loading support for uint64 sets * Add documentation for uint64 sets * Add internal lookup rpc for uint64 sets * Add parameter notifier to get parameter update notification * Add partition-level metadata to UDF execution metadata * Add runSetQueryUInt64 udf hook * Add support for reading and writing uint64 sets to csv files * Add uint64 bitset wrapper. * CBOR conversion for Compresion Group * CborDecodeToProto implementation * Convert http ContentType header to a custom header in GCP * Download pre-built aws-otel-collector.rpm * Encode cbor content as bytestring and add partitionOutputs to CBOR converter * Fix release script * Flag to control chaffing for sharding for nonprod * GA release * Implement CBOR for validator * Implement internal GetUInt64ValueSet functionality * Implement InternalRunSetQueryUInt64 rpc (local lookup) * Implement InternalRunSetQueryUInt64 rpc (sharded lookup) * multiple partition support * Pass partition level metadata to UDF * Process v2 padded requests * Put server logs in the response DebugInfo for consented requests * Refactor cache logic for bitsets into it's own class * Set up AWS terraform resources for logging verbosity parameter notification * Start parameter notifier to get logging verbosity updates * Support dataVersion field in PA partition output * Support set operations for 64 bit int sets * Update AWS sqs cleanup function to clean up sqs for parameter updates * Update common repo and set the verbosity level for PS_VLOG with new API * Update v2 contract * Update v2 headers * Upgrade common repo to 9c5c93e * Upgrade rules_oci to 2.0 and deprecate rules_docker * Use proper ohttp media types for encryption * When using the wrong inline set type in query, resolve the result ### Bug Fixes * Add missing include directive * Add missing internal testing parameters * Allow CORS OPTIONS for preflight * Correct fork logic * Correct output_filter typo * Destroy terraform before doing perfgate exporting * Enable a second kv on aws deployment. * fix AppMesh health check. * logMessage should us PS LOGS * Make AL2023 work. * Remove "k" from ReceivedLowLatencyNotificationsCount metric name * Remove version from header * Rename BUILD to BUILD.bazel * Resolve proxy subnet resources collision issue. * Response partition id should come from the request * Temporary GCP V2 HTTP envoy fix * Update common repo to pick up the server crash fix * Update V2 handler and docs with proper ohttp response label. * Upgrade builders version to 0.69.0 * Use specified release branch to cut release. * V2 should not return error status on UDF failure ### Dependencies * **deps:** Upgrade build-system to 0.66.1 * **deps:** Upgrade data-plane-shared-libraries to 144264c 2024-07-31 ### Documentation * Add aws update-function-code lambda update command to the AWS deployment doc * Add readme doc for diagnostic tool * Add screenshot for gcp server prod log location * Update docs to use docker compose instead of docker-compose * Update gcp deployment doc about console logging * Update playbook Bug: N/A Change-Id: I32efc1adcb97f084887036ae43cc1621be10add3 GitOrigin-RevId: abf40df08fbc441017e08f0d3ba03899fd1a2fd2
1 parent 6bd59ec commit 6f702e0

298 files changed

Lines changed: 12065 additions & 3408 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.bazelignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
bazel-kv-server
22
tools/wasm_example/
33
google_internal/piper/
4+
node_modules

.bazelrc

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
build --announce_rc
22
build --verbose_failures
33
build --compilation_mode=opt
4-
build --output_filter='^//((?!(third_party):).)*$'`
4+
build --output_filter='^//((?!(third_party):).)*$'
55
build --color=yes
6-
build --@io_bazel_rules_docker//transitions:enable=false
76
build --workspace_status_command="bash tools/get_workspace_status"
87
build --copt=-Werror=thread-safety
98
build --config=clang

CHANGELOG.md

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,97 @@
22

33
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
44

5-
## 0.17.1 (2024-08-26)
5+
## 1.0.0 (2024-10-14)
6+
7+
8+
### ⚠ BREAKING CHANGES
9+
10+
* GA release
11+
12+
### Features
13+
14+
* Add 64 bit int sets support to key value cache
15+
* Add CBOR conversion for v2 objects
16+
* Add CBOR support to multi-partition flows in V2
17+
* add CORS headers for envoy config
18+
* Add data loading support for uint64 sets
19+
* Add documentation for uint64 sets
20+
* Add internal lookup rpc for uint64 sets
21+
* Add parameter notifier to get parameter update notification
22+
* Add partition-level metadata to UDF execution metadata
23+
* Add runSetQueryUInt64 udf hook
24+
* Add support for reading and writing uint64 sets to csv files
25+
* Add uint64 bitset wrapper.
26+
* CBOR conversion for Compresion Group
27+
* CborDecodeToProto implementation
28+
* Convert http ContentType header to a custom header in GCP
29+
* Download pre-built aws-otel-collector.rpm
30+
* Encode cbor content as bytestring and add partitionOutputs to CBOR converter
31+
* Fix release script
32+
* Flag to control chaffing for sharding for nonprod
33+
* GA release
34+
* Implement CBOR for validator
35+
* Implement internal GetUInt64ValueSet functionality
36+
* Implement InternalRunSetQueryUInt64 rpc (local lookup)
37+
* Implement InternalRunSetQueryUInt64 rpc (sharded lookup)
38+
* multiple partition support
39+
* Pass partition level metadata to UDF
40+
* Process v2 padded requests
41+
* Put server logs in the response DebugInfo for consented requests
42+
* Refactor cache logic for bitsets into it's own class
43+
* Set up AWS terraform resources for logging verbosity parameter notification
44+
* Start parameter notifier to get logging verbosity updates
45+
* Support dataVersion field in PA partition output
46+
* Support set operations for 64 bit int sets
47+
* Update AWS sqs cleanup function to clean up sqs for parameter updates
48+
* Update common repo and set the verbosity level for PS_VLOG with new API
49+
* Update v2 contract
50+
* Update v2 headers
51+
* Upgrade common repo to 9c5c93e
52+
* Upgrade rules_oci to 2.0 and deprecate rules_docker
53+
* Use proper ohttp media types for encryption
54+
* When using the wrong inline set type in query, resolve the result
655

756

857
### Bug Fixes
958

59+
* Add missing include directive
60+
* Add missing internal testing parameters
61+
* Allow CORS OPTIONS for preflight
62+
* Correct fork logic
63+
* Correct output_filter typo
64+
* Destroy terraform before doing perfgate exporting
1065
* Enable a second kv on aws deployment.
1166
* fix AppMesh health check.
67+
* logMessage should us PS LOGS
68+
* Make AL2023 work.
69+
* Remove "k" from ReceivedLowLatencyNotificationsCount metric name
70+
* Remove version from header
71+
* Rename BUILD to BUILD.bazel
1272
* Resolve proxy subnet resources collision issue.
73+
* Response partition id should come from the request
74+
* Temporary GCP V2 HTTP envoy fix
75+
* Update common repo to pick up the server crash fix
76+
* Update V2 handler and docs with proper ohttp response label.
77+
* Upgrade builders version to 0.69.0
78+
* Use specified release branch to cut release.
79+
* V2 should not return error status on UDF failure
80+
81+
82+
### Dependencies
83+
84+
* **deps:** Upgrade build-system to 0.66.1
85+
* **deps:** Upgrade data-plane-shared-libraries to 144264c 2024-07-31
86+
87+
88+
### Documentation
89+
90+
* Add aws update-function-code lambda update command to the AWS deployment doc
91+
* Add readme doc for diagnostic tool
92+
* Add screenshot for gcp server prod log location
93+
* Update docs to use docker compose instead of docker-compose
94+
* Update gcp deployment doc about console logging
95+
* Update playbook
1396

1497
## 0.17.0 (2024-07-08)
1598

@@ -89,6 +172,11 @@ All notable changes to this project will be documented in this file. See [commit
89172
* Use aws_platform bazel config
90173
* Use local_{platform,instance} bazel configs
91174

175+
### Image digests and PCR0s
176+
177+
GCP: sha256:d09d5a6d340a8829df03213b71b74d4b431e4d5a138525c77269c347a367b004
178+
AWS: {"PCR0":"1e28ac4b72600ea40d61e1756e14f453a3d923a1bf94c360ae48d9777bff0714923d9322ed380823591859e357d2f825"}
179+
92180
## 0.16.0 (2024-04-05)
93181

94182

README.md

Lines changed: 18 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -11,47 +11,27 @@
1111
1212
---
1313

14-
# ![Privacy Sandbox Logo](docs/assets/privacy_sandbox_logo.png) FLEDGE Key/Value service
14+
# ![Privacy Sandbox Logo](docs/assets/privacy_sandbox_logo.png) Protected Auction Key/Value service
1515

16-
# Background
17-
18-
FLEDGE API is a proposal to serve remarketing and other custom-audience ads without third-party
19-
cookies. FLEDGE executes the ad auction between the buyers (DSP) and the sellers (SSP) locally, and
20-
receives real-time signals from the FLEDGE K/V servers. To learn more about
16+
# State of the project
2117

22-
- FLEDGE for the Web: [explainer](https://developer.chrome.com/en/docs/privacy-sandbox/fledge/)
23-
and the [developer guide](https://developer.chrome.com/blog/fledge-api/).
24-
- FLEDGE on Android:
25-
[design proposal](https://developer.android.com/design-for-safety/privacy-sandbox/fledge) and
26-
the
27-
[developer guide](https://developer.android.com/design-for-safety/privacy-sandbox/guides/fledge).
18+
The current codebase represents the implementation of the TEE-based Key/Value service by Privacy
19+
Sandbox.
2820

29-
When the auction is executed, separate
30-
[FLEDGE K/V servers](https://github.com/WICG/turtledove/blob/main/FLEDGE_Key_Value_Server_API.md)
31-
are queried for the buyers and sellers. When a buyer is making a bid, the DSP K/V server can be
32-
queried to receive real-time information to help determine the bid. To help the seller pick an
33-
auction winner, the SSP K/V server can be queried to receive any information about the creative to
34-
help score the ad.
21+
For
22+
[Protected Audience](https://developers.google.com/privacy-sandbox/private-advertising/protected-audience),
23+
the service can be used as a BYOS KV server. Soon it can be used to communicate with Chrome and the
24+
Bidding and Auction services using
25+
[V2 protocol](https://github.com/WICG/turtledove/blob/main/FLEDGE_Key_Value_Server_API.md).
3526

36-
# State of the project
27+
For
28+
[Protected App Signals](https://developers.google.com/privacy-sandbox/private-advertising/protected-audience/android/protected-app-signals),
29+
the service should be used as the ad retrieval server.
3730

38-
The current codebase represents the initial implementation and setup of the Key/Value server. It can
39-
be integrated with Chrome and Android with the
31+
It can be integrated with Chrome and Android with the
4032
[Privacy Sandbox unified origin trial](https://developer.chrome.com/blog/expanding-privacy-sandbox-testing/)
4133
and
4234
[Privacy Sandbox on Android Developer Preview](https://developer.android.com/design-for-safety/privacy-sandbox/program-overview).
43-
Our goal is to present the foundation of the project in a publicly visible way for early feedback.
44-
This feedback will help us shape the future versions.
45-
46-
The implementation, and in particular the APIs, are in rapid development and may change as new
47-
versions are released. The query API conforms to the
48-
[API explainer](https://github.com/WICG/turtledove/blob/main/FLEDGE_Key_Value_Server_API.md). At the
49-
moment, to load data, instead of calling the mutation API, you would place the data as files into a
50-
location that can be directly read by the server. See more details in the
51-
[data loading guide](/docs/data_loading/loading_data.md).
52-
53-
Currently, this service can be deployed to 1 region of your choice. Multi-region configuration is up
54-
to the service owner to configure.
5535

5636
## Current features
5737

@@ -120,6 +100,7 @@ products.
120100

121101
<!-- markdownlint-disable no-inline-html -->
122102
<!-- markdownlint-disable line-length -->
103+
123104
<table>
124105
<tr>
125106
<td>
@@ -193,6 +174,7 @@ The implementation supports live traffic at scale
193174
</td>
194175
</tr>
195176
</table>
177+
196178
<!-- markdownlint-enable no-inline-html -->
197179
<!-- markdownlint-enable line-length -->
198180

@@ -270,14 +252,7 @@ The implementation supports live traffic at scale
270252

271253
## Breaking changes
272254

273-
While we make efforts to not introduce breaking changes, we expect that to happen occasionally.
274-
275-
The release version follows the `[major change]-[minor change]-[patch]` scheme. All 0.x.x versions
276-
may contain breaking changes without notice. Refer to the [release changelog](/CHANGELOG.md) for the
277-
details of the breaking changes.
278-
279-
At GA the version will become 1.0.0, we will establish additional channels for announcing breaking
280-
changes and major version will always be incremented for breaking changes.
255+
Backward-incompatible changes are expected to be rare and will result in a major version change.
281256

282257
# Key documents
283258

@@ -304,8 +279,8 @@ changes and major version will always be incremented for breaking changes.
304279

305280
Contributions are welcome, and we will publish more detailed guidelines soon. In the meantime, if
306281
you are interested,
307-
[open a new Issue](https://github.com/privacysandbox/fledge-key-value-service/issues) in the GitHub
308-
repository.
282+
[open a new Issue](https://github.com/privacysandbox/protected-auction-key-value-service/issues) in
283+
the GitHub repository.
309284

310285
# Feedback
311286

WORKSPACE

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,19 @@ local_repository(
77
path = "testing/functionaltest-system",
88
)
99

10-
load("//builders/bazel:deps.bzl", "python_deps")
10+
load("//builders/bazel:deps.bzl", "python_deps", "python_register_toolchains")
1111

12-
python_deps("//builders/bazel")
12+
python_deps()
13+
14+
python_register_toolchains("//builders/bazel")
1315

1416
http_archive(
1517
name = "google_privacysandbox_servers_common",
16-
# commit 34445c1 2024-07-01
17-
sha256 = "ce300bc178b1eedd88d7545b89d1d672b3b9bfb62c138ab3f4a845f159436285",
18-
strip_prefix = "data-plane-shared-libraries-37522d6ac55c8592060f636d68f50feddcb9598a",
18+
# commit cc49da3 2024-10-09
19+
sha256 = "7a0337420161304c7429c727b1f82394bc27e1e2586d2da30e6d6100ba92b437",
20+
strip_prefix = "data-plane-shared-libraries-158593616a63df924af1cb689f3915b8d32e9db1",
1921
urls = [
20-
"https://github.com/privacysandbox/data-plane-shared-libraries/archive/37522d6ac55c8592060f636d68f50feddcb9598a.zip",
22+
"https://github.com/privacysandbox/data-plane-shared-libraries/archive/158593616a63df924af1cb689f3915b8d32e9db1.zip",
2123
],
2224
)
2325

@@ -51,28 +53,10 @@ load(
5153

5254
cpp_repositories()
5355

54-
http_archive(
55-
name = "io_bazel_rules_docker",
56-
sha256 = "b1e80761a8a8243d03ebca8845e9cc1ba6c82ce7c5179ce2b295cd36f7e394bf",
57-
urls = ["https://github.com/bazelbuild/rules_docker/releases/download/v0.25.0/rules_docker-v0.25.0.tar.gz"],
58-
)
59-
60-
load("@io_bazel_rules_docker//repositories:repositories.bzl", container_repositories = "repositories")
61-
62-
container_repositories()
63-
64-
load("@io_bazel_rules_docker//repositories:deps.bzl", io_bazel_rules_docker_deps = "deps")
65-
66-
io_bazel_rules_docker_deps()
67-
6856
load("//third_party_deps:container_deps.bzl", "container_deps")
6957

7058
container_deps()
7159

72-
load("@io_bazel_rules_docker//go:image.bzl", go_image_repos = "repositories")
73-
74-
go_image_repos()
75-
7660
# googleapis
7761
http_archive(
7862
name = "com_google_googleapis", # master branch from 26.04.2022
@@ -88,6 +72,16 @@ http_archive(
8872
urls = ["https://github.com/google/distributed_point_functions/archive/45da5f54836c38b73a1392e846c9db999c548711.tar.gz"],
8973
)
9074

75+
http_archive(
76+
name = "libcbor",
77+
build_file = "//third_party_deps:libcbor.BUILD",
78+
patch_args = ["-p1"],
79+
patches = ["//third_party_deps:libcbor.patch"],
80+
sha256 = "9fec8ce3071d5c7da8cda397fab5f0a17a60ca6cbaba6503a09a47056a53a4d7",
81+
strip_prefix = "libcbor-0.10.2/src",
82+
urls = ["https://github.com/PJK/libcbor/archive/refs/tags/v0.10.2.zip"],
83+
)
84+
9185
# Dependencies for Flex/Bison build rules
9286
http_archive(
9387
name = "rules_m4",
@@ -132,6 +126,15 @@ latency_benchmark_install_deps()
132126

133127
word2vec_install_deps()
134128

129+
http_archive(
130+
name = "io_bazel_rules_go",
131+
sha256 = "16e9fca53ed6bd4ff4ad76facc9b7b651a89db1689a2877d6fd7b82aa824e366",
132+
urls = [
133+
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.34.0/rules_go-v0.34.0.zip",
134+
"https://github.com/bazelbuild/rules_go/releases/download/v0.34.0/rules_go-v0.34.0.zip",
135+
],
136+
)
137+
135138
# Use nogo to run `go vet` with bazel
136139
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
137140

builders/.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ repos:
4747
- id: shellcheck
4848

4949
- repo: https://github.com/pre-commit/mirrors-clang-format
50-
rev: v18.1.4
50+
rev: v18.1.5
5151
hooks:
5252
- id: clang-format
5353
types_or:

builders/.profiler.bazelrc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
build:profiler --compilation_mode=opt
2+
build:profiler --dynamic_mode=off
3+
build:profiler --copt=-gmlt
4+
build:profiler --copt=-fno-omit-frame-pointer
5+
build:profiler --strip=never

0 commit comments

Comments
 (0)