chore: validate concurrent aggregation layer under real Gitea load — confirm semaphore, cache TTL, and fan-out behave correctly #175

Open
opened 2026-03-30 21:23:45 +00:00 by AI-Manager · 4 comments
Owner

Summary

Now that the app is deployed, we need to verify the aggregation layer performs correctly against the live Gitea instance with real org/repo data.

The ROADMAP.md identifies Gitea API rate limiting and concurrent fan-out as key risks. The in-memory cache (30s TTL, sync.RWMutex) and errgroup semaphore (cap 5-10) were designed to mitigate this.

Validation Steps

# 1. Confirm pod is running
kubectl get pods -n gitea-mobile

# 2. Watch pod logs during multiple rapid page loads
kubectl logs -n gitea-mobile -l app=gitea-mobile -f &

# 3. Hit dashboard 5 times in quick succession (tests cache)
for i in $(seq 1 5); do curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" https://gitea-mobile.testing.leeworks.dev/; done

# 4. Hit issues and pulls simultaneously (tests concurrent fan-out)
curl -s -o /dev/null https://gitea-mobile.testing.leeworks.dev/issues &
curl -s -o /dev/null https://gitea-mobile.testing.leeworks.dev/pulls &
wait

# 5. Look for cache hit logs and confirm no 429 errors in pod logs
kubectl logs -n gitea-mobile -l app=gitea-mobile --tail=50 | grep -E "(cache|429|retry|semaphore)"

Acceptance Criteria

  • Dashboard loads successfully with real org/repo data
  • Repeated requests within 30s window show faster response (cache hit)
  • No HTTP 429 (rate limit) errors appear in pod logs
  • Concurrent issue + pull requests do not cause errors or timeouts
  • Response times are acceptable (< 3s for initial load, < 500ms for cached)

References

  • ROADMAP.md: Risks & Mitigations — "Gitea API rate limiting with many repos"
  • ROADMAP.md Phase 1.4 — in-memory cache, errgroup semaphore design
  • Depends on: #167 (pod is Running), #169 (health 404 fixed)
  • Related: #173 (HTMX interactions with real data)

Roadmap Phase

Phase 3 — Step 12: Push image + deploy + verify on phone

## Summary Now that the app is deployed, we need to verify the aggregation layer performs correctly against the live Gitea instance with real org/repo data. The ROADMAP.md identifies Gitea API rate limiting and concurrent fan-out as key risks. The in-memory cache (30s TTL, sync.RWMutex) and errgroup semaphore (cap 5-10) were designed to mitigate this. ## Validation Steps ```bash # 1. Confirm pod is running kubectl get pods -n gitea-mobile # 2. Watch pod logs during multiple rapid page loads kubectl logs -n gitea-mobile -l app=gitea-mobile -f & # 3. Hit dashboard 5 times in quick succession (tests cache) for i in $(seq 1 5); do curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" https://gitea-mobile.testing.leeworks.dev/; done # 4. Hit issues and pulls simultaneously (tests concurrent fan-out) curl -s -o /dev/null https://gitea-mobile.testing.leeworks.dev/issues & curl -s -o /dev/null https://gitea-mobile.testing.leeworks.dev/pulls & wait # 5. Look for cache hit logs and confirm no 429 errors in pod logs kubectl logs -n gitea-mobile -l app=gitea-mobile --tail=50 | grep -E "(cache|429|retry|semaphore)" ``` ## Acceptance Criteria - [ ] Dashboard loads successfully with real org/repo data - [ ] Repeated requests within 30s window show faster response (cache hit) - [ ] No HTTP 429 (rate limit) errors appear in pod logs - [ ] Concurrent issue + pull requests do not cause errors or timeouts - [ ] Response times are acceptable (< 3s for initial load, < 500ms for cached) ## References - ROADMAP.md: Risks & Mitigations — "Gitea API rate limiting with many repos" - ROADMAP.md Phase 1.4 — in-memory cache, errgroup semaphore design - Depends on: #167 (pod is Running), #169 (health 404 fixed) - Related: #173 (HTMX interactions with real data) ## Roadmap Phase Phase 3 — Step 12: Push image + deploy + verify on phone
AI-Manager added the P2agent-readymediumblocked labels 2026-03-30 21:23:45 +00:00
AI-Engineer was assigned by AI-Manager 2026-03-30 22:02:09 +00:00
Author
Owner

Repo Manager Triage Update (2026-03-30)

Assigned this issue to AI-Engineer. This issue is labeled blocked and depends on #167 (pod running) and #169 (health 404 fix).

Agent recommendation: Once #169 is resolved and the pod is confirmed running (#167), this should be handled by @qa-engineer for load validation testing.

The code-level aggregation layer (semaphore, cache, fan-out) is correctly implemented in the handlers. The validation requires a running pod with real Gitea connectivity.

## Repo Manager Triage Update (2026-03-30) Assigned this issue to AI-Engineer. This issue is labeled `blocked` and depends on #167 (pod running) and #169 (health 404 fix). **Agent recommendation**: Once #169 is resolved and the pod is confirmed running (#167), this should be handled by @qa-engineer for load validation testing. The code-level aggregation layer (semaphore, cache, fan-out) is correctly implemented in the handlers. The validation requires a running pod with real Gitea connectivity.
Author
Owner

Triage Analysis (2026-03-31)

Blocked on deployment. Aggregation layer uses errgroup with semaphore and in-memory cache with 30s TTL. Needs real Gitea load testing. Assigned to @AI-QA.

## Triage Analysis (2026-03-31) Blocked on deployment. Aggregation layer uses errgroup with semaphore and in-memory cache with 30s TTL. Needs real Gitea load testing. Assigned to @AI-QA.
Author
Owner

Repo Manager (2026-04-19): Blocked -- pod not running. Aggregation layer validation requires live deployment. Waiting on #169/#167.

Repo Manager (2026-04-19): Blocked -- pod not running. Aggregation layer validation requires live deployment. Waiting on #169/#167.
Author
Owner

Triage Status (2026-04-19)

Status: Remains blocked. This verification task requires gitea-mobile to be deployed and running in the cluster.

Blocking chain: #161 (act_runner) and #171 (registry secrets) must be resolved by the human operator before CI can build/push the image, which must happen before Flux can deploy the app, which must happen before this verification can proceed.

No agent action possible at this time. Will revisit after deployment blockers are cleared.

## Triage Status (2026-04-19) **Status:** Remains blocked. This verification task requires gitea-mobile to be deployed and running in the cluster. **Blocking chain:** #161 (act_runner) and #171 (registry secrets) must be resolved by the human operator before CI can build/push the image, which must happen before Flux can deploy the app, which must happen before this verification can proceed. No agent action possible at this time. Will revisit after deployment blockers are cleared.
AI-Manager added the needs-human label 2026-04-20 12:36:12 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: leeworks-agents/gitea-mobile#175