> On April 29, 2020, 7:57 p.m., Sidharth Mishra wrote: > > repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java > > Lines 780 (patched) > > <https://reviews.apache.org/r/72452/diff/1/?file=2229439#file2229439line781> > > > > Just thinking the below might be more easy to understand if someone is > > not aware of why we do both edge count. > > > > AtlasPerfMetrics.MetricRecorder metric = > > RequestContext.get().startMetricRecord("getRelationshipEdge"); > > > > AtlasEdge ret = null; > > long toVertexIncomingEdgesCount = > > graphHelper.getInComingEdgesByLabelCount(toVertex, relationshipLabel); > > > > if(toVertexIncomingEdgesCount > 0) { > > long fromVertexOutgoingEdgesCount = > > graphHelper.getOutGoingEdgesByLabelCount(fromVertex, relationshipLabel); > > > > if(toVertexIncomingEdgesCount < > > fromVertexOutgoingEdgesCount) { > > Iterator<AtlasEdge> edgesIterator = > > graphHelper.getIncomingEdgesByLabel(toVertex, relationshipLabel); > > ret = getActiveEdgeFromList(fromVertex.getId(), > > edgesIterator); > > } else if(fromVertexOutgoingEdgesCount > 0) { > > Iterator<AtlasEdge> edgesIterator = > > graphHelper.getOutGoingEdgesByLabel(fromVertex, relationshipLabel); > > ret = getActiveEdgeFromList(toVertex.getId(), > > edgesIterator); > > } > > } > > > > RequestContext.get().endMetricRecord(metric); > > return ret;
I have changed my approach. Kindly review my latest patch. - Ashutosh ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/72452/#review220553 ----------------------------------------------------------- On April 29, 2020, 5:51 p.m., Ashutosh Mestry wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/72452/ > ----------------------------------------------------------- > > (Updated April 29, 2020, 5:51 p.m.) > > > Review request for atlas, Madhan Neethiraj, Nikhil Bonte, Nixon Rodrigues, > Sarath Subramanian, and Sidharth Mishra. > > > Bugs: ATLAS-3762 > https://issues.apache.org/jira/browse/ATLAS-3762 > > > Repository: atlas > > > Description > ------- > > **Problem Definition** > Please refer to JIRA for details. > > **Updates** > - Modifed: _AtlasJanusGraph.wrapVertices_ and _AtlasJanusGraph.wrapEdges_ : > Now uses genuine iterators. This reduces number of elements fetched, since > the search is linear. > - New: _AtlasVertex.getEdgeCount_ fetches edge count using iterator returned > from _JanusVertex_. Fetching the count is effecient using stream support. > > > Diffs > ----- > > > graphdb/api/src/main/java/org/apache/atlas/repository/graphdb/AtlasVertex.java > 9406e26ff > > graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraph.java > eb0206271 > > graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusVertex.java > fdc9fd0b5 > repository/src/main/java/org/apache/atlas/repository/graph/GraphHelper.java > 2b8227a7e > > repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasRelationshipStoreV2.java > d1c1f1255 > > > Diff: https://reviews.apache.org/r/72452/diff/1/ > > > Testing > ------- > > **Volume testing** > High volume testing makes the edge fetching effcient. Cases where incoming > edges was in 1000s and outgoing edges was handful. > > Memory footprint has improved since JanusGrpah caches edges and then expires > it. Fetching fewer edges will reduce number of items in memory. > > **Pre-commit Build** > https://builds.apache.org/view/A/view/Atlas/job/PreCommit-ATLAS-Build-Test/1858/ > > > Thanks, > > Ashutosh Mestry > >