Skip to content

feat(policy): add sort support to ListAttributes API #3223

Open
dsm20 wants to merge 25 commits intomainfrom
feat/DSPX-2682-add-sort-listattributes
Open

feat(policy): add sort support to ListAttributes API #3223
dsm20 wants to merge 25 commits intomainfrom
feat/DSPX-2682-add-sort-listattributes

Conversation

@dsm20
Copy link
Copy Markdown
Contributor

@dsm20 dsm20 commented Mar 30, 2026

Resolves DSPX-2682, depends on #3187

Proposed Changes

  • Adds strongly-typed sort support to ListAttributes RPC, following the
    pattern established in feat(policy): Add sort support to ListNamespaces API #3192 (ListNamespaces)
  • Sortable fields: name, created_at, updated_at (ASC/DESC), with
    backward-compatible fallback to created_at DESC
  • Includes CASE WHEN ordering in both listAttributesDetail and
    listAttributesSummary SQL queries

Changes

  • Proto: SortAttributesType enum, AttributesSort message, sort
    field on ListAttributesRequest (max 1, buf.validate)
  • SQL: CASE WHEN sort blocks in attributes.sql for both detail and
    summary queries
  • Go: GetAttributesSortParams() helper in utils.go, wired into
    ListAttributes() in attributes.go
  • Tests: 9 unit tests for the helper, 5 integration tests covering
    each sort field + direction + fallback

Checklist

  • I have added or updated unit tests
  • I have added or updated integration tests (if appropriate)
  • I have added or updated documentation

Summary by CodeRabbit

Release Notes

  • New Features

    • Added sorting capability for attributes with options to sort by name, creation date, or last updated date in ascending or descending order.
  • Documentation

    • Updated API documentation with new sorting parameters and clarified timestamp parameter constraints.

@dsm20 dsm20 requested review from a team as code owners March 30, 2026 18:33
@dsm20 dsm20 marked this pull request as draft March 30, 2026 18:33
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 30, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

This PR adds sorting support to the ListAttributes API by introducing new protobuf message types (AttributesSort, SortAttributesType) and extending the request with a sort field. The database layer was updated to support parameterized sorting by name, created_at, or updated_at in ascending or descending order.

Changes

Cohort / File(s) Summary
Protocol Definitions
service/policy/attributes/attributes.proto, docs/grpc/index.html, service/policy/selectors.proto
Added SortAttributesType enum (name, created_at, updated_at values) and AttributesSort message with field/direction. Extended ListAttributesRequest with optional sort field (max 1 item). Updated generated HTML documentation.
OpenAPI Documentation
docs/openapi/policy/attributes/attributes.openapi.yaml
Added schemas for policy.SortDirection (ASC/DESC), policy.attributes.SortAttributesType, and policy.attributes.AttributesSort. Extended ListAttributesRequest schema with optional sort array field (maxItems: 1).
Database Layer
service/policy/db/attributes.go, service/policy/db/attributes.sql.go, service/policy/db/queries/attributes.sql
Updated ListAttributes to extract sort parameters and pass them to query layer. Modified listAttributesDetail and listAttributesSummary to use parameterized ORDER BY with CASE logic for name/created_at/updated_at sorting. Added NoLimit support in listAttributesSummary for flexible pagination. Updated struct types to include SortField, SortDirection, and NoLimit fields.
Utility Functions & Tests
service/policy/db/utils.go, service/policy/db/utils_test.go
Added GetAttributesSortParams utility function to translate AttributesSort slice into SQL field and direction strings. Comprehensive unit test coverage including nil/empty/unspecified cases and field/direction mappings.
Integration Tests
service/integration/attributes_test.go
Added five integration tests: sorting by name (ASC/DESC), by created_at (ASC), by updated_at (DESC), and fallback to default behavior when field is unspecified. Tests verify correct attribute ordering under each scenario.
Configuration & Documentation
.gitignore, docs/openapi/authorization/authorization.openapi.yaml
Added Claude AI ignore pattern to .gitignore. Updated OpenAPI parameter documentation for createdAt.seconds to use explicit numeric bounds and clarified nanosecond field description.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • alkalescent
  • c-r33d
  • elizabethhealy

Poem

🐰 Hop, hop! The attributes now sort with such grace,
By name, time created, or updates—any case!
With SQL's CASE WHEN and parameters neat,
The database queries are speedy and sweet!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 20.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately and concisely describes the primary change: adding sort support to the ListAttributes API. It is specific, directly related to the main purpose of the changeset, and follows conventional commit format.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/DSPX-2682-add-sort-listattributes

Warning

Review ran into problems

🔥 Problems

Timed out fetching pipeline failures after 30000ms


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces robust sorting capabilities to the ListAttributes API. By defining new Protobuf enums and messages, it enables clients to request sorted results in a type-safe manner. The backend implementation leverages SQL CASE statements to handle dynamic ordering, maintaining backward compatibility by defaulting to the existing created_at DESC behavior when no sort is specified.

