SQLite 3.51.3 koos vĂ”imaliku WAL-reĆŸiimi andmebaasi kahjustamise parandamisega

SQLite 3.51.3 koos vĂ”imaliku WAL-reĆŸiimi andmebaasi kahjustamise parandamisega

13. mÀrtsil toimus kompaktse sisseehitatud DBMS versiooni 3.51.3 korrigeeriv vÀljalase SQLite. Projekti kood on kirjutatud C keeles ja levitatakse kui avalik domeen.

Seoses tagurpidi ĂŒhilduvuse probleemidega, mis on seotud mĂ”ne uue funktsiooniga, versioon 3.52.0 (mis ilmus 6. mĂ€rtsil) vĂ”eti tagasi.

Versiooni 3.51.3 muudatuste loetelu:

  • 3. mĂ€rtsil avastas ja kĂ”rvaldas ĂŒks SQLite arendajatest (Dan) vea, mis harvadel juhtudel vĂ”is pĂ”hjustada andmebaasi kahjustumist ja mille nimeks oli «WAL-reset bug»:
    • See viga ilmneb ainult andmebaasides, mis töötavad WAL-reĆŸiimis, kui sama faili avab kaks vĂ”i rohkem ĂŒhendust erinevates lĂ”ngades vĂ”i protsessides, ja kui need kaks ĂŒhendust ĂŒritavad samal ajal kirjutada vĂ”i luua kontrollpunkti.
    • Viga on seotud andmete ligipÀÀsu konfliktiga rangete ajapiirangute korral. Tavalistes töötingimustes esineb see ÀÀrmiselt harva. Arendajatel ei Ă”nnestunud seda viga looduslikes tingimustes korrata ning nad pidid SQLite-sse lisama erilise testimise loogika, mis tahtlikult loob tingimused vea tekkimiseks, et veenduda, et probleem on lahendatud.
    • Viga ilmneb, kui:
      1. Üks ĂŒhendus teostab kontrollpunkti kontrollimist. See esimene kontroll peab olema lĂ”petatud. TeisisĂ”nu, kontrolli kĂ€igus tuleb tĂ”husalt kopeerida kogu WAL-faili sisu tagasi andmebaasi ja viia WAL-fail seisundisse, kus seda saab lĂ€htestada.
      2. Kohe pÀrast esimese kontrollpunkti lÔpetamist kÀivitatakse teine.
      3. Kuni kĂ€ivitatakse teine kontrollpunkt, mis tuleneb punktist 2, fikseerib teine andmebaasiĂŒhendus tehingu, mis lĂ€htestab WAL-faili ja salvestab uue sisu WAL-faili algusesse.
      4. Andmete ligipÀÀsu konflikti tĂ”ttu ei arvestata teise kontrollpunkti puhul, mis tuleneb punktist 2, et WAL-fail oli lĂ€htestatud tulemuste fikseerimise tĂ”ttu punktis 3. Teine kontrollpunkt seadmise vale vÀÀrtuse ĂŒheks vĂ”tmest WAL-indeksi pĂ€isesse. See vĂ€li nĂ€itab, et osa WAL-failist on juba fikseeritud kontrollpunktis, kuigi tegelikult on see vale.
      5. Lisatehingute fikseerimine viib WAL-failis lehekĂŒlgede arvu suurenemiseni, mis ĂŒletab lehekĂŒlgede arvu, mis eksisteeris esimese kontrollpunkti ajal punktis 1.
      6. Hiljem, kui kolmas kontrollpunkt tekib, jÀtab see vahele kogu vÔi osa tehingust, mis on salvestatud etapis 3. SeetÔttu ei satu etapi 3 tehingu osad andmebaasifaili, mille tulemusel on andmebaasifail kahjustatud.
    • Viga on tĂ”enĂ€oliselt olemas kĂ”igis SQLite versioonides alates 3.7.0 (21.07.2010) kuni 3.51.2. Samuti on vĂ€lja antud parandused mĂ”nedele varasematele versioonidele: 3.44.6 ja 3.50.7.
  • Teised vĂ€hem tĂ€henduslikud parandused.

Allikas: linux.org.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster