Files
sicabe-core/deploy/output/b3r-hasil-uji.md
T
2026-10-09 02:35:14 +07:00

73 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hasil B3 ULANG — Go/No-Go BATCH B pada Image Python 3.11 (review R18)
> **Tanggal**: 2026-10-01 · **Image diuji**: `sicabe/airflow:3.3.2-om203` (ID `a02620e1d0a8`)
> — hasil **B2 revisi** (base Python 3.11), menggantikan image py3.13 yang ditolak.
> **Metode**: sama dengan B3 pertama — stack eksperimen terisolasi + config & DAG produksi
> read-only + container sekali pakai untuk koneksi/dbt. ⚠️ Produksi tidak tersentuh.
---
## 1. VERDICT: 🟢 **GO**
BATCH B boleh dilanjutkan ke B4. Penyebab no-go sebelumnya (dbt mati di Python 3.13)
**teratasi** dengan kembali ke Python 3.11.
---
## 2. Hasil lengkap
| # | Uji | Hasil |
|---|---|---|
| 1 | `airflow version` | ✅ **3.3.2** |
| 2 | **`dbt debug`** | ✅ **"Connection test: OK connection ok" + "All checks passed!"** |
| 3 | **`dbt compile --select orders_silver`** | ✅ compiles (SQL model terbentuk) |
| 4 | DAG produksi `dag_sitomat_gold_build.py` | ✅ impor bersih |
| 5 | DAG produksi `dag_sitomat_gold_build_prod.py` | ✅ impor bersih |
| 6 | DAG `sicabe_dq_gold_native.py` | ✅ dimuat sampai tahap *generate workflow*; gagal hanya karena `openmetadata-server` tidak ter-resolve dari container uji (bukan masalah versi) |
| 7 | `airflow dags list-import-errors` | ✅ kosong |
| 8 | Plugin OM `/pluginsv2/api/v2/openmetadata/health-auth` | ✅ **HTTP 200** |
| 9 | Plugin OM `/pluginsv2/` | ✅ **HTTP 200** |
| 10 | Trino (`TrinoHook`) | ✅ `SELECT 1` → `[[1]]`; bronze: `orders`, `orders_incremental` |
| 11 | MinIO (`S3Hook`) | ✅ bucket `['iceberg-data']`, `check_for_bucket` True |
| 12 | MySQL klien eksternal (`MySqlHook`) | ✅ `('8.0.40', 'asdp')`; tabel `passenger_productions`, `trx_booking` |
| 13 | OPA (aturan bronze `data-engineer`) | ✅ utuh (`bronze_orders`: ddl/select/write) |
Verifikasi dari **build** (step #18–#24): 5 klien DB, `mysqlclient` C termuat +
`libmariadb.so.3`, provider mysql, `dbt + great_expectations`, `flask_appbuilder` +
**plugin OM dapat dimuat** (`RestApiPlugin`), `pip check` bersih.
---
## 3. Ringkasan perjalanan B2 (tiga percobaan)
| Percobaan | Masalah | Penyelesaian |
|---|---|---|
| **1** | Build memakai Python 3.13 → **dbt mati** (mashumaro/Annotated) | Diputuskan pindah ke Python 3.11 (lihat `b3-hasil-uji.md`) |
| **2** | Build py3.11: pip install 62 menit (jaringan PyPI ~60–80 kB/s) lalu gagal di **penjaga regresi yang saya tulis** | Penjaga dipanggil dengan 1 argumen → `TypeError: Annotated[...] should be used with at least two arguments`. Diperbaiki menjadi `te.Annotated[int, 'meta']`. ⚠️ Galat itu justru membuktikan jalur Annotated **ada** di py3.11 |
| **3** | — | ✅ **BERHASIL** (langkah pip ter-cache → selesai cepat) |
Catatan operasional: build percobaan 1 sempat **dibatalkan** karena client `docker build`
ikut mati saat shell pengawas dihentikan (`nohup` tidak cukup — perlu `setsid`).
---
## 4. Konsekuensi & langkah berikutnya
- **Image target BATCH B**: `sicabe/airflow:3.3.2-om203` (ID `a02620e1d0a8`, 3.2 GB).
- Image py3.13 (`3.3.2-om203-py313`) **tidak dipakai** — disimpan sebagai bukti no-go.
- `Dockerfile.332` + `requirements.332.in/.lock` sudah final untuk py3.11; lock hanya
**44 baris** berbeda dari produksi.
- Berikutnya: **B4** — naikkan `AIRFLOW_IMAGE` + `OPENMETADATA_VERSION` di
`environment.defaults.sh` lalu `docker compose up -d`.
- Bukti rollback: `deploy/output/merge-airflow332-rollback.md` (dump sudah diuji pulih).
---
## 5. Kesalahan uji saya pada B3r (agar tidak terulang)
| # | Kesalahan | Akibat |
|---|---|---|
| 1 | Penjaga regresi `Annotated.__class_getitem__((int,))` — argumen kurang satu | **Positif palsu**: build gagal padahal sehat |
| 2 | Uji MinIO hanya meng-`source deploy/.env`, tanpa `environment.defaults.sh` | `MINIO_ROOT_USER` kosong → `NoCredentialsError` (bukan masalah image) |
| 3 | `pgrep -f` mencocokkan perintah saya sendiri | PID yang dilaporkan tidak sahih saat memantau build |