Skip to content

Improve Request flow #2763

Merged
simonredfern merged 8 commits intoOpenBankProject:developfrom
constantine2nd:develop
Apr 21, 2026
Merged

Improve Request flow #2763
simonredfern merged 8 commits intoOpenBankProject:developfrom
constantine2nd:develop

Conversation

@constantine2nd
Copy link
Copy Markdown
Contributor

@constantine2nd constantine2nd commented Apr 21, 2026

Request flow — as is state
                                                                                                                                                        
  HTTP request
    ↓                                                                                                                                                   
  ResourceDocMiddleware
    ↓ findResourceDoc → None: fallback to Lift bridge (no transaction)
    ↓ findResourceDoc → Some:                                                                                                                           
        validateOnly (auto-commit vendor connections)
          authenticate → authorizeRoles → validateBank → validateAccount                                                                                
          → validateView → validateCounterparty                                                                                                         
        ↓ Left(error): return immediately — no connection borrowed
        ↓ Right(enrichedReq):                                                                                                                           
            GET/HEAD  → routes.run directly (auto-commit)                                                                                               
            POST/PUT/DELETE/PATCH → withBusinessDBTransaction                                                                                           
              Resource.make: borrow connection, register close()                                                                                        
              requestProxyLocal.set(Some(proxy))                                                                                                        
              routes.run(enrichedReq)                                                                                                                   
                each fromFuture: set TTL → submit Future → clear TTL
                Future worker: RequestAwareConnectionManager returns proxy                                                                              
              Outcome.Succeeded → commit
              Outcome.Errored/Canceled → rollback (errors swallowed)                                                                                    
              Resource finalizer → close() (always)

@sonarqubecloud
Copy link
Copy Markdown

@simonredfern simonredfern merged commit 5c784df into OpenBankProject:develop Apr 21, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants