Tailscale ਨੇ ਪੁਸ਼ਟੀ ਕੀਤੀ ਹੈ ਕਿ SQLite ਦੇ Write-Ahead Logging (WAL) ਮਕੈਨਿਜ਼ਮ ਵਿੱਚ 16 ਸਾਲ ਪੁਰਾਣੀ ਖਾਮੀ ਡਾਟਾਬੇਸਾਂ ਨੂੰ ਚੁੱਪਚਾਪ ਖਰਾਬ (corrupt) ਕਰ ਸਕਦੀ ਹੈ, ਅਤੇ ਕੰਪਨੀ ਨੇ SQLite ਦੇ ਮੇਨਟੇਨਰਾਂ ਨਾਲ ਮਿਲ ਕੇ ਵਰਜ਼ਨ 3.46.1 ਵਿੱਚ ਇਸਦਾ ਹੱਲ (fix) ਜਾਰੀ ਕੀਤਾ ਹੈ। ਇਹ ਖੋਜ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿਉਂਕਿ ਕਈ ਆਧੁਨਿਕ ਸੇਵਾਵਾਂ ਅਜੇ ਵੀ SQLite ਨੂੰ WAL ਮੋਡ ਵਿੱਚ ਚਲਾਉਂਦੀਆਂ ਹਨ, ਅਤੇ ਅਣਡਿੱਠੀ ਖਰਾਬੀ ਕਾਰਨ ਕੌਂਫਿਗਰੇਸ਼ਨ ਡਾਟਾ ਮਿਟ ਸਕਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਨੋਡਾਂ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚ ਸਕਦਾ ਹੈ।
ਇਹ ਬੱਗ ਕਿਵੇਂ ਰੜ੍ਹ ਗਿਆ
ਇਹ ਬੱਗ 2010 ਤੋਂ ਹੀ WAL ਮਕੈਨਿਜ਼ਮ ਵਿੱਚ ਮੌਜੂਦ ਸੀ। ਹਾਈ-ਕੰਕਰੈਂਸੀ (high-concurrency) ਐਕਸੈਸ ਪੈਟਰਨਾਂ ਅਤੇ ਕੁਝ ਫਾਈਲ-ਸਿਸਟਮ ਵਿਵਹਾਰਾਂ ਵਿਚਕਾਰ ਇੱਕ ਦੁਰਲੱਭ ਅੰਤਰ-ਕਿਰਿਆ (interaction) ਨੇ ਚੁੱਪਚਾਪ ਡਾਟਾ ਖਰਾਬੀ ਪੈਦਾ ਕੀਤੀ, ਅਤੇ ਸਟੈਂਡਰਡ ਹੈਲਥ ਚੈੱਕ ਇਸਨੂੰ ਫੜਨ ਵਿੱਚ ਅਸਫਲ ਰਹੇ।
Tailscale ਦੇ ਇੰਜੀਨੀਅਰਾਂ ਨੇ ਪਹਿਲਾਂ ਕੁਝ ਨੋਡਾਂ ਨੂੰ ਬਿਨਾਂ ਕਿਸੇ ਸਪੱਸ਼ਟ ਐਰਰ ਮੈਸੇਜ ਦੇ ਆਪਣੀ ਸਟੋਰ ਕੀਤੀ ਹੋਈ ਸਟੇਟ (state) ਗੁਆਉਂਦੇ ਦੇਖਿਆ। "ਕੀ ਡਾਟਾਬੇਸ ਚਾਲੂ ਹੈ?" ਪੁੱਛਣ ਵਾਲੇ ਪ੍ਰੋਬਸ (probes) ਲਗਾਤਾਰ ਸਫਲਤਾ (success) ਦਿਖਾ ਰਹੇ ਸਨ, ਪਰ ਕੌਂਫਿਗਰੇਸ਼ਨ ਐਂਟਰੀਆਂ ਗਾਇਬ ਹੋ ਰਹੀਆਂ ਸਨ। ਇਸ ਸਮੱਸਿਆ ਨੂੰ ਦੁਬਾਰਾ ਪੈਦਾ ਕਰਨ ਲਈ ਅਜਿਹੇ ਕਸਟਮ ਟੂਲਿੰਗ ਦੀ ਲੋੜ ਸੀ ਜੋ WAL ਪਾਥ 'ਤੇ ਦਬਾਅ ਪਾਵੇ ਅਤੇ ਫਾਈਲ-ਸਿਸਟਮ ਟਾਈਮਿੰਗ ਨੂੰ ਬਦਲੇ, ਜਿਸ ਕਾਰਨ ਇਹ ਸਮੱਸਿਆ ਇੱਕ ਦਹਾਕੇ ਤੋਂ ਵੱਧ ਸਮੇਂ ਤੱਕ ਲੁਕੀ ਰਹੀ।
ਕਿਸਨੂੰ ਚਿੰਤਾ ਕਰਨ ਦੀ ਲੋੜ ਹੈ
- ਕੋਈ ਵੀ ਐਪਲੀਕੇਸ਼ਨ ਜੋ WAL ਨੂੰ ਇਨੇਬਲ (enable) ਕਰਕੇ SQLite ਚਲਾਉਂਦੀ ਹੈ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਕਈ ਪ੍ਰੋਸੈਸ ਜਾਂ ਥ੍ਰੈਡ ਇਕੱਠੇ (concurrently) ਲਿਖਦੇ ਹਨ।
- ਗੈਰ-ਮਿਆਰੀ ਜਾਂ ਨੈੱਟਵਰਕਡ ਫਾਈਲ ਸਿਸਟਮਾਂ 'ਤੇ ਤੈਨਾਤੀ (deployments), ਜਿੱਥੇ ਲੇਟੈਂਸੀ (latency) ਅਤੇ ਕੈਸ਼ਿੰਗ ਟਾਈਮਿੰਗ ਦੇ ਐਜ ਕੇਸਾਂ (edge cases) ਨੂੰ ਵਧਾ ਦਿੰਦੇ ਹਨ।
- ਇਨਫਰਾਸਟ੍ਰਕਚਰ ਸੇਵਾਵਾਂ ਜੋ ਇੱਕ ਸਹੀ ਦਿਖਣ ਵਾਲੀ SQLite ਫਾਈਲ ਨੂੰ ਡਾਟਾ ਇੰਟੈਗਰਿਟੀ (data integrity) ਦੀ ਗਾਰੰਟੀ ਮੰਨਦੀਆਂ ਹਨ।
ਰੋਕਥਾਮ ਦੇ ਕਦਮ
- SQLite ਨੂੰ ਅੱਪਗ੍ਰੇਡ ਕਰੋ – ਵਰਜ਼ਨ 3.46.1 ਜਾਂ ਇਸ ਤੋਂ
