Commit df7d7689 by Madhan Neethiraj

ATALS-1634: added perf trace logs to REST APIs

parent 571f8d4e
......@@ -378,4 +378,44 @@ public class AtlasTypeUtil {
return false;
}
public static String toDebugString(AtlasTypesDef typesDef) {
StringBuilder sb = new StringBuilder();
sb.append("typesDef={");
if (typesDef != null) {
sb.append("enumDefs=[");
dumpTypeNames(typesDef.getEnumDefs(), sb);
sb.append("],");
sb.append("structDefs=[");
dumpTypeNames(typesDef.getStructDefs(), sb);
sb.append("],");
sb.append("classificationDefs=[");
dumpTypeNames(typesDef.getClassificationDefs(), sb);
sb.append("],");
sb.append("entityDefs=[");
dumpTypeNames(typesDef.getEntityDefs(), sb);
sb.append("]");
}
sb.append("}");
return sb.toString();
}
private static void dumpTypeNames(List<? extends AtlasBaseTypeDef> typeDefs, StringBuilder sb) {
if (CollectionUtils.isNotEmpty(typeDefs)) {
for (int i = 0; i < typeDefs.size(); i++) {
AtlasBaseTypeDef typeDef = typeDefs.get(i);
if (i > 0) {
sb.append(",");
}
sb.append(typeDef.getName());
}
}
}
}
\ No newline at end of file
......@@ -20,8 +20,10 @@ package org.apache.atlas.web.rest;
import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.discovery.AtlasDiscoveryService;
import org.apache.atlas.model.discovery.AtlasSearchResult;
import org.apache.atlas.utils.AtlasPerfTracer;
import org.apache.atlas.web.util.Servlets;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import javax.inject.Inject;
import javax.inject.Singleton;
......@@ -37,6 +39,8 @@ import javax.ws.rs.QueryParam;
@Path("v2/search")
@Singleton
public class DiscoveryREST {
private static final Logger PERF_LOG = AtlasPerfTracer.getPerfLogger("rest.DiscoveryREST");
private final AtlasDiscoveryService atlasDiscoveryService;
@Inject
......@@ -66,6 +70,14 @@ public class DiscoveryREST {
@QueryParam("classification") String classification,
@QueryParam("limit") int limit,
@QueryParam("offset") int offset) throws AtlasBaseException {
AtlasPerfTracer perf = null;
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "DiscoveryREST.searchUsingDSL(" + query + "," + type +
"," + classification + "," + limit + "," + offset + ")");
}
String queryStr = query == null ? "" : query;
if (StringUtils.isNoneEmpty(type)) {
......@@ -79,9 +91,10 @@ public class DiscoveryREST {
}
}
AtlasSearchResult ret = atlasDiscoveryService.searchUsingDslQuery(queryStr, limit, offset);
return ret;
return atlasDiscoveryService.searchUsingDslQuery(queryStr, limit, offset);
} finally {
AtlasPerfTracer.log(perf);
}
}
/**
......@@ -102,10 +115,18 @@ public class DiscoveryREST {
public AtlasSearchResult searchUsingFullText(@QueryParam("query") String query,
@QueryParam("limit") int limit,
@QueryParam("offset") int offset) throws AtlasBaseException {
AtlasPerfTracer perf = null;
AtlasSearchResult ret = atlasDiscoveryService.searchUsingFullTextQuery(query, limit, offset);
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "DiscoveryREST.searchUsingFullText(" + query + "," +
limit + "," + offset + ")");
}
return ret;
return atlasDiscoveryService.searchUsingFullTextQuery(query, limit, offset);
} finally {
AtlasPerfTracer.log(perf);
}
}
/**
......@@ -130,9 +151,17 @@ public class DiscoveryREST {
@QueryParam("classification") String classification,
@QueryParam("limit") int limit,
@QueryParam("offset") int offset) throws AtlasBaseException {
AtlasPerfTracer perf = null;
AtlasSearchResult ret = atlasDiscoveryService.searchUsingBasicQuery(query, type, classification, limit, offset);
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "DiscoveryREST.searchUsingBasic(" + query + "," + type +
"," + classification + "," + limit + "," + offset + ")");
}
return ret;
return atlasDiscoveryService.searchUsingBasicQuery(query, type, classification, limit, offset);
} finally {
AtlasPerfTracer.log(perf);
}
}
}
\ No newline at end of file
......@@ -23,7 +23,9 @@ import org.apache.atlas.discovery.AtlasLineageService;
import org.apache.atlas.exception.AtlasBaseException;
import org.apache.atlas.model.lineage.AtlasLineageInfo;
import org.apache.atlas.model.lineage.AtlasLineageInfo.LineageDirection;
import org.apache.atlas.utils.AtlasPerfTracer;
import org.apache.atlas.web.util.Servlets;
import org.slf4j.Logger;
import javax.inject.Inject;
import javax.inject.Singleton;
......@@ -43,6 +45,8 @@ import javax.ws.rs.core.Context;
@Path("v2/lineage")
@Singleton
public class LineageREST {
private static final Logger PERF_LOG = AtlasPerfTracer.getPerfLogger("rest.LineageREST");
private final AtlasLineageService atlasLineageService;
private static final String DEFAULT_DIRECTION = "BOTH";
private static final String DEFAULT_DEPTH = "3";
......@@ -73,9 +77,17 @@ public class LineageREST {
public AtlasLineageInfo getLineageGraph(@PathParam("guid") String guid,
@QueryParam("direction") @DefaultValue(DEFAULT_DIRECTION) LineageDirection direction,
@QueryParam("depth") @DefaultValue(DEFAULT_DEPTH) int depth) throws AtlasBaseException {
AtlasPerfTracer perf = null;
AtlasLineageInfo ret = atlasLineageService.getAtlasLineageInfo(guid, direction, depth);
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "LineageREST.getLineageGraph(" + guid + "," + direction +
"," + depth + ")");
}
return ret;
return atlasLineageService.getAtlasLineageInfo(guid, direction, depth);
} finally {
AtlasPerfTracer.log(perf);
}
}
}
\ No newline at end of file
......@@ -29,8 +29,10 @@ import org.apache.atlas.model.typedef.AtlasTypeDefHeader;
import org.apache.atlas.model.typedef.AtlasTypesDef;
import org.apache.atlas.store.AtlasTypeDefStore;
import org.apache.atlas.type.AtlasTypeUtil;
import org.apache.atlas.utils.AtlasPerfTracer;
import org.apache.atlas.web.util.Servlets;
import org.apache.http.annotation.Experimental;
import org.slf4j.Logger;
import javax.inject.Singleton;
import javax.servlet.http.HttpServletRequest;
......@@ -52,6 +54,7 @@ import java.util.Set;
@Path("v2/types")
@Singleton
public class TypesREST {
private static final Logger PERF_LOG = AtlasPerfTracer.getPerfLogger("rest.TypesREST");
private final AtlasTypeDefStore typeDefStore;
......@@ -282,9 +285,18 @@ public class TypesREST {
@Consumes(Servlets.JSON_MEDIA_TYPE)
@Produces(Servlets.JSON_MEDIA_TYPE)
public AtlasTypesDef createAtlasTypeDefs(final AtlasTypesDef typesDef) throws AtlasBaseException {
AtlasTypesDef ret = typeDefStore.createTypesDef(typesDef);
AtlasPerfTracer perf = null;
return ret;
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "TypesREST.createAtlasTypeDefs(" +
AtlasTypeUtil.toDebugString(typesDef) + ")");
}
return typeDefStore.createTypesDef(typesDef);
} finally {
AtlasPerfTracer.log(perf);
}
}
/**
......@@ -301,9 +313,18 @@ public class TypesREST {
@Produces(Servlets.JSON_MEDIA_TYPE)
@Experimental
public AtlasTypesDef updateAtlasTypeDefs(final AtlasTypesDef typesDef) throws AtlasBaseException {
AtlasTypesDef ret = typeDefStore.updateTypesDef(typesDef);
AtlasPerfTracer perf = null;
return ret;
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "TypesREST.updateAtlasTypeDefs(" +
AtlasTypeUtil.toDebugString(typesDef) + ")");
}
return typeDefStore.updateTypesDef(typesDef);
} finally {
AtlasPerfTracer.log(perf);
}
}
/**
......@@ -319,7 +340,18 @@ public class TypesREST {
@Produces(Servlets.JSON_MEDIA_TYPE)
@Experimental
public void deleteAtlasTypeDefs(final AtlasTypesDef typesDef) throws AtlasBaseException {
AtlasPerfTracer perf = null;
try {
if (AtlasPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
perf = AtlasPerfTracer.getPerfTracer(PERF_LOG, "TypesREST.deleteAtlasTypeDefs(" +
AtlasTypeUtil.toDebugString(typesDef) + ")");
}
typeDefStore.deleteTypesDef(typesDef);
} finally {
AtlasPerfTracer.log(perf);
}
}
/**
......@@ -334,4 +366,5 @@ public class TypesREST {
}
return ret;
}}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment