fix: invoke.go — forward Content-Length to proxied request (form POST fix)
Without ContentLength, Python BaseHTTPRequestHandler read 0 bytes from body. operator v0.1.37, python runtime v0.1.4, pg-table-writer HTML form
This commit is contained in:
+33
-1
@@ -1,6 +1,38 @@
|
||||
# Прогресс разработки
|
||||
|
||||
Последнее обновление: 2026-03-18 23:30 (документация синхронизирована для передачи контекста новому агенту)
|
||||
Последнее обновление: 2026-03-19 09:00
|
||||
|
||||
## 2026-03-19 — pg-table-writer HTML + bugfix invoke.go Content-Length (оператор v0.1.37)
|
||||
|
||||
| # | Задача | Статус | Заметки |
|
||||
|---|--------|--------|---------|
|
||||
| 1 | Python runtime v0.1.4: `text/html` поддержка | ✅ | `server.py`: str начинается с `<` → `text/html; charset=utf-8`; добавлен `_accept` в event |
|
||||
| 2 | `internal/builder/context.go`: python runtime → v0.1.4 | ✅ | |
|
||||
| 3 | Образ `naeel/sless-runtime-python3.11:v0.1.4` | ✅ | Собран и запушен |
|
||||
| 4 | `code/table-rw/table_rw.py` | ✅ | Комбинированный reader+writer. `list_rows` — JSON. `add_row`: GET → HTML форма, POST form → INSERT + HTML ответ. `_render_page` шаблон с тёмной темой |
|
||||
| 5 | `examples/POSTGRES/resources.tf` | ✅ | reader: `source_dir=code/table-rw`, `entrypoint=table_rw.list_rows`. Новые: `sless_function.postgres_table_writer`, `sless_trigger.postgres_table_writer_http`, `output.table_writer_url` |
|
||||
| 6 | Удалена папка `code/table-reader/` | ✅ | |
|
||||
| 7 | `internal/builder/builder.go`: убран `--cache=true` | ✅ | kaniko по умолчанию не кэширует слои |
|
||||
| 8 | Оператор v0.1.35 | ✅ (промежуточный) | |
|
||||
| 9 | Оператор v0.1.36 | ✅ | Убран ошибочный `--no-cache` (kaniko v1.24.0 не поддерживает этот флаг) |
|
||||
| 10 | Оператор v0.1.37 | ✅ | **Bugfix `invoke.go`**: добавлен `proxyReq.ContentLength = r.ContentLength`. Без этого Python-сервер читал тело как 0 байт (бесконечно chunked) — форма не парсилась |
|
||||
| 11 | POST через прокси | ✅ | `curl POST title=test-proxy-fix` → HTML с «Добавлено: «test-proxy-fix»», строка в таблице |
|
||||
|
||||
### Root cause бага формы
|
||||
`internal/api/handler/invoke.go`: при проксировании POST-запроса не устанавливался `Content-Length`.
|
||||
Go `http.Client` отправлял запрос без `Content-Length` → Python `BaseHTTPRequestHandler.headers.get("Content-Length", 0)` = 0 → тело не читалось → `title` пустой → JSON ошибка.
|
||||
Фикс: одна строка `proxyReq.ContentLength = r.ContentLength`.
|
||||
|
||||
### Образы
|
||||
|
||||
| Образ | Версия | Что изменилось |
|
||||
|-------|--------|----------------|
|
||||
| `naeel/sless-operator` | v0.1.37 | `invoke.go`: `proxyReq.ContentLength = r.ContentLength` |
|
||||
| `naeel/sless-runtime-python3.11` | v0.1.4 | `text/html` support, `_accept` in event |
|
||||
|
||||
---
|
||||
|
||||
## 2026-03-18 — web-консоль (оператор v0.1.34 + funcs-service v0.2.0)
|
||||
|
||||
## 2026-03-18 — web-консоль (оператор v0.1.34 + funcs-service v0.2.0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user