mirror of
https://github.com/lukaszraczylo/graphql-monitoring-proxy.git
synced 2026-10-24 06:48:09 +00:00
CRITICAL: Routing fix for mutations in case of the R/W replicas
This commit is contained in:
+9
-8
@@ -364,14 +364,6 @@ func parseGraphQLQuery(c *fiber.Ctx) *parseGraphQLQueryResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle endpoint routing - always use write endpoint for mutations
|
|
||||||
if res.operationType == "mutation" {
|
|
||||||
res.activeEndpoint = cfg.Server.HostGraphQL
|
|
||||||
} else if cfg.Server.HostGraphQLReadOnly != "" {
|
|
||||||
// Use read-only endpoint for non-mutation operations
|
|
||||||
res.activeEndpoint = cfg.Server.HostGraphQLReadOnly
|
|
||||||
}
|
|
||||||
|
|
||||||
// Block mutations in read-only mode
|
// Block mutations in read-only mode
|
||||||
if res.operationType == "mutation" && cfg.Server.ReadOnlyMode {
|
if res.operationType == "mutation" && cfg.Server.ReadOnlyMode {
|
||||||
if ifNotInTest() {
|
if ifNotInTest() {
|
||||||
@@ -394,6 +386,15 @@ func parseGraphQLQuery(c *fiber.Ctx) *parseGraphQLQueryResult {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Handle endpoint routing AFTER processing all definitions
|
||||||
|
// This ensures mutations are always routed to the write endpoint
|
||||||
|
if res.operationType == "mutation" {
|
||||||
|
res.activeEndpoint = cfg.Server.HostGraphQL
|
||||||
|
} else if cfg.Server.HostGraphQLReadOnly != "" {
|
||||||
|
// Use read-only endpoint for non-mutation operations
|
||||||
|
res.activeEndpoint = cfg.Server.HostGraphQLReadOnly
|
||||||
|
}
|
||||||
|
|
||||||
// Track parsing time
|
// Track parsing time
|
||||||
if ifNotInTest() && cfg.Monitoring != nil {
|
if ifNotInTest() && cfg.Monitoring != nil {
|
||||||
parseTime := float64(time.Since(startTime).Milliseconds())
|
parseTime := float64(time.Since(startTime).Milliseconds())
|
||||||
|
|||||||
Reference in New Issue
Block a user