From 6db4a64eb29a003e9fd9432fc1f1ee83d7e4a1e1 Mon Sep 17 00:00:00 2001 From: SunZhaonan Date: Mon, 14 Mar 2016 15:03:08 -0700 Subject: [PATCH] Configurize lineage look back time --- web/app/controllers/api/v1/Lineage.java | 21 ++++++++++++++++++++- web/app/dao/LineageDAO.java | 22 ++++++++++++++-------- web/conf/application.conf | 2 ++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/web/app/controllers/api/v1/Lineage.java b/web/app/controllers/api/v1/Lineage.java index 3cdd0cdf86..c54b8f2ef4 100644 --- a/web/app/controllers/api/v1/Lineage.java +++ b/web/app/controllers/api/v1/Lineage.java @@ -17,6 +17,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import dao.DatasetsDAO; import dao.FlowsDAO; import dao.LineageDAO; +import play.Play; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; @@ -25,6 +26,7 @@ import org.apache.commons.lang3.StringUtils; public class Lineage extends Controller { + private static final String LINEAGE_LOOK_BACK_TIME_KEY = "lineage.look.back.time"; public static Result getDatasetLineageGraphData(int id) { @@ -89,8 +91,25 @@ public class Lineage extends Controller if (downLevel < 1) downLevel = 1; + int lookBackTimeDefault = Integer.valueOf(Play.application().configuration().getString(LINEAGE_LOOK_BACK_TIME_KEY, "30")); + int lookBackTime = lookBackTimeDefault; + String lookBackTimeStr = request().getQueryString("period"); + if (!StringUtils.isBlank(lookBackTimeStr)) + { + try + { + lookBackTime = Integer.parseInt(lookBackTimeStr); + } + catch(NumberFormatException e) + { + Logger.error("Lineage Controller getDatasetLineageGraphData wrong period parameter. Error message: " + + e.getMessage()); + lookBackTime = lookBackTimeDefault; + } + } + result.put("status", "ok"); - result.set("data", Json.toJson(LineageDAO.getObjectAdjacnet(dataset.urn, upLevel, downLevel))); + result.set("data", Json.toJson(LineageDAO.getObjectAdjacnet(dataset.urn, upLevel, downLevel, lookBackTime))); return ok(result); } diff --git a/web/app/dao/LineageDAO.java b/web/app/dao/LineageDAO.java index b4d62ea5fb..f464f7e780 100644 --- a/web/app/dao/LineageDAO.java +++ b/web/app/dao/LineageDAO.java @@ -94,7 +94,7 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO "FROM_UNIXTIME(job_finished_unixtime) > CURRENT_DATE - INTERVAL 60 DAY"; - public static JsonNode getObjectAdjacnet(String urn, int upLevel, int downLevel) + public static JsonNode getObjectAdjacnet(String urn, int upLevel, int downLevel, int lookBackTime) { ObjectNode resultNode = Json.newObject(); LineagePathInfo pathInfo = utils.Lineage.convertFromURN(urn); @@ -127,7 +127,8 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO nodes, edges, addedDataNodes, - addedJobNodes); + addedJobNodes, + lookBackTime); if (nodes.size() > 0) { message = "Found lineage on azkaban"; @@ -153,7 +154,8 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO List nodes, List edges, Map addedDataNodes, - Map addedJobNodes) + Map addedJobNodes, + int lookBackTime) { if (upLevel < 1 && downLevel < 1) { @@ -164,7 +166,7 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO rows = getJdbcTemplate().queryForList( GET_JOB, pathInfo.filePath, - 30); + lookBackTime); if (rows != null) { for (Map row : rows) @@ -293,7 +295,8 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO nodes, edges, addedDataNodes, - addedJobNodes); + addedJobNodes, + lookBackTime); } nodeIndex = nodes.size(); } @@ -345,7 +348,8 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO nodes, edges, addedDataNodes, - addedJobNodes); + addedJobNodes, + lookBackTime); } nodeIndex = nodes.size(); } @@ -366,7 +370,8 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO List nodes, List edges, Map addedDataNodes, - Map addedJobNodes) + Map addedJobNodes, + int lookBackTime) { if (upLevel < 1 && downLevel < 1) { @@ -397,7 +402,8 @@ public class LineageDAO extends AbstractMySQLOpenSourceDAO nodes, edges, addedDataNodes, - addedJobNodes); + addedJobNodes, + lookBackTime); break; } } diff --git a/web/conf/application.conf b/web/conf/application.conf index f8041c2e01..6943c9daca 100644 --- a/web/conf/application.conf +++ b/web/conf/application.conf @@ -79,3 +79,5 @@ authentication.ldap.context_factory_class = "com.sun.jndi.ldap.LdapCtxFactory" authentication.principal.domain = "$YOUR_LDAP_DOMAIN" dataset.hdfs_browser.link = "https://localhost:8888/filebrowser/#" + +lineage.look.back.time = 60