Bug #42484 Falcon temporary data inconsistency with LIMIT
Submitted: 30 Jan 16:19 Modified: 30 Jan 16:24
Reporter: Philip Stoev
Status: Verified
Category:Server: Falcon Severity:S2 (Serious)
Version:6.0-falcon-team OS:Any
Assigned to: Kevin Lewis Target Version:6.0-beta
Tags: ISOLATION, F_LIMIT
Triage: Triaged: D2 (Serious)

[30 Jan 16:19] Philip Stoev
Description:
When executing a non-concurrent workload containing simple UPDATES on a key, SELECT
statements will temporarily return different results when executed with and without the
Falcon LIMIT optimization.

The failure is temporary and the table remains consistent in the long term. No range
scans or NULLS are involved.

How to repeat:
A test case will be uploaded shortly.
[30 Jan 16:20] Philip Stoev
ZZ file for bug 42484

Attachment: bug42484.zz (text/plain), 336 bytes.

[30 Jan 16:20] Philip Stoev
YY file for bug 42484

Attachment: bug42484.yy (application/octet-stream, text), 177 bytes.

[30 Jan 16:24] Philip Stoev
To reproduce:

$ runall.pl \
 --basedir=/build/bzr/6.0-falcon-team \
 --mysqld=--loose-innodb-lock-wait-timeout=1 \
 --mysqld=--table-lock-wait-timeout=1 \
 --mysqld=--loose-falcon-lock-wait-timeout=1 \
 --mysqld=--loose-falcon-debug-mask=2 \
 --mysqld=--skip-safemalloc \
 --grammar=bug42484.yy \
 --gendata=bug42484.zz \
 --threads=1 \
 --validator=Limit \
 --duration=1200 \
 --mysqld=--log-output=file \
 --queries=100000 \
 --engine=falcon

This test will fail immediately after takeoff, reporting the query that returns the
inconsistent result. Re-executing the query manually shows that the inconsistency was
transient. 10 inserts and 11 updates, all prerfectly valid queries.