Latihan 1: Connection Pooling — Database

Latihan 1 dari materi Connection Pooling di Database — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.

Lengkapi class ConnectionPool yang meniru connection pool: koneksi dipinjam dengan acquire() dan dikembalikan dengan release().

  1. constructor(maxSize): simpan maxSize, mulai active dari 0, dan siapkan antrean untuk request yang menunggu (array queue = [] atau angka queued = 0, bebas).
  2. acquire(): kalau active < maxSize, naikkan active lalu kembalikan "ok". Kalau sudah penuh, tambahkan satu ke antrean lalu kembalikan "queued". active gak naik untuk request yang antre.
  3. release(): turunkan active. Kalau ada yang antre, keluarkan satu dari antrean dan naikkan active lagi (request yang antre langsung dapat koneksi).
  4. stats(): kembalikan object { active, queued }, dengan queued = jumlah yang sedang antre.

Baris const pool = new ConnectionPool(2); dan tujuh console.log di kode awal sudah ada, biarkan. Output yang dicek, berurutan:

ok
ok
queued
2
1
2
0

Satu cek lagi memakai new ConnectionPool(3): empat kali acquire() harus menghasilkan "ok", "ok", "ok", "queued", lalu setelah satu release(), stats().active bernilai 3 dan stats().queued bernilai 0.

Hint