Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #210 +/- ##
==========================================
- Coverage 65.88% 65.82% -0.06%
==========================================
Files 82 82
Lines 4482 4483 +1
==========================================
- Hits 2953 2951 -2
- Misses 1416 1419 +3
Partials 113 113 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Greptile OverviewGreptile SummaryThis PR implements proper HTTP 202 (Accepted) status handling for asynchronous topology requests that are still being processed. Previously, requests in progress returned inconsistent responses; now they immediately store and return HTTP 202 responses when first submitted. Key changes:
Confidence Score: 5/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant Client
participant HttpServer
participant TrailingDelayQueue
participant ProcessRequest
participant LRUCache
Client->>HttpServer: POST /v1/generate (topology request)
HttpServer->>TrailingDelayQueue: Submit(request)
alt First submission (new UID)
TrailingDelayQueue->>TrailingDelayQueue: Generate new UUID
TrailingDelayQueue->>LRUCache: Store {Status: 202, Message: "request ID xxx not completed"}
TrailingDelayQueue-->>HttpServer: Return UID
else Subsequent submission (existing UID)
TrailingDelayQueue->>TrailingDelayQueue: Update item and lastTime
TrailingDelayQueue-->>HttpServer: Return existing UID
end
HttpServer-->>Client: HTTP 202 + UID
Note over TrailingDelayQueue: Background processing after delay
TrailingDelayQueue->>ProcessRequest: handle(item)
ProcessRequest->>ProcessRequest: processRequestWithRetries
alt Success
ProcessRequest-->>TrailingDelayQueue: {Ret: data, Status: 200}
TrailingDelayQueue->>LRUCache: Update {Ret: data, Status: 200}
else Error
ProcessRequest-->>TrailingDelayQueue: {Message: error, Status: 5xx}
TrailingDelayQueue->>LRUCache: Update {Message: error, Status: 5xx}
end
Client->>HttpServer: GET /v1/topology?uid=xxx
HttpServer->>TrailingDelayQueue: Get(uid)
TrailingDelayQueue->>LRUCache: Get(uid)
alt Request still in progress
LRUCache-->>TrailingDelayQueue: {Status: 202, Message: "not completed"}
TrailingDelayQueue-->>HttpServer: Completion{Status: 202}
HttpServer-->>Client: HTTP 202 + Message
else Request completed successfully
LRUCache-->>TrailingDelayQueue: {Status: 200, Ret: data}
TrailingDelayQueue-->>HttpServer: Completion{Status: 200, Ret: data}
HttpServer-->>Client: HTTP 200 + topology data
else Request failed
LRUCache-->>TrailingDelayQueue: {Status: 5xx, Message: error}
TrailingDelayQueue-->>HttpServer: Completion{Status: 5xx}
HttpServer-->>Client: HTTP 5xx + error message
else UID not found
LRUCache-->>TrailingDelayQueue: nil
TrailingDelayQueue-->>HttpServer: Completion{Status: 404}
HttpServer-->>Client: HTTP 404 + "not found"
end
|
Additional Comments (2)
This test sets the global |
Signed-off-by: Dmitry Shmulevich <dshmulevich@nvidia.com>
No description provided.