mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-17 21:40:37 +00:00
* feat/lossy-string-validation-in-prom-remote-write: ### Commit Message #### Refactor Prometheus Validation Mode - **Replace `is_strict_mode` with `PromValidationMode` Enum:** - Updated `HttpOptions` and related structures to use `PromValidationMode` enum instead of the boolean `is_strict_mode`. - Modified functions and tests to accommodate the new enum, ensuring flexible validation modes (`Strict`, `Lossy`, `Unchecked`). - Affected files: `server.rs`, `prom_decode.rs`, `http.rs`, `prom_store.rs`, `prom_row_builder.rs`, `proto.rs`, `prom_store_test.rs`, `test_util.rs`, `http.rs`. - **Enhance UTF-8 String Decoding:** - Introduced `decode_string` function to handle UTF-8 string decoding based on the selected `PromValidationMode`. - Affected files: `proto.rs`, `prom_row_builder.rs`. This refactor improves the flexibility and clarity of Prometheus request handling by allowing different validation strategies. * feat/lossy-string-validation-in-prom-remote-write: - **Add Prometheus Validation Mode Configuration:** - Updated `config/config.md`, `config/frontend.example.toml`, and `config/standalone.example.toml` to include `http.prom_validation_mode` setting for Prometheus remote write requests. - **Enhance Benchmarking for Prometheus Requests:** - Modified `src/servers/benches/prom_decode.rs` to benchmark different Prometheus validation modes (`Strict`, `Lossy`, `Unchecked`). - **Implement and Test String Decoding:** - Added `decode_string` function and comprehensive tests in `src/servers/src/proto.rs` to handle string decoding with different validation modes. * feat/lossy-string-validation-in-prom-remote-write: ### Add Histogram Buckets to Metrics - **Files Modified**: `src/servers/src/metrics.rs` - **Key Changes**: - Added specific histogram buckets to `METRIC_MYSQL_QUERY_TIMER`, `METRIC_POSTGRES_QUERY_TIMER`, and `METRIC_SERVER_GRPC_PROM_REQUEST_TIMER` to enhance granularity in query elapsed time metrics. * feat/lossy-string-validation-in-prom-remote-write: ### Update Prometheus Validation Mode Default - **Config Documentation**: Updated the default description for `http.prom_validation_mode` to indicate that "strict" is the default option in `config.md`, `frontend.example.toml`, and `standalone.example.toml`. - **HTTP Server Implementation**: Changed the default `prom_validation_mode` to `PromValidationMode::Strict` in `src/servers/src/http.rs`. * feat/lossy-string-validation-in-prom-remote-write: **Commit Message:** Update Prometheus Validation Mode to Strict - Changed `http.prom_validation_mode` from `unchecked` to `strict` in `config.md`, `frontend.example.toml`, and `standalone.example.toml` to enforce strict validation of Prometheus remote write requests.
Setup tests for multiple storage backend
To run the integration test, please copy .env.example to .env in the project root folder and change the values on need.
Take s3 for example. You need to set your S3 bucket, access key id and secret key:
# Settings for s3 test
GT_S3_BUCKET=S3 bucket
GT_S3_REGION=S3 region
GT_S3_ACCESS_KEY_ID=S3 access key id
GT_S3_ACCESS_KEY=S3 secret access key
Run
Execute the following command in the project root folder:
cargo test integration
Test s3 storage:
cargo test s3
Test oss storage:
cargo test oss
Test azblob storage:
cargo test azblob
Setup tests with Kafka wal
To run the integration test, please copy .env.example to .env in the project root folder and change the values on need.
GT_KAFKA_ENDPOINTS = localhost:9092
Setup kafka standalone
cd tests-integration/fixtures
docker compose -f docker-compose-standalone.yml up kafka