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

3.9 KiB
Raw Blame History

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