> On May 6, 2020, 10:59 p.m., Madhan Neethiraj wrote: > > graphdb/common/src/main/java/org/apache/atlas/repository/graphdb/tinkerpop/query/TinkerpopGraphQuery.java > > Line 215 (original), 215 (patched) > > <https://reviews.apache.org/r/72459/diff/4/?file=2230572#file2230572line215> > > > > Why is it necessary to switch to LinkedHashSet here?
Only LinkedHashSet maintains insertion order. Provided test for search with sortBy fails when underlying structure is HashSet. > On May 6, 2020, 10:59 p.m., Madhan Neethiraj wrote: > > repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java > > Line 203 (original), 204 (patched) > > <https://reviews.apache.org/r/72459/diff/4/?file=2230573#file2230573line204> > > > > Instead of <typeName>.<attrName>, I suggest the following: > > > > AtlasAttribute sortByAttribute = > > context.getEntityType().getAttribute(sortBy); > > > > if (sortByAttribute != null) { > > AtlasGraphQuery.SortOrder qrySortOrder = sortOrder == > > SortOrder.ASCENDING ? ASC : DESC; > > > > graphQuery.orderBy(sortByAttribute.getVertexPropertyName(), > > qrySortOrder) > > } > > > > This will ensure that sortBy will work for system-attributes as well - > > like __timestamp, __modificationTimestamp. Great suggestion. Fixed, thanks. > On May 6, 2020, 10:59 p.m., Madhan Neethiraj wrote: > > repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java > > Lines 367 (patched) > > <https://reviews.apache.org/r/72459/diff/4/?file=2230573#file2230573line367> > > > > I suggest to replace use of guava library class with JDK equivalent: > > StreamSupport.stream(graphQuery.vertexIds().iterator(), false).count() Fixed. - Damian ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/72459/#review220665 ----------------------------------------------------------- On May 7, 2020, 8:03 a.m., Damian Warszawski wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/72459/ > ----------------------------------------------------------- > > (Updated May 7, 2020, 8:03 a.m.) > > > Review request for atlas, Bolke de Bruin, Madhan Neethiraj, and Nixon > Rodrigues. > > > Repository: atlas > > > Description > ------- > > EntitySearchProcessor fails when doing search by classification and specify > orderBy attribute. The issue is that for graph query you cannot refer to > attribute by name but need to provide absolute path to entity attribute e.g. > > > > ``` > > { "attributes": [ "description", "comment", "popularityScore" ], > "classification": "customer_NON_PII", "excludeDeletedEntities": "False", > "limit": "", "offset": 100, "sortBy": "Table.popularityScore", "sortOrder": > "DESCENDING", "typeName": "hive_table" } > ``` > > this query fails with following exception: > > > > ``` > > {"exception":{"message":"Provided key does not exist: > hive_table.popularityScore","class":"java.lang.IllegalArgumentException","stacktrace":"java.lang.IllegalArgumentException: > Provided key does not exist: hive_table.popularityScore\n\tat > com.google.common.base.Preconditions.checkArgument(Preconditions.java:163)\n\tat > org.janusgraph.graphdb.query.graph.GraphCentricQueryBuilder. > orderBy(GraphCentricQueryBuilder.java:160) > > ``` > > > > When specify full reference to attribute e.g. > > > > ``` > > { "attributes": [ "description", "comment", "popularityScore" ], > "classification": "customer_NON_PII", "excludeDeletedEntities": "False", > "limit": "", "offset": 100, "sortBy": "Table.popularityScore", "sortOrder": > "DESCENDING", "typeName": "hive_table" } > ``` > > it fails on validation stage > > > > ``` > > {"exception":{"message":"Attribute Table.popularityScore not found for type > Table","class":"org.apache.atlas.exception.AtlasBaseException","stacktrace":"org.apache.atlas.exception.AtlasBaseException: > Attribute Table.popularityScore not found for type Table\n\tat > org.apache.atlas.discovery.SearchContext.validateAttributes(SearchContext.java:288) > > ``` > > Reference to JIRA https://issues.apache.org/jira/browse/ATLAS-3776 > > > Diffs > ----- > > > graphdb/common/src/main/java/org/apache/atlas/repository/graphdb/tinkerpop/query/TinkerpopGraphQuery.java > c70e8bfe8 > > repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java > 1a7bf6b16 > > repository/src/test/java/org/apache/atlas/discovery/EntitySearchProcessorTest.java > PRE-CREATION > repository/src/test/java/org/apache/atlas/query/BasicTestSetup.java > 9aa554ad5 > repository/src/test/java/org/apache/atlas/query/DSLQueriesTest.java > 0bbff2f46 > > > Diff: https://reviews.apache.org/r/72459/diff/5/ > > > Testing > ------- > > tested on our dev env. > > > Thanks, > > Damian Warszawski > >