-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/62957/
-----------------------------------------------------------

(Updated Oct. 14, 2017, 1:34 a.m.)


Review request for atlas, Madhan Neethiraj and Sarath Subramanian.


Changes
-------

Updated patch.


Bugs: ATLAS-2195
    https://issues.apache.org/jira/browse/ATLAS-2195


Repository: atlas


Description
-------

**Background**
If entities and types are created simultaneously it was observed that some 
stale transactions are created. Titan runs an eviction thread every minute to 
evict these out of transaction cache. That is when the message mentioned in the 
bug appears.

**Analysis**
During startup when built-in types are added to the database, the process did 
not use _GraphTransactionInterceptor_ approach. This caused stale transactions 
to appear, which grew over time.

ManagementSystem class in Titan creates a transaction object in its ctor. The 
user is expected to close this when done with using it.

**Analysis for Part 2**

In our _GraphBackedSearchIndexer.getVertexIndexKeys_ we use this to get index 
keys. This is invoked for every basic search.
 
Interestingly, new object is not created for each basic search. Only 1 
transaction stays open if user just keeps searching.
 
Behavior changes when new tag is created. The count of open transactions keeps 
incrementing.

**Instrumentation**
Used _Titan's_ _StandardTitanGraph_ for adding instrumentation code. This is 
central point for transaction operations.

Tracing the creation and co-relating them with destruction helped in narrowing 
down the area of focus.


Diffs (updated)
-----

  
repository/src/main/java/org/apache/atlas/repository/graph/GraphBackedSearchIndexer.java
 8aa22377 


Diff: https://reviews.apache.org/r/62957/diff/2/

Changes: https://reviews.apache.org/r/62957/diff/1-2/


Testing
-------

**Unit tests**
Existing.

**Other**
Executed the attached bash scripts to create numerous types and entities 
simultaneously.

Use this command:
```
bash create-type.sh & bash create-entity.sh &
```


File Attachments
----------------

create type
  
https://reviews.apache.org/media/uploaded/files/2017/10/12/755455cc-c08c-4885-9d07-5b5d9e3867e2__create-type.sh
create entity
  
https://reviews.apache.org/media/uploaded/files/2017/10/12/b20ddb13-7300-493d-8f43-5fcaf884c055__create-entity.sh


Thanks,

Ashutosh Mestry

Reply via email to