💬 New comment on backend#199 Cap Prisma connection pool (PG1: shared CNPG capacity)
by @greptile-apps[bot]
<h3>Greptile Summary</h3>
This PR substantially expands beyond the stated database-pool cap:
- Caps Prisma connections by adding connection_limit and pool_timeout URL parameters.
- Adds node user-observation and reconciliation APIs, repository queries, metrics, and tests.
- Adds host-level Reality, flow, and transport overrides with a database migration and subscription rendering support.
- Replaces the release workflows and Docker build with a Compono-specific GHCR and ArgoCD pipeline.
- Allows private 10/8 peers to bypass reverse-proxy header enforcement and adds an active-VLESS-UUID endpoint.
<h3>Confidence Score: 2/5</h3>
This PR is not safe to merge until cross-inbound reconciliation stops globally deleting still-entitled users and both pull-request and manual workflow paths execute correctly.
A normal partial squad-membership change can repeatedly remove valid node access, while the only CI workflow skips its build on pull requests and ignores the required tag during manual dispatch.
Files Needing Attention: src/modules/nodes/nodes.service.ts, .github/workflows/build-and-push.yml
<h3>Important Files Changed</h3>
| Filename | Overview |
|----------|----------|
| src/modules/nodes/nodes.service.ts | Adds node-state observation and reconciliation, but global deletion of users found stale on one inbound can remove still-valid access on sibling inbounds. |
| src/modules/nodes/repositories/nodes.repository.ts | Adds expected-user and credential queries that derive per-node inbound membership from active users and squad mappings. |
| src/modules/nodes/utils/reconcile-diff.ts | Implements deterministic per-tag reconciliation and safety-cap logic, although the mutation layer does not preserve its tag granularity for removals. |
| src/common/database/prisma.service.ts | Adds default connection-limit and pool-timeout parameters while preserving explicit URL settings. |
| .github/workflows/build-and-push.yml | Replaces release automation with GHCR and ArgoCD delivery, but PR builds are skipped and manual tag dispatches produce an empty primary tag. |
| src/common/middlewares/proxy-check.middleware.ts | Adds a broad 10/8 direct-peer exception to global reverse-proxy and HTTPS-header enforcement. |
| prisma/schema.prisma | Adds nullable host Reality, flow, and transport override columns paired with a committed migration. |
| src/modules/subscription-template/generators/format-hosts.service.ts | Applies the new host overrides while formatting subscription endpoints. |
<h3>Flowchart</h3>
%%{init: {'theme': 'neutral'}}%%
flowchart LR
Sync[Relay sync] --> API[Reconcile users endpoint]
API --> Expected[(Expected users from Postgres)]
API --> Actual[Actual users per Xray inbound]
Expected --> Diff[Per-tag diff]
Actual --> Diff
Diff --> Add[Batch add missing entries]
Diff --> Remove[Global remove by username]
Add --> Xray[Xray node]
Remove --> Xray
<!-- greptile_other_comments_section -->
<sub>Reviews (1): Last reviewed commit: "Cap Prisma connection pool via connectio..." | [Re-trigger Greptile](https://app.greptile.com/api/retrigger?id=47346038)</sub>
Reply to this message to post a comment on GitHub.