You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@atlas.apache.org by "Paresh Devalia (Jira)" <ji...@apache.org> on 2025/10/24 11:10:00 UTC

[jira] [Assigned] (ATLAS-5095) Cache shell entity after creation to prevent from cache miss

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

Paresh Devalia reassigned ATLAS-5095:
-------------------------------------

    Assignee: Aditya Gupta

> Cache shell entity after creation to prevent from cache miss
> ------------------------------------------------------------
>
>                 Key: ATLAS-5095
>                 URL: https://issues.apache.org/jira/browse/ATLAS-5095
>             Project: Atlas
>          Issue Type: Improvement
>            Reporter: Yushi Hayasaka
>            Assignee: Aditya Gupta
>            Priority: Minor
>
> Sometimes Atlas attempts to load an entity from the cache (e.g., to notify listeners of processed entities after `createOrUpdate()`).
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/graph/FullTextMapperV2.java#L176]
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityChangeNotifier.java#L595]
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityChangeNotifier.java#L465]
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityChangeNotifier.java#L418]
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityChangeNotifier.java#L111-L115]
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityStoreV2.java#L1145-L1146]
> If the specified entity is not found in the cache, Atlas falls back to retrieving it through `EntityGraphRetriever#toAtlasEntity`, which is slow path compared to cache.
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/graph/FullTextMapperV2.java#L181]
> Currently, we observe that Atlas tries to retrieve shell entities from EntityGraphRetriever instead of cache.
> When there are many shell entities in the event, it increases the operation time.
> As introduced in ATLAS-3405, if the non-existing entities are included in the event, Atlas creates the shell entity.
> In my understanding (please correct me if wrong), the shell entity should only contain some properties which are specified in createShellEntityVertex. 
> [https://github.com/apache/atlas/blob/18d7f9dccf5658988d32e387339948286810f0a8/repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphMapper.java#L291-L312]
> So, I guess it is safe to cache after creation (e.g. right after `createShellEntityVertex`), and it leads to improve the performance by reducing calling slow path.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)