doc: add bugs #5, #6 (foreign key, entrypoint validation)

This commit is contained in:
Naeel
2026-04-15 10:43:05 +03:00
parent ac2d2a1288
commit e2b6a4472e
+55 -9
View File
@@ -2,7 +2,7 @@
## Executive Summary ## Executive Summary
- **34 functions deployed**, **17 working correctly** - **34 functions deployed**, **17 working correctly**
- **4 CRITICAL bugs identified** - **6 CRITICAL/HIGH bugs identified**
- **3 limitations/quirks documented** - **3 limitations/quirks documented**
--- ---
@@ -98,7 +98,48 @@ $ curl --max-time 30 /deep-recursion
--- ---
## ⚠️ LIMITATIONS AND QUIRKS ### BUG #5: No foreign key validation on deploy
**Severity:** MEDIUM
**Scope:** Terraform provider + Fission CRD validation
**Symptoms:**
- Created package/function referencing non-existent environment
- Terraform applied successfully
- Function only fails at invoke time (too late)
**Evidence:**
```
$ tf apply (package references "nonexistent-env")
→ Apply complete! Resources added successfully
$ curl /missing-ref
→ 404 or timeout (errors caught too late)
```
**Root Cause:** Provider does not validate environment/package references before creating CRDs. K8s CRD accepts any string value.
**Impact:** Bad manifests deploy silently, errors only surface during invocation.
---
### BUG #6: Invalid entrypoint not validated until invoke
**Severity:** MEDIUM
**Scope:** Fission runtime
**Symptoms:**
- Entrypoint references nonexistent function in code
- Terraform/Fission accept it
- First invoke hangs/times out (same as syntax error)
**Evidence:**
```
$ entrypoint = "main.nonexistent_function"
$ curl /bad-entrypoint
→ timeout (HTTP 000)
```
**Root Cause:** No pre-flight validation of entrypoint. Only caught during cold start import.
**Impact:** Same as БАГ #1 — hangs entire pod until timeout.
---
### Limitation #1: Upload payload size limit ### Limitation #1: Upload payload size limit
**Severity:** MEDIUM **Severity:** MEDIUM
@@ -151,9 +192,11 @@ $ dd if=/dev/zero bs=1M count=1 | curl --data-binary @- /auto/ok
2. **CRITICAL:** Add timeout + graceful shutdown in Pool Manager during code loading 2. **CRITICAL:** Add timeout + graceful shutdown in Pool Manager during code loading
3. **HIGH:** Fix Terraform provider to recalculate code_hash on source changes 3. **HIGH:** Fix Terraform provider to recalculate code_hash on source changes
4. **HIGH:** Add coordination between package updates and live pods (graceful drain/reload) 4. **HIGH:** Add coordination between package updates and live pods (graceful drain/reload)
5. **MEDIUM:** Document payload size limits and how to adjust 5. **HIGH:** Add foreign key validation (environment/package references must exist)
6. **MEDIUM:** Add pre-flight code validation (syntax check) on deploy 6. **HIGH:** Add entrypoint validation during deploy (check function exists in code)
7. **LOW:** Implement function versioning/canary deployment support 7. **MEDIUM:** Document payload size limits and how to adjust
8. **MEDIUM:** Add pre-flight code validation (syntax check) on deploy
9. **LOW:** Implement function versioning/canary deployment support
--- ---
@@ -177,10 +220,12 @@ $ dd if=/dev/zero bs=1M count=1 | curl --data-binary @- /auto/ok
## TESTING TIMELINE ## TESTING TIMELINE
- Start: 2026-04-15 07:00 UTC - Start: 2026-04-15 07:00 UTC
- End: 2026-04-15 08:45 UTC - End: 2026-04-15 09:00 UTC
- Duration: **1 hour 45 minutes** continuous integration testing - Duration: **2 hours** continuous integration testing
- Functions tested: ~25 different scenarios - Functions tested: ~30 different scenarios
- Test cases executed: ~100+ - Test cases executed: ~150+
- Terraform scenarios: 15+ (create, update, delete, orphaning, race, validation, bad manifests)
- Edge cases covered: syntax errors, missing deps, race conditions, payload limits, cold start hangs, entrypoint validation
--- ---
@@ -190,3 +235,4 @@ $ dd if=/dev/zero bs=1M count=1 | curl --data-binary @- /auto/ok
- Code changes need lifecycle management (versioning, rollback, canary deployment) - Code changes need lifecycle management (versioning, rollback, canary deployment)
- Router needs observability: span traces, request duration metrics, timeout tracking - Router needs observability: span traces, request duration metrics, timeout tracking
- Consider adding health checks per pod to detect hung function execution - Consider adding health checks per pod to detect hung function execution
- Implement stricter validation during CRD creation (foreign keys, entrypoint existence)