[ 
https://issues.apache.org/jira/browse/ASTERIXDB-2493?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Wail Alkowaileet updated ASTERIXDB-2493:
----------------------------------------
    Description: 
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

  was:
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


> 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
>            Priority: Major
>
> 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