SQLite 3.51.3 me një korrigjim për mundësinë e korruptimit të databazës në modalitetin WAL

SQLite 3.51.3 me një korrigjim për mundësinë e korruptimit të databazës në modalitetin WAL

Më 13 mars u lançua një version korrektues 3.51.3 i sistemit të menaxhimit të bazës së të dhënave të integruar kompakt. SQLite. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet si pronë publike.

Për shkak të problemeve të përputhshmërisë së prapme lidhur me disa funksione të reja, versioni 3.52.0 (i liruar më 6 mars) u tërhoq.

Lista e ndryshimeve për versionin 3.51.3:

  • MĂ« 3 mars, njĂ« nga zhvilluesit e SQLite (Dan) zbuloi dhe ndreqi njĂ« gabim i cili nĂ« raste tĂ« rralla mund tĂ« shkaktonte dĂ«mtim tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave dhe u quajt «gabimi WAL-reset»:
    • Ky gabim ndodh vetĂ«m nĂ« bazat e tĂ« dhĂ«nave qĂ« funksionojnĂ« nĂ« modalitetin WAL, nĂ«se njĂ« file i njĂ«jtĂ« Ă«shtĂ« i hapur nga dy ose mĂ« shumĂ« lidhje nĂ« procese ose blloqe tĂ« ndryshme, dhe nĂ«se kĂ«to dy lidhje pĂ«rpiqen tĂ« kryejnĂ« shkrim ose tĂ« krijojnĂ« njĂ« pikĂ« kontrolli njĂ«kohĂ«sisht.
    • Gabimi lidhet me njĂ« konflikt tĂ« aksesit nĂ« tĂ« dhĂ«na nĂ«n kufizime tĂ« rrepta tĂ« kohĂ«s. NĂ« kushte normale operative, ai ndodh mjaft rrallĂ«. Zhvilluesit nuk arritĂ«n asnjĂ«herĂ« ta riprodhojnĂ« kĂ«tĂ« gabim nĂ« kushte natyrore dhe iu desh tĂ« shtonin nĂ« SQLite njĂ« logjikĂ« tĂ« veçantĂ« testimi, e cila qĂ«llimisht krijon kushte pĂ«r tĂ« shkaktuar gabimin, pĂ«r tĂ« siguruar qĂ« problemi Ă«shtĂ« zgjidhur.
    • Gabimi ndodh kur:
      1. Një lidhje kryen kontrollimin e pikës së kontrollit. Ky kontroll i parë duhet të përfundojë. Me fjalë të tjera, gjatë kontrollit duhet të kopjohet me sukses e gjithë përmbajtja e skedarit WAL në databazë dhe të çfaroset skedari WAL në një gjendje në të cilën mund të riçeleset.
      2. Menjëherë pas përfundimit të punës së pikës së kontrollit të parë, aktivizohet pika e kontrollit e dytë.
      3. Ndërkohë që po aktivizohet pika e kontrollit e dytë nga hapi 2, një lidhje tjetër në databazë regjistron një transaksion, i cili riçel skedarin WAL dhe shkruan përmbajtje të re në fillim të skedarit WAL.
      4. Për shkak të konfliktit të aksesit në të dhëna, pika e kontrollit e dytë nga hapi 2 nuk merr parasysh se skedari WAL është riçelur për shkak të regjistrimit të transaksionit në hapin 3. Pika e kontrollit e dytë vendos një vlerë të gabuar për një nga fushat në titullin e indeksit të WAL. Kjo fushë tregon se një pjesë e skedarit WAL është regjistruar tashmë në pikën e kontrollit, megjithëse në të vërtetë nuk është kështu.
      5. Regjistrimi i transaksioneve shtesë çon në rritjen e numrit të faqeve në skedarin WAL, i cili tejkalon numrin e faqeve që ekzistonin në momentin e pikës dyshuese të hapit 1.
      6. Më vonë, kur shfaqet pika e tretë e kontrollit, ajo kalon të gjithë ose një pjesë të transaksionit të regjistruar në fazën 3. Kështu, pjesët e transaksionit nga faza 3 nuk përfshihen në skedarin e bazës së të dhënave, duke shkaktuar dëmtimin e skedarit të bazës së të dhënave.
    • Gabimi Ă«shtĂ« i pranishĂ«m ndoshta nĂ« tĂ« gjitha versionet e SQLite, qĂ« nga 3.7.0 (21.07.2010) deri nĂ« 3.51.2. Po ashtu, janĂ« lĂ«shuar rregullime pĂ«r disa versione mĂ« tĂ« hershme: 3.44.6 dhe 3.50.7.
  • Rregullime tĂ« tjera tĂ« vogla.

Burimi: linux.org.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster