Skip to content

Conversation

elizabethhealy
Copy link
Member

Proposed Changes

  • ability to specify read, write, readheader, and idle timeouts and maxheaderbytes via the opentdf.yaml

Checklist

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

Testing Instructions

@github-actions github-actions bot added the size/s label Jul 1, 2025
Copy link
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.

Summary of Changes

Hello @elizabethhealy, 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 significant enhancements to the core server's configurability by allowing HTTP server settings such as various timeouts and maximum header bytes to be defined externally via the opentdf.yaml file. This change provides greater operational flexibility and control over the server's behavior, enabling administrators to fine-tune performance and resource usage according to their specific deployment needs.

Highlights

  • Configurable HTTP Server Settings: Introduced new configuration options in opentdf.yaml for the HTTP server, allowing users to specify readTimeout, writeTimeout, readHeaderTimeout, idleTimeout, and maxHeaderBytes.
  • New HttpServerConfig Structure: A new HttpServerConfig struct was added to service/internal/server/server.go to encapsulate these new HTTP server settings, making them loadable via mapstructure from the configuration file.
  • Dynamic HTTP Server Initialization: The newHTTPServer function was updated to dynamically apply these newly configurable timeout and header byte settings when creating the http.Server instance.
  • Default Timeout Renaming: Existing readTimeout and writeTimeout constants were renamed to defaultReadTimeout and defaultWriteTimeout to clearly distinguish them as fallback values.
  • Pprof Write Timeout Adjustment: The logic for extending the write timeout when pprof is enabled was updated to respect the new configurable WriteTimeout, ensuring it's at least 30 seconds.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

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 issue 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 is currently in preview and 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 to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


Config file's new lines, Server waits, times are set, Graceful shutdown now.

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.

Copy link
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

The pull request introduces configurable HTTP server settings, which is a valuable enhancement for flexibility. The changes correctly integrate HttpServerConfig into the main server configuration and apply these settings when creating the HTTP server. However, for a new feature of this nature, it is highly recommended to include comprehensive unit and integration tests, as well as updated documentation, to ensure correctness, prevent regressions, and provide clear guidance for users and future developers.

Copy link
Contributor

github-actions bot commented Jul 1, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 571.460407ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 334.860388ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 353.612292ms
Throughput 282.80 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.693353544s
Average Latency 375.318433ms
Throughput 132.65 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.970875185s
Average Latency 258.957926ms
Throughput 192.52 requests/second

Copy link
Contributor

github-actions bot commented Jul 1, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 524.944808ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 335.472331ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 354.799311ms
Throughput 281.85 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 37.805132274s
Average Latency 376.111944ms
Throughput 132.26 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 26.230879619s
Average Latency 261.017624ms
Throughput 190.62 requests/second

Copy link
Contributor

github-actions bot commented Jul 1, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 517.981072ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 342.909496ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 340.594559ms
Throughput 293.60 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 36.728227203s
Average Latency 365.824769ms
Throughput 136.14 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 25.753625449s
Average Latency 256.427856ms
Throughput 194.15 requests/second

Copy link
Contributor

github-actions bot commented Jul 1, 2025

Benchmark results, click to expand

Benchmark authorization.GetDecisions Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 552.815292ms

Benchmark authorization.v2.GetMultiResourceDecision Results:

Metric Value
Approved Decision Requests 5000
Denied Decision Requests 0
Total Time 351.948221ms

Standard Benchmark Metrics Skipped or Failed

Bulk Benchmark Results

Metric Value
Total Decrypts 100
Successful Decrypts 100
Failed Decrypts 0
Total Time 366.264465ms
Throughput 273.03 requests/second

TDF3 Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 39.089493211s
Average Latency 389.224435ms
Throughput 127.91 requests/second

NANOTDF Benchmark Results:

Metric Value
Total Requests 5000
Successful Requests 5000
Failed Requests 0
Concurrent Requests 50
Total Time 26.883014871s
Average Latency 267.673229ms
Throughput 185.99 requests/second

@elizabethhealy elizabethhealy marked this pull request as ready for review July 1, 2025 19:30
@elizabethhealy elizabethhealy requested a review from a team as a code owner July 1, 2025 19:30
@elizabethhealy elizabethhealy added this pull request to the merge queue Jul 1, 2025
Merged via the queue into main with commit b1472df Jul 1, 2025
29 checks passed
@elizabethhealy elizabethhealy deleted the expose-context-timeouts-in-config branch July 1, 2025 21:17
@elizabethhealy
Copy link
Member Author

/backport

opentdf-automation bot pushed a commit that referenced this pull request Jul 1, 2025
)

### Proposed Changes

* ability to specify read, write, readheader, and idle timeouts and
maxheaderbytes via the opentdf.yaml

### Checklist

- [ ] I have added or updated unit tests
- [ ] I have added or updated integration tests (if appropriate)
- [ ] I have added or updated documentation

### Testing Instructions

(cherry picked from commit b1472df)
@opentdf-automation
Copy link
Contributor

Successfully created backport PR for release/service/v0.7:

opentdf-automation bot added a commit that referenced this pull request Jul 1, 2025
)

### Proposed Changes

* ability to specify read, write, readheader, and idle timeouts and
maxheaderbytes via the opentdf.yaml

### Checklist

- [ ] I have added or updated unit tests
- [ ] I have added or updated integration tests (if appropriate)
- [ ] I have added or updated documentation

### Testing Instructions

(cherry picked from commit b1472df)
elizabethhealy pushed a commit that referenced this pull request Jul 1, 2025
…ckport to release/service/v0.7] (#2523)

# Description
Backport of #2522 to `release/service/v0.7`.

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
github-merge-queue bot pushed a commit that referenced this pull request Jul 31, 2025
🤖 I have created a release *beep* *boop*
---


##
[0.8.0](service/v0.7.0...service/v0.8.0)
(2025-07-29)


### Features

* **authz:** RR GetDecision improvements
([#2479](#2479))
([443cedb](443cedb))
* **authz:** sensible request limit upper bounds
([#2526](#2526))
([b3093cc](b3093cc))
* **core:** Add the ability to configure the http server settings
([#2522](#2522))
([b1472df](b1472df))
* **policy:** Add list key mappings rpc.
([#2533](#2533))
([fbc2724](fbc2724))
* **policy:** add obligation protos
([#2579](#2579))
([50882e1](50882e1))
* **policy:** add obligation tables
([#2532](#2532))
([c7d7aa4](c7d7aa4))
* **policy:** Add validation to delete keys
([#2576](#2576))
([cc169d9](cc169d9))
* **policy:** Allow the deletion of a key.
([#2575](#2575))
([82b96f0](82b96f0))
* **policy:** Change return type for delete key proto.
([#2566](#2566))
([c1ae924](c1ae924))
* **policy:** sqlc queries refactor
([#2541](#2541))
([e34680e](e34680e))


### Bug Fixes

* add back grants to listAttributesByDefOrValueFqns
([#2493](#2493))
([2b47095](2b47095))
* **authz:** access pdp should use proto getter
([#2530](#2530))
([f856212](f856212))
* **core:** Allow 521 curve to be used
([#2485](#2485))
([aaf43dc](aaf43dc))
* **core:** resolve 'built-in' typos
([#2548](#2548))
([ccdfa96](ccdfa96))
* **deps:** bump github.com/opentdf/platform/lib/ocrypto from 0.2.0 to
0.3.0 in /service
([#2504](#2504))
([a9cc4dd](a9cc4dd))
* **sdk:** Prefer KID and Algorithm selection from key maps
([#2475](#2475))
([98fd392](98fd392))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: opentdf-automation[bot] <149537512+opentdf-automation[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants