Icon View Incident Report

Serious Serious
Reported By: Jorge Ortiz [Rianxeira S.A.]
Reported On: 9/9/2018
For: Version 2.28 Build 6
# 4686 Executing a SAVE UPDATES Statement while Using the Global File I/O Buffering Can Cause Corruption

1) a EDBSERVER with IO Buffers activated
2) a test database with a single table called directorio
3) make a backup
4) publish the database
5) running a little insert stress program 5 sessions at same time
6) after a while saving updates. everithing goes ok.
7) after a while saving the second update gets error #1304 (always the first saving updates goes ok)

and the publication is corrupted, you have to unpublish.

If i put IO Buffers off, the saving updates goes ok every time.

Comments Comments
This bug applies to additional scenarios besides the SAVE UPDATES scenario described above. The scenarios under which this bug can occur are:

1) Starting a transaction on an entire database (and commit/rollback) (as opposed to a restricted transaction on specific tables)

2) Backing up an entire database

3) Saving the updates for an entire database

If one is being selective about which tables in the database to operate on (in similar scenarios), then the bug doesn't occur. Essentially, in the above scenarios ElevateDB isn't providing proper table lock coverage at all, resulting in corruption as reads and writes become one big race condition. The reporting customer saw the bug because he was using a database with only one table in it, and that table was published.

Also, the backups don't actually result in corruption in the database itself, but can cause the backups to get a partial read on some of the database table files, thus the backups can become corrupted and should be replaced as soon as possible if they were in any way affected by this bug.

Resolution Resolution
Fixed Problem on 9/13/2018 in version 2.28 build 7

Products Affected Products Affected
ElevateDB Additional Software and Utilities
ElevateDB DAC Client-Server
ElevateDB DAC Client-Server with Source
ElevateDB DAC Standard
ElevateDB DAC Standard with Source
ElevateDB DAC Trial
ElevateDB LCL Standard with Source
ElevateDB PHP Standard
ElevateDB PHP Standard with Source
ElevateDB PHP Trial
ElevateDB VCL Client-Server
ElevateDB VCL Client-Server with Source
ElevateDB VCL Standard
ElevateDB VCL Standard with Source
ElevateDB VCL Trial