Highlights

  • API Enhancement: Added strongly-typed sort support to the ListAttributes RPC, allowing clients to specify sorting by name, created_at, or updated_at fields.
  • Database Updates: Updated SQL queries for attribute listing to include dynamic CASE WHEN ordering, ensuring efficient and flexible sorting at the database level.
  • Testing: Added comprehensive unit tests for the sorting parameter helper and integration tests to verify sorting behavior across different fields and directions.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Ignored Files
  • Ignored by pattern: docs/openapi/**/* (2)
    • docs/openapi/policy/attributes/attributes.openapi.yaml
    • docs/openapi/policy/selectors.openapi.yaml
  • Ignored by pattern: protocol/**/* (2)
    • protocol/go/policy/attributes/attributes.pb.go
    • protocol/go/policy/selectors.pb.go
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.


The list was static, fixed in time, Now sorting makes it flow in rhyme. With name or date, the order shifts, As code improves with these new gifts.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions github-actions bot added comp:db DB component comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) docs Documentation size/m labels Mar 30, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 194.065317ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 97.299568ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 387.64141ms
Throughput 257.97 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 42.011967157s
Average Latency 417.982344ms
Throughput 119.01 requests/second

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces sorting capabilities for listing attributes. It adds new protobuf definitions for sort fields and directions, updates the database layer to handle dynamic sorting via SQL CASE statements, and includes comprehensive integration and unit tests. The review feedback identifies a potential issue where the updated listAttributesSummary query might return zero results if callers do not provide a non-zero limit, and suggests a minor refactor to simplify the switch logic in the sorting utility function.

@github-actions
Copy link
Copy Markdown
Contributor

@dsm20 dsm20 force-pushed the feat/DSPX-2682-add-sort-listattributes branch from 21a1139 to 60d31d8 Compare March 31, 2026 15:51
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 163.099887ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 87.157791ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 388.434078ms
Throughput 257.44 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 41.032328435s
Average Latency 408.754083ms
Throughput 121.86 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

dsm20 added a commit that referenced this pull request Mar 31, 2026
in response to: #3223 (comment)

SQL (service/policy/db/queries/attributes.sql):
  - Added @no_limit::boolean param to listAttributesSummary query
  - LIMIT @limit_ → LIMIT CASE WHEN @no_limit::boolean THEN NULL ELSE @limit_ END
                                                                                                                                                                           Go (service/policy/db/attributes.go):
  - GetAttributesByNamespace now passes NoLimit: true so deactivate/reactivate namespace operations fetch all attributes
  instead of LIMIT 0 returning zero rows
@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 190.706111ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 92.1467ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 416.938673ms
Throughput 239.84 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 41.010231836s
Average Latency 407.408316ms
Throughput 121.92 requests/second

dsm20 added a commit that referenced this pull request Mar 31, 2026
in response to: #3223 (comment)

SQL (service/policy/db/queries/attributes.sql):
  - Added @no_limit::boolean param to listAttributesSummary query
  - LIMIT @limit_ → LIMIT CASE WHEN @no_limit::boolean THEN NULL ELSE @limit_ END
                                                                                                                                                                           Go (service/policy/db/attributes.go):
  - GetAttributesByNamespace now passes NoLimit: true so deactivate/reactivate namespace operations fetch all attributes
  instead of LIMIT 0 returning zero rows
@dsm20 dsm20 force-pushed the feat/DSPX-2682-add-sort-listattributes branch from 97d844e to 1317939 Compare March 31, 2026 17:11
@github-actions
Copy link
Copy Markdown
Contributor

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 181.46669ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 90.987609ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 392.798826ms
Throughput 254.58 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 41.132785561s
Average Latency 409.71195ms
Throughput 121.56 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 198.317531ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 110.365026ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 433.630998ms
Throughput 230.61 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 41.137970077s
Average Latency 410.054291ms
Throughput 121.54 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 198.805277ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 98.985152ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 393.352069ms
Throughput 254.23 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.089575239s
Average Latency 399.079965ms
Throughput 124.72 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

@dsm20 dsm20 marked this pull request as ready for review March 31, 2026 19:06
@dsm20
Copy link
Copy Markdown
Contributor Author

dsm20 commented Mar 31, 2026

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 31acf73a-6bc5-486a-8169-7d7dd57042da

📥 Commits
Reviewing files that changed from the base of the PR and between e63add2 and 1e05e68.

⛔ Files ignored due to path filters (2)

  • protocol/go/policy/attributes/attributes.pb.go is excluded by !**/*.pb.go
  • protocol/go/policy/selectors.pb.go is excluded by !**/*.pb.go

📒 Files selected for processing (11)

  • docs/grpc/index.html
  • docs/openapi/policy/attributes/attributes.openapi.yaml
  • docs/openapi/policy/selectors.openapi.yaml
  • service/integration/attributes_test.go
  • service/policy/attributes/attributes.proto
  • service/policy/db/attributes.go
  • service/policy/db/attributes.sql.go
  • service/policy/db/queries/attributes.sql
  • service/policy/db/utils.go
  • service/policy/db/utils_test.go
  • service/policy/selectors.proto
 __________________________________________________________
< Your types are so loose they're in an open relationship. >
 ----------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).

✨ Finishing Touches
📝 Generate docstrings

  • Create stacked PR
  • Commit on current branch

🧪 Generate unit tests (beta)

  • Create PR with unit tests
  • Commit unit tests in branch feat/DSPX-2682-add-sort-listattributes

Comment @coderabbitai help to get the list of available commands and usage tips.

@dsm20 dsm20 closed this Mar 31, 2026
dsm20 added 18 commits April 3, 2026 13:44
Regenerated protos and docs (was missing proto-generate from make in
last commit)
added SortAttributesType enum, AttributesSort message, and contraint to
ListAttributesRequest. Also regenerated protos.
listAttributesSummary and listAttributesDetail get case-when queries
instead of the hardcoded ORDER BY. also regen sqlc
Added helper function in utils.go to map enum fields to SQL fields.
Request now calls the helper to aquire sortField and sortDirection
before executing query.
same tests as listnamespaces. also ran formatting, linter, and compile
test.
in response to: #3223 (comment)

SQL (service/policy/db/queries/attributes.sql):
  - Added @no_limit::boolean param to listAttributesSummary query
  - LIMIT @limit_ → LIMIT CASE WHEN @no_limit::boolean THEN NULL ELSE @limit_ END
                                                                                                                                                                           Go (service/policy/db/attributes.go):
  - GetAttributesByNamespace now passes NoLimit: true so deactivate/reactivate namespace operations fetch all attributes
  instead of LIMIT 0 returning zero rows
cast result to bigint instead of text, test wasn't liking my previous changes. also regen sqlc
GetAttributesByNamespace (used by DeactivateNamespace and UnsafeReactivateNamespace) was
  calling listAttributesSummary which now has LIMIT/OFFSET for pagination. With Go zero values,
   LIMIT 0 returned zero rows, silently breaking namespace deactivation/reactivation checks.

  Added a @no_limit boolean parameter — when true, LIMIT evaluates to NULL (no limit). Cast
  @limit_ to ::bigint to avoid pgx encoding errors.
added buf/validate/validate.proto import to selectors.proto (tests failing), regen'd docs, added ad.id ASC tiebreaker in listAttributesDetail and listAttributesSummary to fix non-deterministic behavior as noted by the rabbit. Also fixed legacy change that snuck in during a previous version issue (policy.SortField)
accidental commit
pagerequest is supposed to handle limits/offset, not sorting. this was a design decision to migrate to the enum approach
(after last change)
Test_GetNamespacesSortParams had a dupe test for nil element. thanks coderabbit
These snuck in as artifacts from the previous version of the repo pre-sorting changes. Issues with version control on my end. Changes represent current iteration aligning with main
and its mention in attributes.sql, revert back to original LIMIT @limit_
reuseable and more efficient, also a bit of futureproofing
Created three helpers to help sharpen the flow (create namespace, create attributes, list with sort, assert)
@dsm20 dsm20 force-pushed the feat/DSPX-2682-add-sort-listattributes branch from dc68efe to bdfcec3 Compare April 3, 2026 17:56
- name: govulncheck
id: govulncheck
continue-on-error: true
continue-on-error: false
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🚫 [actionlint] reported by reviewdog 🐶
key "continue-on-error" is duplicated in element of "steps" section. previously defined at line:74,col:9 [syntax-check]

@dsm20 dsm20 force-pushed the feat/DSPX-2682-add-sort-listattributes branch from bdfcec3 to 18c1c46 Compare April 3, 2026 18:21
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 192.459788ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 98.17969ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 390.827897ms
Throughput 255.87 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.595846975s
Average Latency 404.444295ms
Throughput 123.17 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 202.940732ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 98.492025ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 393.334854ms
Throughput 254.24 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 40.709136447s
Average Latency 405.388579ms
Throughput 122.82 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

covers no sort, 1 item (valid), and 2 items (exceeds max_items = 1)
@dsm20
Copy link
Copy Markdown
Contributor Author

dsm20 commented Apr 3, 2026

You will also need to add api level tests to verify the AttributesSort type added.

added in 6d20354

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 196.741649ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 1000
Denied Decision Requests 0
Total Time 100.084923ms

Benchmark Statistics

Name № Requests Avg Duration Min Duration Max Duration

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 409.62075ms
Throughput 244.13 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 41.470567243s
Average Latency 412.76137ms
Throughput 120.57 requests/second

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 3, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp:db DB component comp:policy Policy Configuration ( attributes, subject mappings, resource mappings, kas registry) docs Documentation size/m

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants