Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
Callers that relied on these functions should implement `MtlsAuthenticator`
instead. (auth-mtls)

### Fixed

- Refactored GraphQL root `MergedObject` groups (Query/Mutation) into smaller
units to mitigate `queries overflow the depth limit` on Rust 1.94.0+, likely
triggered by increased type-layout query depth after `ManuallyDrop<T>` began
wrapping `T` with `MaybeDangling<T>`; no schema or response behavior changes.

## [0.30.1] - 2026-01-31

### Added
Expand Down
49 changes: 41 additions & 8 deletions src/graphql.rs
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ where

/// A set of queries defined in the schema.
#[derive(MergedObject, Default)]
pub(super) struct Query(SubQueryOne, SubQueryTwo);
pub(super) struct Query(SubQueryOneA, SubQueryOneB, SubQueryTwoA, SubQueryTwoB);

#[cfg(not(feature = "auth-mtls"))]
#[derive(MergedObject, Default)]
struct SubQueryOne(
struct SubQueryOneA(
account::AccountQuery,
block_network::BlockNetworkQuery,
category::CategoryQuery,
Expand All @@ -120,6 +120,11 @@ struct SubQueryOne(
db_management::DbManagementQuery,
event::EventQuery,
event::EventGroupQuery,
);

#[cfg(not(feature = "auth-mtls"))]
#[derive(MergedObject, Default)]
struct SubQueryOneB(
filter::FilterQuery,
indicator::IndicatorQuery,
ip_location::IpLocationQuery,
Expand All @@ -133,7 +138,7 @@ struct SubQueryOne(

#[cfg(feature = "auth-mtls")]
#[derive(MergedObject, Default)]
struct SubQueryOne(
struct SubQueryOneA(
block_network::BlockNetworkQuery,
category::CategoryQuery,
cluster::ClusterQuery,
Expand All @@ -142,6 +147,11 @@ struct SubQueryOne(
db_management::DbManagementQuery,
event::EventQuery,
event::EventGroupQuery,
);

#[cfg(feature = "auth-mtls")]
#[derive(MergedObject, Default)]
struct SubQueryOneB(
indicator::IndicatorQuery,
ip_location::IpLocationQuery,
model::ModelQuery,
Expand All @@ -153,7 +163,7 @@ struct SubQueryOne(
);

#[derive(MergedObject, Default)]
struct SubQueryTwo(
struct SubQueryTwoA(
sampling::SamplingPolicyQuery,
statistics::StatisticsQuery,
status::StatusQuery,
Expand All @@ -163,6 +173,10 @@ struct SubQueryTwo(
template::TemplateQuery,
tor_exit_node::TorExitNodeQuery,
label_db::LabelDbQuery,
);

#[derive(MergedObject, Default)]
struct SubQueryTwoB(
triage::TriagePolicyQuery,
triage::TriageExclusionReasonQuery,
triage::TriageResponseQuery,
Expand All @@ -177,11 +191,16 @@ struct SubQueryTwo(
///
/// This is exposed only for [`Schema`], and not used directly.
#[derive(MergedObject, Default)]
pub(super) struct Mutation(SubMutationOne, SubMutationTwo);
pub(super) struct Mutation(
SubMutationOneA,
SubMutationOneB,
SubMutationTwoA,
SubMutationTwoB,
);

#[cfg(not(feature = "auth-mtls"))]
#[derive(MergedObject, Default)]
struct SubMutationOne(
struct SubMutationOneA(
account::AccountMutation,
block_network::BlockNetworkMutation,
category::CategoryMutation,
Expand All @@ -190,6 +209,11 @@ struct SubMutationOne(
customer::CustomerMutation,
data_source::DataSourceMutation,
db_management::DbManagementMutation,
);

#[cfg(not(feature = "auth-mtls"))]
#[derive(MergedObject, Default)]
struct SubMutationOneB(
filter::FilterMutation,
indicator::IndicatorMutation,
model::ModelMutation,
Expand All @@ -201,14 +225,19 @@ struct SubMutationOne(

#[cfg(feature = "auth-mtls")]
#[derive(MergedObject, Default)]
struct SubMutationOne(
struct SubMutationOneA(
block_network::BlockNetworkMutation,
category::CategoryMutation,
cert::CertMutation,
cluster::ClusterMutation,
customer::CustomerMutation,
data_source::DataSourceMutation,
db_management::DbManagementMutation,
);

#[cfg(feature = "auth-mtls")]
#[derive(MergedObject, Default)]
struct SubMutationOneB(
indicator::IndicatorMutation,
model::ModelMutation,
network::NetworkMutation,
Expand All @@ -218,7 +247,7 @@ struct SubMutationOne(
);

#[derive(MergedObject, Default)]
struct SubMutationTwo(
struct SubMutationTwoA(
qualifier::QualifierMutation,
sampling::SamplingPolicyMutation,
status::StatusMutation,
Expand All @@ -227,6 +256,10 @@ struct SubMutationTwo(
tags::WorkflowTagMutation,
template::TemplateMutation,
tor_exit_node::TorExitNodeMutation,
);

#[derive(MergedObject, Default)]
struct SubMutationTwoB(
label_db::LabelDbMutation,
triage::TriagePolicyMutation,
triage::TriageExclusionReasonMutation,
Expand Down