Wail Alkowaileet created ASTERIXDB-2493:
-------------------------------------------

             Summary: In-memory LSM filter is not thread safe
                 Key: ASTERIXDB-2493
                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2493
             Project: Apache AsterixDB
          Issue Type: Bug
            Reporter: Wail Alkowaileet


To reproduce the issue:
1- Setup a cluster with a single NC and a single partition.
2- Set a breakpoint at 
[LSMComponentFilter.java#L71]|https://github.com/apache/asterixdb/blob/6b31f73565a3b16e0dd1fce9ea010e640c53ca79/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/LSMComponentFilter.java#L71]
3- DDL:
{code:sql}
DROP DATAVERSE ThreadSafe IF EXISTS;
CREATE DATAVERSE ThreadSafe;

USE ThreadSafe;

CREATE TYPE FilterTestType AS {
  uid: uuid,
  created: int
};

CREATE DATASET FilterTest(FilterTestType)
PRIMARY KEY uid AUTOGENERATED WITH FILTER ON created;
{code}

4- Initiate two insert queries:
{code:sql}
USE ThreadSafe;
INSERT INTO FilterTest (
    {"created": 1}
)

INSERT INTO FilterTest (
    {"created": 0}
)
{code}

5- Let the insert with "created = 0" to update the minTuple (L79)
6- Now, let the insert with "created = 1" to update minTuple
7- Do the same for the max.
After (7) both min and max should equal to 1
8- Flush the component:
http://localhost:19002/connector?dataverseName=ThreadSafe&datasetName=FilterTest
9- Execute search query:
{code:sql}
USE ThreadSafe;

SELECT *
FROM FilterTest
WHERE created = 0;
{code}

The query returns an empty result



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to