Skip to content

[DNM] fix: Allow project_id in credential update patch - #1085

Draft
gtema wants to merge 1 commit into
mainfrom
claude/github-issue-1044-dvbtyi
Draft

[DNM] fix: Allow project_id in credential update patch#1085
gtema wants to merge 1 commit into
mainfrom
claude/github-issue-1044-dvbtyi

Conversation

@gtema

@gtema gtema commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

CredentialUpdate (api-types and core-types) was missing the
project_id field despite ADR 0019 and identity/credential/update.rego
documenting it as updatable. A PATCH /v3/credentials/{id} carrying
project_id was silently ignored end-to-end (API type had no field to
deserialize it into, so the SQL driver never wrote it), which is why
tempest's test_credentials_create_get_update_delete failed against
keystone-rs (issue #1044): it updates project_id and asserts the new
value sticks.

Plumb project_id through CredentialUpdate in both wire and provider
types, the API-to-provider conversion, and the SQL driver's update
query. Add regression coverage at the SQL-driver, handler-mock, and
real-OPA-policy layers, including the delegation-boundary denial
(moves_project_out_of_scope) that was previously untestable because
the patch could never carry project_id.

  • Allow EC2 access value to change on update

The provider layer rejected any change to blob.access on credential
update, citing CVE-2020-12691, breaking tempest's
test_credentials_create_get_update_delete (issue #1044): it updates a
credential's access/secret pair and expects 200 OK.

keystone-py's own update handler
(keystone/api/credentials.py::_validate_blob_update_keys) only
enforces immutability on trust_id/app_cred_id/access_token_id/
access_id -- and access_id is not a real blob key anywhere in
keystone-py (the EC2 access value is stored under access), so that
part of the check has always been a permanent no-op upstream.
keystone-py has therefore always allowed access to change freely on
update, leaving the credential's SHA-256-derived id (computed once at
Create) unchanged -- a known quirk, not a security control.

Drop the Rust-only "access immutable" guard to match this verified
upstream behavior, keeping the trust_id/app_cred_id/access_token_id
delegation-metadata guard intact. Update ADR 0019 and the handler
docstring accordingly, and replace the stale rejection test with one
asserting access can change.

Assisted-by: Claude noreply@anthropic.com
Signed-off-by: Artem Goncharov artem.goncharov@gmail.com

CredentialUpdate (api-types and core-types) was missing the
project_id field despite ADR 0019 and identity/credential/update.rego
documenting it as updatable. A PATCH /v3/credentials/{id} carrying
project_id was silently ignored end-to-end (API type had no field to
deserialize it into, so the SQL driver never wrote it), which is why
tempest's test_credentials_create_get_update_delete failed against
keystone-rs (issue #1044): it updates project_id and asserts the new
value sticks.

Plumb project_id through CredentialUpdate in both wire and provider
types, the API-to-provider conversion, and the SQL driver's update
query. Add regression coverage at the SQL-driver, handler-mock, and
real-OPA-policy layers, including the delegation-boundary denial
(moves_project_out_of_scope) that was previously untestable because
the patch could never carry project_id.

- Allow EC2 access value to change on update

The provider layer rejected any change to blob.access on credential
update, citing CVE-2020-12691, breaking tempest's
test_credentials_create_get_update_delete (issue #1044): it updates a
credential's access/secret pair and expects 200 OK.

keystone-py's own update handler
(keystone/api/credentials.py::_validate_blob_update_keys) only
enforces immutability on trust_id/app_cred_id/access_token_id/
access_id -- and access_id is not a real blob key anywhere in
keystone-py (the EC2 access value is stored under access), so that
part of the check has always been a permanent no-op upstream.
keystone-py has therefore always allowed access to change freely on
update, leaving the credential's SHA-256-derived id (computed once at
Create) unchanged -- a known quirk, not a security control.

Drop the Rust-only "access immutable" guard to match this verified
upstream behavior, keeping the trust_id/app_cred_id/access_token_id
delegation-metadata guard intact. Update ADR 0019 and the handler
docstring accordingly, and replace the stale rejection test with one
asserting access can change.

Assisted-by: Claude <noreply@anthropic.com>
Signed-off-by: Artem Goncharov <artem.goncharov@gmail.com>
@gtema
gtema marked this pull request as draft July 24, 2026 07:14
@github-actions

Copy link
Copy Markdown

🦢 Load Test Results

Goose Attack Report

Plan Overview

Action Started Stopped Elapsed Users
Increasing 26-07-24 07:14:55 26-07-24 07:15:11 00:00:16 0 → 30
Maintaining 26-07-24 07:15:11 26-07-24 07:15:41 00:00:30 30
Decreasing 26-07-24 07:15:41 26-07-24 07:15:41 00:00:00 0 ← 30

Request Metrics

Method Name # Requests # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
DELETE DELETE /v3/auth/tokens 533 0 102.48 44 133 17.77 0.00
DELETE DELETE /v3/projects/:id (teardown) 2 0 36.50 34 39 0.07 0.00
DELETE DELETE /v3/users/:id (teardown) 3 0 41.00 29 48 0.10 0.00
GET 4857 0 96.67 65 181 161.90 0.00
GET GET /v3/auth/tokens (validate new) 530 0 102.97 88 128 17.67 0.00
GET GET /v3/projects/:id 761 0 78.81 67 110 25.37 0.00
GET GET /v3/projects/:id (catalog) 754 0 78.85 66 101 25.13 0.00
GET GET /v3/users/:id 1062 0 84.74 68 120 35.40 0.00
GET GET /v3/users/:id (catalog) 834 0 84.54 72 109 27.80 0.00
POST POST /v3/auth/tokens 529 0 77.43 65 100 17.63 0.00
Aggregated 9865 0 91.21 29 181 328.83 0.00

Response Time Metrics

Method Name 50%ile (ms) 60%ile (ms) 70%ile (ms) 80%ile (ms) 90%ile (ms) 95%ile (ms) 99%ile (ms) 100%ile (ms)
DELETE DELETE /v3/auth/tokens 100 100 110 110 110 110 120 130
DELETE DELETE /v3/projects/:id (teardown) 34 34 34 39 39 39 39 39
DELETE DELETE /v3/users/:id (teardown) 46 46 46 46 48 48 48 48
GET 89 93 97 100 150 150 160 180
GET GET /v3/auth/tokens (validate new) 100 100 110 110 110 110 128 128
GET GET /v3/projects/:id 78 80 81 82 85 87 94 110
GET GET /v3/projects/:id (catalog) 79 80 81 82 85 88 94 100
GET GET /v3/users/:id 84 85 87 89 91 94 100 120
GET GET /v3/users/:id (catalog) 84 85 87 88 91 93 100 109
POST POST /v3/auth/tokens 77 78 79 81 83 85 93 100
Aggregated 85 89 94 99 110 150 160 180

Status Code Metrics

Method Name Status Codes
DELETE DELETE /v3/auth/tokens 533 [204]
DELETE DELETE /v3/projects/:id (teardown) 2 [204]
DELETE DELETE /v3/users/:id (teardown) 3 [204]
GET 4,857 [200]
GET GET /v3/auth/tokens (validate new) 530 [200]
GET GET /v3/projects/:id 761 [200]
GET GET /v3/projects/:id (catalog) 754 [200]
GET GET /v3/users/:id 1,062 [200]
GET GET /v3/users/:id (catalog) 834 [200]
POST POST /v3/auth/tokens 529 [201]
Aggregated 529 [201], 8,798 [200], 538 [204]

Transaction Metrics

Transaction # Times Run # Fails Average (ms) Min (ms) Max (ms) RPS Failures/s
ReadHeavy
0.0 1 0 41.00 41 41 0.03 0.00
0.1 826 0 95.93 81 125 27.53 0.00
0.2 821 0 80.33 65 106 27.37 0.00
0.3 823 0 78.37 66 106 27.43 0.00
TokenLifecycle
1.0 0 0 0.00 0 0 0.00 0.00
1.1 533 0 283.91 227 315 17.77 0.00
ValidateToken
2.0 0 0 0.00 0 0 0.00 0.00
2.1 803 0 149.77 106 181 26.77 0.00
UserCRUD
3.0 0 0 0.00 0 0 0.00 0.00
3.1 0 0 0.00 0 0 0.00 0.00
3.2 1062 0 84.78 68 120 35.40 0.00
3.3 3 0 41.00 29 48 0.10 0.00
ProjectCRUD
4.0 0 0 0.00 0 0 0.00 0.00
4.1 0 0 0.00 0 0 0.00 0.00
4.2 761 0 78.85 67 110 25.37 0.00
4.3 2 0 36.50 34 39 0.07 0.00
UserRead
5.0 0 0 0.00 0 0 0.00 0.00
5.1 831 0 95.57 82 124 27.70 0.00
5.2 834 0 84.60 72 109 27.80 0.00
ProjectRead
6.0 0 0 0.00 0 0 0.00 0.00
6.1 753 0 80.17 68 109 25.10 0.00
6.2 754 0 78.90 66 101 25.13 0.00
Aggregated 8807 0 102.17 29 315 293.57 0.00

Scenario Metrics

Transaction # Users # Times Run Average (ms) Min (ms) Max (ms) Scenarios/s Iterations
ReadHeavy 7 822 255.59 230 288 27.40 117.43
TokenLifecycle 5 528 284.18 254 315 17.60 105.60
ValidateToken 4 799 149.89 131 181 26.63 199.75
UserCRUD 3 1059 84.78 68 120 35.30 353.00
ProjectCRUD 2 759 78.86 67 110 25.30 379.50
UserRead 5 830 180.62 161 220 27.67 166.00
ProjectRead 4 752 159.56 137 193 25.07 188.00
Aggregated 30 5549 162.09 67 315 184.97 1509.28

View full report

@github-actions

Copy link
Copy Markdown

🧪 Tempest Identity Compatibility Results (advisory, non-blocking)

rust

Totals
======
Ran: 131 tests in 29.4967 sec.
 - Passed: 62
 - Skipped: 4
 - Expected Fail: 0
 - Unexpected Success: 0
 - Failed: 65
Sum of execute time for each test: 24.3565 sec.
Failed test IDs
===== FAILED TESTS (target=rust) =====
tempest.api.identity.admin.v3.test_application_credentials.ApplicationCredentialsV3AdminTest.test_create_application_credential_with_roles[id-3b3dd48f-3388-406a-a9e6-4d078a552d0e]
tempest.api.identity.admin.v3.test_domains_negative.DomainsNegativeTestJSON.test_create_domain_with_name_length_over_64[id-37b1bbf2-d664-4785-9a11-333438586eae,negative]
tempest.api.identity.admin.v3.test_domains_negative.DomainsNegativeTestJSON.test_delete_active_domain[gate,id-1f3fbff5-4e44-400d-9ca1-d953f05f609b,negative]
setUpClass (tempest.api.identity.admin.v3.test_list_projects.ListProjectsStaticTestJSON)
setUpClass (tempest.api.identity.admin.v3.test_endpoint_groups.EndPointGroupsTest)
tempest.api.identity.admin.v3.test_default_project_id.TestDefaultProjectId.test_default_project_id[id-d6110661-6a71-49a7-a453-b5e26640ff6d]
tempest.api.identity.admin.v3.test_list_projects.ListProjectsTestJSON.test_list_projects_with_enabled[id-0fe7a334-675a-4509-b00e-1c4b95d5dae8]
tempest.api.identity.admin.v3.test_list_projects.ListProjectsTestJSON.test_list_projects_with_parent[id-6edc66f5-2941-4a17-9526-4073311c1fac]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_assignments_for_domain_roles[id-3859df7e-5b78-4e4d-b10e-214c8953842a]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_assignments_for_implied_roles_create_delete[id-c8828027-df48-4021-95df-b65b92c7429e]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_group_on_domain[id-4bf8a70b-e785-413a-ad53-9f91ce02faa7]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_group_on_project[id-cbf11737-1904-4690-9613-97bcbb3df1c4]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_group_on_system[id-c888fe4f-8018-48db-b959-542225c1b4b6]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_grant_list_revoke_role_to_user_on_domain[id-6c9a2940-3625-43a3-ac02-5dcec62ef3bd]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_implied_domain_roles[id-eb1e1c24-1bc4-4d47-9748-e127a1852c82]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_implied_roles_create_check_show_delete[id-c90c316c-d706-4728-bcba-eb1912081b69]
tempest.api.identity.admin.v3.test_roles.RolesV3TestJSON.test_role_create_update_show_list[id-18afc6c0-46cf-4911-824e-9989cc056c3a,smoke]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_create_domain_config_and_show_config_groups_and_options[id-9e3ff13c-f597-4f01-9377-d6c06c2a1477]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_create_update_and_delete_domain_config[id-7161023e-5dd0-4612-9da0-1bac6ac30b63]
tempest.api.identity.admin.v3.test_groups.GroupsV3TestJSON.test_group_users_add_list_delete[id-1598521a-2f36-4606-8df9-30772bd51339,smoke]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_create_update_and_delete_domain_config_groups_and_opts[id-c7510fa2-6661-4170-9c6b-4783a80651e9]
tempest.api.identity.admin.v3.test_domain_configuration.DomainConfigurationTestJSON.test_show_default_group_config_and_options[id-11a02bf0-6f94-4380-b3b0-c8dc18fc0d22]
tempest.api.identity.admin.v3.test_groups.GroupsV3TestJSON.test_list_user_groups[id-64573281-d26a-4a52-b899-503cb0f4e4ec]
tempest.api.identity.admin.v3.test_policies.PoliciesTestJSON.test_create_update_delete_policy[id-e544703a-2f03-4cf2-9b0f-350782fdb0d3,smoke]
tempest.api.identity.admin.v3.test_policies.PoliciesTestJSON.test_list_policies[id-1a0ad286-2d06-4123-ab0d-728893a76201]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_create_domain_without_description[id-2abf8764-309a-4fa9-bc58-201b799817ad]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_check_revoke_roles_on_projects_group[id-26021436-d5a4-4256-943c-ded01e0d4b45]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_create_update_delete_domain[id-f2f5b44a-82e8-4dad-8084-0661ea3b18cf,smoke]
tempest.api.identity.admin.v3.test_project_tags.IdentityV3ProjectTagsTest.test_list_update_delete_project_tags[id-7c123aac-999d-416a-a0fb-84b915ab10de]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_check_revoke_roles_on_projects_user[id-18b70e45-7687-4b72-8277-b8f1a47d7591]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_check_revoke_roles_on_domains_group[id-c7a8dda2-be50-4fb4-9a9c-e830771078b1]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_check_revoke_roles_on_domains_user[id-4e6f0366-97c8-423c-b2be-41eae6ac91c8]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_revoke_user_roles_on_domain[id-3acf666e-5354-42ac-8e17-8b68893bcd36]
tempest.api.identity.admin.v3.test_inherits.InheritsV3TestJSON.test_inherit_assign_list_revoke_user_roles_on_project_tree[id-9f02ccd9-9b57-46b4-8f77-dd5a736f3a06]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_domain_delete_cascades_content[id-d8d318b7-d1b3-4c37-94c5-3c5ba0b121ea]
tempest.api.identity.admin.v3.test_domains.DomainsTestJSON.test_list_domains_filter_by_enabled[id-3fd19840-65c1-43f8-b48c-51bdd066dff9]
tempest.api.identity.admin.v3.test_tokens.TokensV3TestJSON.test_get_available_domain_scopes[id-ec5ecb05-af64-4c04-ac86-4d9f6f12f185]
tempest.api.identity.admin.v3.test_projects.ProjectsTestJSON.test_create_is_domain_project[id-a7eb9416-6f9b-4dbb-b71b-7f73aaef59d5]
tempest.api.identity.admin.v3.test_projects.ProjectsTestJSON.test_project_create_with_parent[id-1854f9c0-70bc-4d11-a08a-1c789d339e3d]
tempest.api.identity.admin.v3.test_projects.ProjectsTestJSON.test_project_get_equals_list[id-d1db68b6-aebe-4fa0-b79d-d724d2e21162]
tempest.api.identity.admin.v3.test_list_users.UsersV3TestJSON.test_list_users_with_not_enabled[id-bff8bf2f-9408-4ef5-b63a-753c8c2124eb]
tempest.api.identity.admin.v3.test_tokens.TokensV3TestJSON.test_rescope_token[id-565fa210-1da1-4563-999b-f7b5b67cf112]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_create_and_show_consumer[id-c8307ea6-a86c-47fd-ae7b-5b3b2caca76d]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_delete_consumer[id-fdfa1b7f-2a31-4354-b2c7-f6ae20554f93]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_list_consumers[id-09ca50de-78f2-4ffb-ac71-f2254036b2b8]
tempest.api.identity.admin.v3.test_oauth_consumers.OAUTHConsumersV3Test.test_update_consumer[id-080a9b1a-c009-47c0-9979-5305bf72e3dc]
tempest.api.identity.admin.v3.test_projects_negative.ProjectsNegativeStaticTestJSON.test_create_projects_name_length_over_64[id-502b6ceb-b0c8-4422-bf53-f08fdb21e2f0,negative]
tempest.api.identity.admin.v3.test_users.UsersV3TestJSON.test_list_user_projects[id-a831e70c-e35b-430b-92ed-81ebbc5437b8]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_get_trusts_all[id-4773ebd5-ecbf-4255-b8d8-b63e6f72b65d,smoke]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_get_trusts_query[id-6268b345-87ca-47c0-9ce3-37792b43403a]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_expire[id-0ed14b66-cefd-4b5c-a964-65759453e292]
tempest.api.identity.v3.test_tokens.TokensV3Test.test_validate_token[id-a9512ac3-3909-48a4-b395-11f438e16260]
tempest.api.identity.admin.v3.test_users_negative.UsersNegativeTest.test_create_user_for_non_existent_domain[id-e75f006c-89cc-477b-874d-588e4eab4b17,negative]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_media_types[id-657c1970-4722-4189-8831-7325f3bc4265,smoke]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_resources[id-b9232f5e-d9e5-4d97-b96c-28d3db4de1bd,smoke]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_identity_v3_existence[id-79aec9ae-710f-4c54-a4fc-3aa25b4feac3]
tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_list_api_versions[id-721f480f-35b6-46c7-846e-047e6acea0dc,smoke]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_impersonate[id-5a0a91a4-baef-4a14-baba-59bf4d7fcace]
tempest.api.identity.v3.test_projects.IdentityV3ProjectsTest.test_list_projects_returns_only_authorized_projects[id-86128d46-e170-4644-866a-cc487f699e1d]
tempest.api.identity.v3.test_catalog.IdentityCatalogTest.test_catalog_standardization[id-56b57ced-22b8-4127-9b8a-565dfb0207e2]
tempest.api.identity.admin.v3.test_trusts.TrustsV3TestJSON.test_trust_noimpersonate[id-ed2a8779-a7ac-49dc-afd7-30f32f936ed2]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_create_application_credential[id-8080c75c-eddc-4786-941a-c2da7039ae61]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_create_application_credential_expires[id-852daf0c-42b5-4239-8466-d193d0543ed3]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_list_application_credentials[id-ff0cd457-6224-46e7-b79e-0ada4964a8a6]
tempest.api.identity.v3.test_application_credentials.ApplicationCredentialsV3Test.test_query_application_credentials[id-9bb5e5cc-5250-493a-8869-8b665f6aa5f6]
===== END FAILED TESTS (target=rust) =====

View full run

@github-actions

Copy link
Copy Markdown

🐰 Bencher Report

Projectkeystone
Branchclaude/github-issue-1044-dvbtyi
Testbedubuntu-latest
Click to view all benchmark results
BenchmarkLatencyBenchmark Result
nanoseconds (ns)
(Result Δ%)
Upper Boundary
nanoseconds (ns)
(Limit %)
Command_Serde/apply/remove📈 view plot
🚷 view threshold
86,531.00 ns
(-63.09%)Baseline: 234,440.47 ns
787,620.58 ns
(10.99%)
Command_Serde/apply/set📈 view plot
🚷 view threshold
94,933.00 ns
(-66.42%)Baseline: 282,733.00 ns
1,265,870.25 ns
(7.50%)
Command_Serde/pack/delete📈 view plot
🚷 view threshold
125.39 ns
(+4.74%)Baseline: 119.72 ns
152.38 ns
(82.29%)
Command_Serde/pack/delete_index📈 view plot
🚷 view threshold
114.25 ns
(+7.97%)Baseline: 105.81 ns
133.18 ns
(85.79%)
Command_Serde/pack/set📈 view plot
🚷 view threshold
192.44 ns
(+0.12%)Baseline: 192.21 ns
245.60 ns
(78.35%)
Command_Serde/pack/set_index📈 view plot
🚷 view threshold
114.35 ns
(+8.07%)Baseline: 105.82 ns
132.80 ns
(86.11%)
Command_Serde/unpack/delete📈 view plot
🚷 view threshold
221.25 ns
(+18.14%)Baseline: 187.28 ns
251.48 ns
(87.98%)
Command_Serde/unpack/delete_index📈 view plot
🚷 view threshold
180.59 ns
(+15.28%)Baseline: 156.65 ns
205.46 ns
(87.89%)
Command_Serde/unpack/set📈 view plot
🚷 view threshold
282.62 ns
(+7.15%)Baseline: 263.77 ns
344.43 ns
(82.05%)
Command_Serde/unpack/set_index📈 view plot
🚷 view threshold
179.46 ns
(+16.42%)Baseline: 154.15 ns
202.68 ns
(88.54%)
Payload_encryption/pack/remove_cmd📈 view plot
🚷 view threshold
119.47 ns
(+5.62%)Baseline: 113.11 ns
145.02 ns
(82.38%)
Payload_encryption/pack/set_cmd📈 view plot
🚷 view threshold
193.16 ns
(-2.12%)Baseline: 197.35 ns
263.16 ns
(73.40%)
Payload_encryption/unpack/remove_cmd📈 view plot
🚷 view threshold
226.12 ns
(+13.99%)Baseline: 198.36 ns
267.87 ns
(84.41%)
Payload_encryption/unpack/set_cmd📈 view plot
🚷 view threshold
286.37 ns
(+3.12%)Baseline: 277.71 ns
367.45 ns
(77.93%)
Raft_1Node_Latency/prefix/1node📈 view plot
🚷 view threshold
4,681,200.00 ns
(+76.97%)Baseline: 2,645,185.62 ns
6,079,561.64 ns
(77.00%)
Raft_1Node_Latency/read/1node📈 view plot
🚷 view threshold
34,201.00 ns
(-12.02%)Baseline: 38,872.00 ns
54,612.64 ns
(62.62%)
Raft_1Node_Latency/remove/1node📈 view plot
🚷 view threshold
246,850.00 ns
(-62.19%)Baseline: 652,827.19 ns
2,515,025.93 ns
(9.82%)
Raft_1Node_Latency/write/1node📈 view plot
🚷 view threshold
271,910.00 ns
(-61.40%)Baseline: 704,401.25 ns
3,209,812.88 ns
(8.47%)
build_snapshot/default📈 view plot
🚷 view threshold
114,500.00 ns
(-4.12%)Baseline: 119,419.84 ns
176,740.09 ns
(64.78%)
fernet token/project📈 view plot
🚷 view threshold
1,553.60 ns
(+10.08%)Baseline: 1,411.36 ns
1,740.82 ns
(89.25%)
get_data_keyspace📈 view plot
🚷 view threshold
0.35 ns
(+11.76%)Baseline: 0.31 ns
0.38 ns
(92.67%)
get_db📈 view plot
🚷 view threshold
0.35 ns
(+11.53%)Baseline: 0.32 ns
0.38 ns
(92.64%)
get_fernet_token_timestamp/project📈 view plot
🚷 view threshold
152.03 ns
(+7.32%)Baseline: 141.66 ns
180.00 ns
(84.46%)
get_keyspace📈 view plot
🚷 view threshold
4.74 ns
(-9.41%)Baseline: 5.23 ns
11.51 ns
(41.18%)
🐰 View full continuous benchmarking report in Bencher

@gtema gtema changed the title fix: Allow project_id in credential update patch [DNM] fix: Allow project_id in credential update patch Jul 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant