AMBARI-19823. If by any case Migration Is hampered Then No message is shown in UI Hue-Ambari Migration view. (Ishan Bhatt via gauravn7)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4aa0f623 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4aa0f623 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4aa0f623 Branch: refs/heads/trunk Commit: 4aa0f6234e42b2328e2b0b3f435a1b13d27412a9 Parents: d4c1ace Author: Gaurav Nagar <grv...@gmail.com> Authored: Thu Feb 16 10:47:22 2017 +0530 Committer: Gaurav Nagar <grv...@gmail.com> Committed: Thu Feb 16 10:47:22 2017 +0530 ---------------------------------------------------------------------- .../HiveHistoryMigrationUtility.java | 26 +- ...HiveHistoryQueryMigrationImplementation.java | 2 +- .../HiveSavedQueryMigrationImplementation.java | 4 +- .../HiveSavedQueryMigrationUtility.java | 29 +- .../pigjob/PigJobMigrationImplementation.java | 5 +- .../pig/pigjob/PigJobMigrationUtility.java | 377 ++++++++++--------- .../PigScriptMigrationImplementation.java | 5 +- .../pigscript/PigScriptMigrationUtility.java | 27 +- .../pigudf/PigUdfMigrationImplementation.java | 5 +- .../pig/pigudf/PigUdfMigrationUtility.java | 286 +++++++------- .../scripts/models/MigrationResponse.java | 6 + .../app/models/checkprogress.js | 3 +- .../app/routes/home-page/hive-history.js | 7 +- .../app/routes/home-page/hive-saved-query.js | 8 +- .../app/routes/home-page/pig-job.js | 7 +- .../app/routes/home-page/pig-script.js | 8 +- .../app/routes/home-page/pig-udf.js | 8 +- .../app/templates/home-page/hive-history.hbs | 8 + .../templates/home-page/hive-saved-query.hbs | 8 + .../app/templates/home-page/pig-job.hbs | 8 + .../app/templates/home-page/pig-script.hbs | 8 + .../app/templates/home-page/pig-udf.hbs | 187 ++++----- 22 files changed, 578 insertions(+), 454 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryMigrationUtility.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryMigrationUtility.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryMigrationUtility.java index bab2084..7c3b2c2 100755 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryMigrationUtility.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryMigrationUtility.java @@ -69,6 +69,7 @@ public class HiveHistoryMigrationUtility { Connection connectionHuedb = null; Connection connectionAmbaridb = null; + logger.info(System.getProperty("java.class.path")); logger.info("--------------------------------------"); @@ -121,7 +122,7 @@ public class HiveHistoryMigrationUtility { try { String[] usernames = username.split(","); int totalQueries = 0; - for(int k=0; k<usernames.length; k++) { + for (int k = 0; k < usernames.length; k++) { connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection(); username = usernames[k]; migrationresult.setProgressPercentage(0); @@ -137,7 +138,7 @@ public class HiveHistoryMigrationUtility { /* if No migration query selected from Hue Database according to our search criteria */ if (dbpojoHiveHistoryQuery.size() == 0) { - logger.info("No queries has been selected for the user " + username + " between dates: " + startDate +" - "+endDate); + logger.info("No queries has been selected for the user " + username + " between dates: " + startDate + " - " + endDate); } else { /* If hive queries are selected based on our search criteria */ @@ -158,7 +159,7 @@ public class HiveHistoryMigrationUtility { float calc = ((float) (i + 1)) / dbpojoHiveHistoryQuery.size() * 100; int progressPercentage = Math.round(calc); migrationresult.setProgressPercentage(progressPercentage); - migrationresult.setNumberOfQueryTransfered(i+1); + migrationresult.setNumberOfQueryTransfered(i + 1); getResourceManager(view).update(migrationresult, jobid); logger.info("_____________________"); @@ -182,7 +183,7 @@ public class HiveHistoryMigrationUtility { epochTime = hiveHistoryQueryImpl.getEpochTime();// getting system time as epoch format - if(usernames[k].equals("all")) { + if (usernames[k].equals("all")) { username = dbpojoHiveHistoryQuery.get(i).getOwnerName(); } @@ -219,7 +220,7 @@ public class HiveHistoryMigrationUtility { } logger.info("Migration Completed"); migrationresult.setFlag(1); - if(totalQueries==0) { + if (totalQueries == 0) { migrationresult.setNumberOfQueryTransfered(0); migrationresult.setTotalNoQuery(0); } else { @@ -230,30 +231,41 @@ public class HiveHistoryMigrationUtility { getResourceManager(view).update(migrationresult, jobid); } catch (SQLException e) { logger.error("Sql exception in ambari database: ", e); + migrationresult.setError("SQL Exception: " + e.getMessage()); try { connectionAmbaridb.rollback(); model.setIfSuccess(false); logger.error("Sql statement are Rolledback"); } catch (SQLException e1) { logger.error("Sql rollback exception in ambari database", - e1); + e1); } } catch (ClassNotFoundException e) { logger.error("Class not found :- ", e); + migrationresult.setError("Class Not Found: " + e.getMessage()); } catch (ParseException e) { logger.error("Parse Exception : ", e); + migrationresult.setError("Parse Exception: " + e.getMessage()); } catch (URISyntaxException e) { logger.error("URI Syntax Exception: ", e); + migrationresult.setError("URI Syntax Exception: " + e.getMessage()); } catch (PropertyVetoException e) { logger.error("PropertyVetoException: ", e); + migrationresult.setError("Property Veto Exception: " + e.getMessage()); } catch (ItemNotFound itemNotFound) { itemNotFound.printStackTrace(); + migrationresult.setError("Item Not Found: " + itemNotFound.getMessage()); + } catch (Exception e) { + logger.error("Generic Exception: ", e); + migrationresult.setError("Exception: " + e.getMessage()); } finally { if (connectionAmbaridb != null) try { connectionAmbaridb.close(); } catch (SQLException e) { logger.error("Exception in closing the connection :", e); + migrationresult.setError("Exception in closing the connection: " + e.getMessage()); } + getResourceManager(view).update(migrationresult, jobid); } //deleteing the temprary files that are created while execution hiveHistoryQueryImpl.deleteFileQueryhql(ConfigurationCheckImplementation.getHomeDir()); @@ -274,4 +286,4 @@ public class HiveHistoryMigrationUtility { } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryQueryMigrationImplementation.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryQueryMigrationImplementation.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryQueryMigrationImplementation.java index 33d57b4..1a5b742 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryQueryMigrationImplementation.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/historyquery/HiveHistoryQueryMigrationImplementation.java @@ -260,7 +260,7 @@ public class HiveHistoryQueryMigrationImplementation { } - public ArrayList<HiveModel> fetchFromHue(String username, String startdate, String endtime, Connection connection, QuerySetHueDB huedatabase) throws ClassNotFoundException, SQLException { + public ArrayList<HiveModel> fetchFromHue(String username, String startdate, String endtime, Connection connection, QuerySetHueDB huedatabase) throws ClassNotFoundException, SQLException, IOException { int id = 0; int i = 0; ArrayList<HiveModel> hiveArrayList = new ArrayList<HiveModel>(); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationImplementation.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationImplementation.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationImplementation.java index c08455d..af493ba 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationImplementation.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationImplementation.java @@ -351,7 +351,7 @@ public class HiveSavedQueryMigrationImplementation { } public ArrayList<HiveModel> fetchFromHuedb(String username, String startdate, String endtime, Connection connection, QuerySetHueDb huedatabase) - throws ClassNotFoundException, IOException { + throws ClassNotFoundException, SQLException, IOException { int id = 0; int i = 0; String[] query = new String[100]; @@ -474,9 +474,11 @@ public class HiveSavedQueryMigrationImplementation { hiveArrayList.add(hivepojo); i++; } + connection.commit(); } catch (SQLException e2) { e2.printStackTrace(); + connection.rollback(); } finally { http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationUtility.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationUtility.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationUtility.java index 5fc171c..ddfff5e 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationUtility.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/hive/savedquery/HiveSavedQueryMigrationUtility.java @@ -73,7 +73,7 @@ public class HiveSavedQueryMigrationUtility { Connection connectionAmbaridb = null; Connection connectionHuedb = null; - int i = 0, j=0; + int i = 0, j = 0; String sequenceName = ""; logger.info("-------------------------------------"); @@ -117,7 +117,7 @@ public class HiveSavedQueryMigrationUtility { logger.info("Ambari database is Oracle"); } - int maxCountforFileResourceAmbaridb=0, maxCountforUdfAmbaridb=0, maxCountforSavequeryAmbaridb = 0; + int maxCountforFileResourceAmbaridb = 0, maxCountforUdfAmbaridb = 0, maxCountforSavequeryAmbaridb = 0; String time = null; Long epochtime = null; String dirNameforHiveSavedquery; @@ -128,7 +128,7 @@ public class HiveSavedQueryMigrationUtility { try { String[] usernames = username.split(","); int totalQueries = 0; - for(int l=0; l<usernames.length; l++) { + for (int l = 0; l < usernames.length; l++) { connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection(); /* fetching connection to hue DB */ logger.info("Hue database connection successful"); @@ -148,7 +148,7 @@ public class HiveSavedQueryMigrationUtility { if (dbpojoHiveSavedQuery.size() == 0) /* if no data has been fetched from hue db according to search criteria */ { - logger.info("No queries has been selected for the user " + username + " between dates: " + startDate +" - "+endDate); + logger.info("No queries has been selected for the user " + username + " between dates: " + startDate + " - " + endDate); } else { connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();/* connecting to ambari DB */ @@ -191,7 +191,7 @@ public class HiveSavedQueryMigrationUtility { time = hivesavedqueryimpl.getTime();/* getting system time */ - if(usernames[l].equals("all")) { + if (usernames[l].equals("all")) { username = dbpojoHiveSavedQuery.get(i).getOwnerName(); } @@ -251,7 +251,7 @@ public class HiveSavedQueryMigrationUtility { } logger.info("Migration Completed"); migrationresult.setFlag(1); - if(totalQueries==0) { + if (totalQueries == 0) { migrationresult.setNumberOfQueryTransfered(0); migrationresult.setTotalNoQuery(0); } else { @@ -261,8 +261,8 @@ public class HiveSavedQueryMigrationUtility { } getResourceManager(view).update(migrationresult, jobid); } catch (SQLException e) { - logger.error("SQL exception: ", e); + migrationresult.setError("SQL Exception: " + e.getMessage()); try { connectionAmbaridb.rollback(); logger.info("roll back done"); @@ -272,19 +272,28 @@ public class HiveSavedQueryMigrationUtility { } } catch (ClassNotFoundException e1) { logger.error("Class not found : ", e1); + migrationresult.setError("Class not found Exception: " + e1.getMessage()); } catch (ParseException e) { logger.error("ParseException: ", e); + migrationresult.setError("Parse Exception: " + e.getMessage()); } catch (URISyntaxException e) { logger.error("URISyntaxException: ", e); + migrationresult.setError("URI Syntax Exception: " + e.getMessage()); } catch (PropertyVetoException e) { logger.error("PropertyVetoException:", e); + migrationresult.setError("Property Veto Exception: " + e.getMessage()); + } catch (Exception e) { + logger.error("Generic Exception: ", e); + migrationresult.setError("Exception: " + e.getMessage()); } finally { if (null != connectionAmbaridb) try { connectionAmbaridb.close(); } catch (SQLException e) { logger.error("Error in connection close", e); + migrationresult.setError("Error in closing connection: " + e.getMessage()); } + getResourceManager(view).update(migrationresult, jobid); } @@ -308,8 +317,4 @@ public class HiveSavedQueryMigrationUtility { return model; } -} - - - - +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationImplementation.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationImplementation.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationImplementation.java index 1cb0471..9767deb 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationImplementation.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationImplementation.java @@ -261,7 +261,7 @@ public class PigJobMigrationImplementation { return strDate; } - public ArrayList<PigModel> fetchFromHueDB(String username, String startdate, String endtime, Connection connection, QuerySetHueDb huedatabase) throws ClassNotFoundException, IOException { + public ArrayList<PigModel> fetchFromHueDB(String username, String startdate, String endtime, Connection connection, QuerySetHueDb huedatabase) throws ClassNotFoundException, SQLException, IOException { int id = 0; int i = 0; String[] query = new String[100]; @@ -359,10 +359,11 @@ public class PigJobMigrationImplementation { i++; } - + connection.commit(); } catch (SQLException e) { logger.error("Sqlexception: ", e); + connection.rollback(); } finally { try { if (connection != null) http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationUtility.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationUtility.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationUtility.java index 7bd36ea..b935bad 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationUtility.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigjob/PigJobMigrationUtility.java @@ -1,230 +1,239 @@ - /** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * <p/> - * http://www.apache.org/licenses/LICENSE-2.0 - * <p/> - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - - package org.apache.ambari.view.huetoambarimigration.migration.pig.pigjob; - - import java.beans.PropertyVetoException; - import java.io.IOException; - import java.net.URISyntaxException; - import java.sql.Connection; - import java.sql.SQLException; - import java.text.ParseException; - import java.util.ArrayList; - - import org.apache.ambari.view.ViewContext; - - import org.apache.ambari.view.huetoambarimigration.persistence.utils.ItemNotFound; - import org.apache.ambari.view.huetoambarimigration.resources.PersonalCRUDResourceManager; - import org.apache.ambari.view.huetoambarimigration.resources.scripts.MigrationResourceManager; - import org.apache.ambari.view.huetoambarimigration.resources.scripts.models.MigrationResponse; - import org.apache.ambari.view.huetoambarimigration.resources.scripts.models.PigModel; - import org.apache.log4j.Logger; - - import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase; - import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase; - import org.apache.ambari.view.huetoambarimigration.datasource.queryset.huequeryset.pig.jobqueryset.*; - import org.apache.ambari.view.huetoambarimigration.datasource.queryset.ambariqueryset.pig.jobqueryset.*; - - public class PigJobMigrationUtility { - - protected MigrationResourceManager resourceManager = null; - - public synchronized PersonalCRUDResourceManager<MigrationResponse> getResourceManager(ViewContext view) { - if (resourceManager == null) { - resourceManager = new MigrationResourceManager(view); - } - return resourceManager; +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * <p/> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p/> + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +package org.apache.ambari.view.huetoambarimigration.migration.pig.pigjob; + +import java.beans.PropertyVetoException; +import java.io.IOException; +import java.net.URISyntaxException; +import java.sql.Connection; +import java.sql.SQLException; +import java.text.ParseException; +import java.util.ArrayList; + +import org.apache.ambari.view.ViewContext; + +import org.apache.ambari.view.huetoambarimigration.persistence.utils.ItemNotFound; +import org.apache.ambari.view.huetoambarimigration.resources.PersonalCRUDResourceManager; +import org.apache.ambari.view.huetoambarimigration.resources.scripts.MigrationResourceManager; +import org.apache.ambari.view.huetoambarimigration.resources.scripts.models.MigrationResponse; +import org.apache.ambari.view.huetoambarimigration.resources.scripts.models.PigModel; +import org.apache.log4j.Logger; + +import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase; +import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase; +import org.apache.ambari.view.huetoambarimigration.datasource.queryset.huequeryset.pig.jobqueryset.*; +import org.apache.ambari.view.huetoambarimigration.datasource.queryset.ambariqueryset.pig.jobqueryset.*; + +public class PigJobMigrationUtility { + + protected MigrationResourceManager resourceManager = null; + + public synchronized PersonalCRUDResourceManager<MigrationResponse> getResourceManager(ViewContext view) { + if (resourceManager == null) { + resourceManager = new MigrationResourceManager(view); } + return resourceManager; + } - public void pigJobMigration(String username, String instance, String startDate, String endDate, ViewContext view, MigrationResponse migrationresult, String jobid) throws IOException, ItemNotFound { + public void pigJobMigration(String username, String instance, String startDate, String endDate, ViewContext view, MigrationResponse migrationresult, String jobid) throws IOException, ItemNotFound { - long startTime = System.currentTimeMillis(); + long startTime = System.currentTimeMillis(); - final Logger logger = Logger.getLogger(PigJobMigrationUtility.class); - Connection connectionHuedb = null; - Connection connectionAmbaridb = null; + final Logger logger = Logger.getLogger(PigJobMigrationUtility.class); + Connection connectionHuedb = null; + Connection connectionAmbaridb = null; - logger.info("------------------------------"); - logger.info("pig Jobs Migration started"); - logger.info("------------------------------"); - logger.info("start date: " + startDate); - logger.info("enddate date: " + endDate); - logger.info("instance is: " + username); - logger.info("hue username is : " + instance); + logger.info("------------------------------"); + logger.info("pig Jobs Migration started"); + logger.info("------------------------------"); + logger.info("start date: " + startDate); + logger.info("enddate date: " + endDate); + logger.info("instance is: " + username); + logger.info("hue username is : " + instance); - PigJobMigrationImplementation pigjobimpl = new PigJobMigrationImplementation();// creating the implementation object + PigJobMigrationImplementation pigjobimpl = new PigJobMigrationImplementation();// creating the implementation object - QuerySetHueDb huedatabase = null; + QuerySetHueDb huedatabase = null; - if (view.getProperties().get("huedrivername").contains("mysql")) { - huedatabase = new MysqlQuerySetHueDb(); - } else if (view.getProperties().get("huedrivername").contains("postgresql")) { - huedatabase = new PostgressQuerySetHueDb(); - } else if (view.getProperties().get("huedrivername").contains("sqlite")) { - huedatabase = new SqliteQuerySetHueDb(); - } else if (view.getProperties().get("huedrivername").contains("oracle")) { - huedatabase = new OracleQuerySetHueDb(); - } + if (view.getProperties().get("huedrivername").contains("mysql")) { + huedatabase = new MysqlQuerySetHueDb(); + } else if (view.getProperties().get("huedrivername").contains("postgresql")) { + huedatabase = new PostgressQuerySetHueDb(); + } else if (view.getProperties().get("huedrivername").contains("sqlite")) { + huedatabase = new SqliteQuerySetHueDb(); + } else if (view.getProperties().get("huedrivername").contains("oracle")) { + huedatabase = new OracleQuerySetHueDb(); + } - QuerySetAmbariDB ambaridatabase = null; + QuerySetAmbariDB ambaridatabase = null; - if (view.getProperties().get("ambaridrivername").contains("mysql")) { - ambaridatabase = new MysqlQuerySetAmbariDB(); - } else if (view.getProperties().get("ambaridrivername").contains("postgresql")) { - ambaridatabase = new PostgressQuerySetAmbariDB(); - } else if (view.getProperties().get("ambaridrivername").contains("oracle")) { - ambaridatabase = new OracleQuerySetAmbariDB(); - } - int maxCountforPigScript = 0, i = 0; + if (view.getProperties().get("ambaridrivername").contains("mysql")) { + ambaridatabase = new MysqlQuerySetAmbariDB(); + } else if (view.getProperties().get("ambaridrivername").contains("postgresql")) { + ambaridatabase = new PostgressQuerySetAmbariDB(); + } else if (view.getProperties().get("ambaridrivername").contains("oracle")) { + ambaridatabase = new OracleQuerySetAmbariDB(); + } + int maxCountforPigScript = 0, i = 0; - String time = null, timeIndorder = null; - Long epochtime = null; - String pigJobDirName; - ArrayList<PigModel> pigJobDbPojo = new ArrayList<PigModel>(); + String time = null, timeIndorder = null; + Long epochtime = null; + String pigJobDirName; + ArrayList<PigModel> pigJobDbPojo = new ArrayList<PigModel>(); - try { + try { - String[] usernames = username.split(","); - int totalQueries = 0; - for(int k=0; k<usernames.length; k++) { + String[] usernames = username.split(","); + int totalQueries = 0; + for (int k = 0; k < usernames.length; k++) { - connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connecting to hue database - username = usernames[k]; - migrationresult.setProgressPercentage(0); - logger.info("Migration started for user " + username); - pigJobDbPojo = pigjobimpl.fetchFromHueDB(username, startDate, endDate, connectionHuedb, huedatabase);// fetching the PigJobs details from hue - totalQueries += pigJobDbPojo.size(); - for (int j = 0; j < pigJobDbPojo.size(); j++) { - logger.info("the query fetched from hue=" + pigJobDbPojo.get(i).getScript()); + connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connecting to hue database + username = usernames[k]; + migrationresult.setProgressPercentage(0); + logger.info("Migration started for user " + username); + pigJobDbPojo = pigjobimpl.fetchFromHueDB(username, startDate, endDate, connectionHuedb, huedatabase);// fetching the PigJobs details from hue + totalQueries += pigJobDbPojo.size(); + for (int j = 0; j < pigJobDbPojo.size(); j++) { + logger.info("the query fetched from hue=" + pigJobDbPojo.get(i).getScript()); - } + } /*No pig Job details has been fetched accordring to search criteria*/ - if (pigJobDbPojo.size() == 0) { + if (pigJobDbPojo.size() == 0) { - logger.info("No queries has been selected for the user " + username + " between dates: " + startDate +" - "+endDate); - } else { + logger.info("No queries has been selected for the user " + username + " between dates: " + startDate + " - " + endDate); + } else { - connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection(); - connectionAmbaridb.setAutoCommit(false); + connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection(); + connectionAmbaridb.setAutoCommit(false); - int fetchPigTablenameInstance = pigjobimpl.fetchInstanceTablename(connectionAmbaridb, instance, ambaridatabase); - int sequence = pigjobimpl.fetchSequenceno(connectionAmbaridb, fetchPigTablenameInstance, ambaridatabase); + int fetchPigTablenameInstance = pigjobimpl.fetchInstanceTablename(connectionAmbaridb, instance, ambaridatabase); + int sequence = pigjobimpl.fetchSequenceno(connectionAmbaridb, fetchPigTablenameInstance, ambaridatabase); - for (i = 0; i < pigJobDbPojo.size(); i++) { + for (i = 0; i < pigJobDbPojo.size(); i++) { - float calc = ((float) (i + 1)) / pigJobDbPojo.size() * 100; - int progressPercentage = Math.round(calc); + float calc = ((float) (i + 1)) / pigJobDbPojo.size() * 100; + int progressPercentage = Math.round(calc); - migrationresult.setProgressPercentage(progressPercentage); - migrationresult.setNumberOfQueryTransfered(i+1); - getResourceManager(view).update(migrationresult, jobid); + migrationresult.setProgressPercentage(progressPercentage); + migrationresult.setNumberOfQueryTransfered(i + 1); + getResourceManager(view).update(migrationresult, jobid); - logger.info("Loop No." + (i + 1)); - logger.info("________________"); - logger.info("the title of script " + pigJobDbPojo.get(i).getTitle()); + logger.info("Loop No." + (i + 1)); + logger.info("________________"); + logger.info("the title of script " + pigJobDbPojo.get(i).getTitle()); - maxCountforPigScript = i + sequence + 1; + maxCountforPigScript = i + sequence + 1; - time = pigjobimpl.getTime(); - timeIndorder = pigjobimpl.getTimeInorder(); - epochtime = pigjobimpl.getEpochTime(); + time = pigjobimpl.getTime(); + timeIndorder = pigjobimpl.getTimeInorder(); + epochtime = pigjobimpl.getEpochTime(); - if(usernames[k].equals("all")) { - username = pigJobDbPojo.get(i).getUserName(); - } + if (usernames[k].equals("all")) { + username = pigJobDbPojo.get(i).getUserName(); + } - pigJobDirName = "/user/" + username + "/pig/jobs/" + pigJobDbPojo.get(i).getTitle() + "_" + time + "/"; + pigJobDirName = "/user/" + username + "/pig/jobs/" + pigJobDbPojo.get(i).getTitle() + "_" + time + "/"; - pigjobimpl.insertRowPigJob(pigJobDirName, maxCountforPigScript, time, timeIndorder, epochtime, pigJobDbPojo.get(i).getTitle(), connectionAmbaridb, fetchPigTablenameInstance, pigJobDbPojo.get(i).getStatus(), instance, i, ambaridatabase, username); + pigjobimpl.insertRowPigJob(pigJobDirName, maxCountforPigScript, time, timeIndorder, epochtime, pigJobDbPojo.get(i).getTitle(), connectionAmbaridb, fetchPigTablenameInstance, pigJobDbPojo.get(i).getStatus(), instance, i, ambaridatabase, username); - if (view.getProperties().get("KerberoseEnabled").equals("y")) { - pigjobimpl.createDirPigJobSecured(pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), username, view.getProperties().get("PrincipalUserName")); - pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/script.pig", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username, view.getProperties().get("PrincipalUserName")); - pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/stderr", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username, view.getProperties().get("PrincipalUserName")); - pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/stdout", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username, view.getProperties().get("PrincipalUserName")); + if (view.getProperties().get("KerberoseEnabled").equals("y")) { + pigjobimpl.createDirPigJobSecured(pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), username, view.getProperties().get("PrincipalUserName")); + pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/script.pig", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username, view.getProperties().get("PrincipalUserName")); + pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/stderr", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username, view.getProperties().get("PrincipalUserName")); + pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/stdout", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username, view.getProperties().get("PrincipalUserName")); - } else { + } else { - pigjobimpl.createDirPigJob(pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), username); - pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/script.pig", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username); - pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/stderr", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username); - pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/stdout", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username); + pigjobimpl.createDirPigJob(pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), username); + pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/script.pig", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username); + pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/stderr", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username); + pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/stdout", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"), username); - } + } - logger.info(pigJobDbPojo.get(i).getTitle() + "has been migrated to Ambari"); + logger.info(pigJobDbPojo.get(i).getTitle() + "has been migrated to Ambari"); - } - pigjobimpl.updateSequenceno(connectionAmbaridb, maxCountforPigScript, fetchPigTablenameInstance, ambaridatabase); - connectionAmbaridb.commit(); } - logger.info("Migration completed for user " + username); + pigjobimpl.updateSequenceno(connectionAmbaridb, maxCountforPigScript, fetchPigTablenameInstance, ambaridatabase); + connectionAmbaridb.commit(); } - migrationresult.setFlag(1); - if(totalQueries==0) { - migrationresult.setNumberOfQueryTransfered(0); - migrationresult.setTotalNoQuery(0); - } else { - migrationresult.setNumberOfQueryTransfered(totalQueries); - migrationresult.setTotalNoQuery(totalQueries); - migrationresult.setProgressPercentage(100); - } - getResourceManager(view).update(migrationresult, jobid); - } catch (SQLException e) { - logger.error("sql exception in ambari database:", e); + logger.info("Migration completed for user " + username); + } + migrationresult.setFlag(1); + if (totalQueries == 0) { + migrationresult.setNumberOfQueryTransfered(0); + migrationresult.setTotalNoQuery(0); + } else { + migrationresult.setNumberOfQueryTransfered(totalQueries); + migrationresult.setTotalNoQuery(totalQueries); + migrationresult.setProgressPercentage(100); + } + getResourceManager(view).update(migrationresult, jobid); + } catch (SQLException e) { + logger.error("sql exception in ambari database:", e); + migrationresult.setError("SQL Exception: " + e.getMessage()); + try { + connectionAmbaridb.rollback(); + logger.info("roll back done"); + } catch (SQLException e1) { + logger.error("roll back exception:", e1); + } + } catch (ClassNotFoundException e2) { + logger.error("class not found exception:", e2); + migrationresult.setError("Class Not Found Exception: " + e2.getMessage()); + } catch (ParseException e) { + logger.error("ParseException: ", e); + migrationresult.setError("ParseException: " + e.getMessage()); + } catch (URISyntaxException e) { + logger.error("URISyntaxException", e); + migrationresult.setError("URI Syntax Exception: " + e.getMessage()); + } catch (PropertyVetoException e) { + logger.error("PropertyVetoException", e); + migrationresult.setError("Property Veto Exception: " + e.getMessage()); + } catch (Exception e) { + logger.error("Generic Exception: ", e); + migrationresult.setError("Exception: " + e.getMessage()); + } finally { + if (null != connectionAmbaridb) try { - connectionAmbaridb.rollback(); - logger.info("roll back done"); - } catch (SQLException e1) { - logger.error("roll back exception:", e1); + connectionAmbaridb.close(); + } catch (SQLException e) { + logger.error("connection closing exception ", e); + migrationresult.setError("Error closing connection: " + e.getMessage()); } - } catch (ClassNotFoundException e2) { - logger.error("class not found exception:", e2); - } catch (ParseException e) { - logger.error("ParseException: ", e); - } catch (URISyntaxException e) { - logger.error("URISyntaxException", e); - } catch (PropertyVetoException e) { - logger.error("PropertyVetoException", e); - } finally { - if (null != connectionAmbaridb) - try { - connectionAmbaridb.close(); - } catch (SQLException e) { - logger.error("connection closing exception ", e); - } - } - - logger.info("------------------------------"); - logger.info("pig Job Migration End"); - logger.info("------------------------------"); + getResourceManager(view).update(migrationresult, jobid); + } - long stopTime = System.currentTimeMillis(); - long elapsedTime = stopTime - startTime; + logger.info("------------------------------"); + logger.info("pig Job Migration End"); + logger.info("------------------------------"); - migrationresult.setJobtype("hivehistoryquerymigration"); - migrationresult.setTotalTimeTaken(String.valueOf(elapsedTime)); - getResourceManager(view).update(migrationresult, jobid); + long stopTime = System.currentTimeMillis(); + long elapsedTime = stopTime - startTime; + migrationresult.setJobtype("pigjobmigration"); + migrationresult.setTotalTimeTaken(String.valueOf(elapsedTime)); + getResourceManager(view).update(migrationresult, jobid); - } } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationImplementation.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationImplementation.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationImplementation.java index 82461ca..1325a45 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationImplementation.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationImplementation.java @@ -287,7 +287,7 @@ public class PigScriptMigrationImplementation { } - public ArrayList<PigModel> fetchFromHueDatabase(String username, String startdate, String endtime, Connection connection, QuerySetHueDb huedatabase) throws ClassNotFoundException, IOException { + public ArrayList<PigModel> fetchFromHueDatabase(String username, String startdate, String endtime, Connection connection, QuerySetHueDb huedatabase) throws ClassNotFoundException, SQLException, IOException { int id = 0; int i = 0; ResultSet rs1 = null; @@ -370,10 +370,11 @@ public class PigScriptMigrationImplementation { pigArrayList.add(pojopig); i++; } - + connection.commit(); } catch (SQLException e) { logger.error("SQLException", e); + connection.rollback(); } finally { try { if (connection != null) http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationUtility.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationUtility.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationUtility.java index 5e9f0d1..8ed13fb 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationUtility.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigscript/PigScriptMigrationUtility.java @@ -110,7 +110,7 @@ public class PigScriptMigrationUtility { try { String[] usernames = username.split(","); int totalQueries = 0; - for(int k=0; k<usernames.length; k++) { + for (int k = 0; k < usernames.length; k++) { connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connection to Hue DB username = usernames[k]; migrationresult.setProgressPercentage(0); @@ -128,7 +128,7 @@ public class PigScriptMigrationUtility { /* If No pig Script has been fetched from Hue db according to our search criteria*/ if (dbpojoPigSavedscript.size() == 0) { - logger.info("No queries has been selected for the user " + username + " between dates: " + startDate +" - "+endDate); + logger.info("No queries has been selected for the user " + username + " between dates: " + startDate + " - " + endDate); } else { connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();// connecting to ambari db @@ -148,7 +148,7 @@ public class PigScriptMigrationUtility { float calc = ((float) (i + 1)) / dbpojoPigSavedscript.size() * 100; int progressPercentage = Math.round(calc); migrationresult.setProgressPercentage(progressPercentage); - migrationresult.setNumberOfQueryTransfered(i+1); + migrationresult.setNumberOfQueryTransfered(i + 1); getResourceManager(view).update(migrationresult, jobid); logger.info("Loop No." + (i + 1)); @@ -163,7 +163,7 @@ public class PigScriptMigrationUtility { maxcountforpigsavedscript = i + sequence + 1; - if(usernames[k].equals("all")) { + if (usernames[k].equals("all")) { username = dbpojoPigSavedscript.get(i).getUserName(); } @@ -200,7 +200,7 @@ public class PigScriptMigrationUtility { } logger.info("Migration Completed"); migrationresult.setFlag(1); - if(totalQueries==0) { + if (totalQueries == 0) { migrationresult.setNumberOfQueryTransfered(0); migrationresult.setTotalNoQuery(0); } else { @@ -211,34 +211,44 @@ public class PigScriptMigrationUtility { getResourceManager(view).update(migrationresult, jobid); } catch (SQLException e) { logger.error("Sql exception in ambari database", e); + migrationresult.setError("SQL Exception: " + e.getMessage()); try { connectionAmbaridb.rollback(); logger.info("rollback done"); } catch (SQLException e1) { - logger.error("Sql exception while doing roll back", e); + logger.error("Sql exception while doing roll back", e1); } } catch (ClassNotFoundException e2) { logger.error("class not found exception", e2); + migrationresult.setError("Class Not Found Exception: " + e2.getMessage()); } catch (ParseException e) { logger.error("ParseException: ", e); + migrationresult.setError("Parse Exception: " + e.getMessage()); } catch (PropertyVetoException e) { logger.error("PropertyVetoException: ", e); + migrationresult.setError("Property Veto Exception: " + e.getMessage()); } catch (URISyntaxException e) { e.printStackTrace(); + migrationresult.setError("URISyntaxException: " + e.getMessage()); + } catch (Exception e) { + logger.error("Generic Exception: ", e); + migrationresult.setError("Exception: " + e.getMessage()); } finally { if (null != connectionAmbaridb) try { connectionAmbaridb.close(); } catch (SQLException e) { logger.error("connection close exception: ", e); + migrationresult.setError("Error Closing Connection: " + e.getMessage()); } + getResourceManager(view).update(migrationresult, jobid); } long stopTime = System.currentTimeMillis(); long elapsedTime = stopTime - startTime; - migrationresult.setJobtype("hivehistoryquerymigration"); + migrationresult.setJobtype("pigsavedscriptmigration"); migrationresult.setTotalTimeTaken(String.valueOf(elapsedTime)); getResourceManager(view).update(migrationresult, jobid); @@ -249,5 +259,4 @@ public class PigScriptMigrationUtility { } - -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationImplementation.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationImplementation.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationImplementation.java index a7728a8..351d5e1 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationImplementation.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationImplementation.java @@ -125,7 +125,7 @@ public class PigUdfMigrationImplementation { } - public ArrayList<PigModel> fetchFromHueDatabase(String username, Connection connection, QuerySet huedatabase) throws ClassNotFoundException, IOException { + public ArrayList<PigModel> fetchFromHueDatabase(String username, Connection connection, QuerySet huedatabase) throws ClassNotFoundException, SQLException, IOException { int id = 0; int i = 0; ResultSet rs1; @@ -178,10 +178,11 @@ public class PigUdfMigrationImplementation { pigArrayList.add(pojopig); i++; } - + connection.commit(); } catch (SQLException e) { logger.error("SQLException", e); + connection.rollback(); } finally { try { if (connection != null) http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationUtility.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationUtility.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationUtility.java index d6a69fc..9656ad6 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationUtility.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/migration/pig/pigudf/PigUdfMigrationUtility.java @@ -45,191 +45,199 @@ import java.util.ArrayList; public class PigUdfMigrationUtility { - protected MigrationResourceManager resourceManager = null; + protected MigrationResourceManager resourceManager = null; - public synchronized PersonalCRUDResourceManager<MigrationResponse> getResourceManager(ViewContext view) { - if (resourceManager == null) { - resourceManager = new MigrationResourceManager(view); - } - return resourceManager; + public synchronized PersonalCRUDResourceManager<MigrationResponse> getResourceManager(ViewContext view) { + if (resourceManager == null) { + resourceManager = new MigrationResourceManager(view); } + return resourceManager; + } - public void pigUdfMigration(String username, String instance, ViewContext view, MigrationResponse migrationresult, String jobid) throws IOException, ItemNotFound { - - long startTime = System.currentTimeMillis(); - - final Logger logger = Logger.getLogger(PigUdfMigrationUtility.class); - Connection connectionHuedb = null; - Connection connectionAmbaridb = null; + public void pigUdfMigration(String username, String instance, ViewContext view, MigrationResponse migrationresult, String jobid) throws IOException, ItemNotFound { - logger.info("-------------------------------------"); - logger.info("pig udf Migration started"); - logger.info("-------------------------------------"); + long startTime = System.currentTimeMillis(); + final Logger logger = Logger.getLogger(PigUdfMigrationUtility.class); + Connection connectionHuedb = null; + Connection connectionAmbaridb = null; - int i = 0; - - logger.info("instance is: " + username); - logger.info("hue username is : " + instance); + logger.info("-------------------------------------"); + logger.info("pig udf Migration started"); + logger.info("-------------------------------------"); - //Reading the configuration file - PigUdfMigrationImplementation pigudfmigration = new PigUdfMigrationImplementation(); - QuerySet huedatabase = null; + int i = 0; - if (view.getProperties().get("huedrivername").contains("mysql")) { - huedatabase = new MysqlQuerySet(); - } else if (view.getProperties().get("huedrivername").contains("postgresql")) { - huedatabase = new PostgressQuerySet(); - } else if (view.getProperties().get("huedrivername").contains("sqlite")) { + logger.info("instance is: " + username); + logger.info("hue username is : " + instance); - huedatabase = new SqliteQuerySet(); - } else if (view.getProperties().get("huedrivername").contains("oracle")) { - huedatabase = new OracleQuerySet(); - } + //Reading the configuration file + PigUdfMigrationImplementation pigudfmigration = new PigUdfMigrationImplementation(); - QuerySetAmbariDB ambaridatabase = null; + QuerySet huedatabase = null; + if (view.getProperties().get("huedrivername").contains("mysql")) { + huedatabase = new MysqlQuerySet(); + } else if (view.getProperties().get("huedrivername").contains("postgresql")) { + huedatabase = new PostgressQuerySet(); + } else if (view.getProperties().get("huedrivername").contains("sqlite")) { - if (view.getProperties().get("ambaridrivername").contains("mysql")) { - ambaridatabase = new MysqlQuerySetAmbariDB(); - } else if (view.getProperties().get("ambaridrivername").contains("postgresql")) { - ambaridatabase = new PostgressQuerySetAmbariDB(); - } else if (view.getProperties().get("ambaridrivername").contains("oracle")) { - ambaridatabase = new OracleQuerySetAmbariDB(); - } + huedatabase = new SqliteQuerySet(); + } else if (view.getProperties().get("huedrivername").contains("oracle")) { + huedatabase = new OracleQuerySet(); + } - int maxcountforpigudf = 0; - String dirNameForPigUdf = ""; - int pigInstanceTableId, sequence; + QuerySetAmbariDB ambaridatabase = null; - ArrayList<PigModel> dbpojoPigUdf = new ArrayList<PigModel>(); - try { - String[] usernames = username.split(","); - int totalQueries = 0; - for(int k=0; k<usernames.length; k++) { - connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connection to Hue DB - username = usernames[k]; - migrationresult.setProgressPercentage(0); - logger.info("Migration started for user " + username); - dbpojoPigUdf = pigudfmigration.fetchFromHueDatabase(username, connectionHuedb, huedatabase);// Fetching pig script details from Hue DB - totalQueries += dbpojoPigUdf.size(); + if (view.getProperties().get("ambaridrivername").contains("mysql")) { + ambaridatabase = new MysqlQuerySetAmbariDB(); + } else if (view.getProperties().get("ambaridrivername").contains("postgresql")) { + ambaridatabase = new PostgressQuerySetAmbariDB(); + } else if (view.getProperties().get("ambaridrivername").contains("oracle")) { + ambaridatabase = new OracleQuerySetAmbariDB(); + } - for (int j = 0; j < dbpojoPigUdf.size(); j++) { - logger.info("jar fetched from hue=" + dbpojoPigUdf.get(j).getFileName()); + int maxcountforpigudf = 0; + String dirNameForPigUdf = ""; + int pigInstanceTableId, sequence; - } + ArrayList<PigModel> dbpojoPigUdf = new ArrayList<PigModel>(); + try { + String[] usernames = username.split(","); + int totalQueries = 0; + for (int k = 0; k < usernames.length; k++) { + connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connection to Hue DB + username = usernames[k]; + migrationresult.setProgressPercentage(0); + logger.info("Migration started for user " + username); + dbpojoPigUdf = pigudfmigration.fetchFromHueDatabase(username, connectionHuedb, huedatabase);// Fetching pig script details from Hue DB + totalQueries += dbpojoPigUdf.size(); - /* If No pig Script has been fetched from Hue db according to our search criteria*/ - if (dbpojoPigUdf.size() == 0) { + for (int j = 0; j < dbpojoPigUdf.size(); j++) { + logger.info("jar fetched from hue=" + dbpojoPigUdf.get(j).getFileName()); - logger.info("No queries has been selected for the user " + username); - } else { + } - connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();// connecting to ambari db - connectionAmbaridb.setAutoCommit(false); - logger.info("loop will continue for " + dbpojoPigUdf.size() + "times"); + /* If No pig Script has been fetched from Hue db according to our search criteria*/ + if (dbpojoPigUdf.size() == 0) { - //for each pig udf found in Hue Database + logger.info("No queries has been selected for the user " + username); + } else { - pigInstanceTableId = pigudfmigration.fetchInstanceTablenamePigUdf(connectionAmbaridb, instance, ambaridatabase);// finding the table name in ambari from the given instance + connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();// connecting to ambari db + connectionAmbaridb.setAutoCommit(false); - sequence = pigudfmigration.fetchSequenceno(connectionAmbaridb, pigInstanceTableId, ambaridatabase); + logger.info("loop will continue for " + dbpojoPigUdf.size() + "times"); - for (i = 0; i < dbpojoPigUdf.size(); i++) { + //for each pig udf found in Hue Database + pigInstanceTableId = pigudfmigration.fetchInstanceTablenamePigUdf(connectionAmbaridb, instance, ambaridatabase);// finding the table name in ambari from the given instance - float calc = ((float) (i + 1)) / dbpojoPigUdf.size() * 100; - int progressPercentage = Math.round(calc); - migrationresult.setProgressPercentage(progressPercentage); - migrationresult.setNumberOfQueryTransfered(i + 1); - getResourceManager(view).update(migrationresult, jobid); + sequence = pigudfmigration.fetchSequenceno(connectionAmbaridb, pigInstanceTableId, ambaridatabase); - logger.info("Loop No." + (i + 1)); - logger.info("________________"); - logger.info("jar name: " + dbpojoPigUdf.get(i).getFileName()); + for (i = 0; i < dbpojoPigUdf.size(); i++) { - maxcountforpigudf = i + sequence + 1; + float calc = ((float) (i + 1)) / dbpojoPigUdf.size() * 100; + int progressPercentage = Math.round(calc); + migrationresult.setProgressPercentage(progressPercentage); + migrationresult.setNumberOfQueryTransfered(i + 1); + getResourceManager(view).update(migrationresult, jobid); - String ownerName = dbpojoPigUdf.get(i).getUserName(); - String filePath = dbpojoPigUdf.get(i).getUrl(); - String fileName = dbpojoPigUdf.get(i).getFileName(); - if(usernames[k].equals("all")) { - username = dbpojoPigUdf.get(i).getUserName(); - } - dirNameForPigUdf = "/user/" + username + "/pig/udf/"; - String ambariNameNodeUri = view.getProperties().get("namenode_URI_Ambari"); - String dirAndFileName = ambariNameNodeUri + dirNameForPigUdf + fileName; + logger.info("Loop No." + (i + 1)); + logger.info("________________"); + logger.info("jar name: " + dbpojoPigUdf.get(i).getFileName()); - if (view.getProperties().get("KerberoseEnabled").equals("y")) { - pigudfmigration.createDirPigUdfSecured(dirNameForPigUdf, ambariNameNodeUri, ownerName, view.getProperties().get("PrincipalUserName")); - pigudfmigration.copyFileBetweenHdfsSecured(filePath, dirNameForPigUdf, ambariNameNodeUri, ownerName, view.getProperties().get("PrincipalUserName")); - } else { - pigudfmigration.createDirPigUdf(dirNameForPigUdf, ambariNameNodeUri, ownerName); - pigudfmigration.copyFileBetweenHdfs(filePath, dirNameForPigUdf, ambariNameNodeUri, ownerName); - } + maxcountforpigudf = i + sequence + 1; - pigudfmigration.insertRowForPigUdf(maxcountforpigudf, dirAndFileName, fileName, connectionAmbaridb, pigInstanceTableId, ambaridatabase, ownerName); - logger.info(dbpojoPigUdf.get(i).getFileName() + "Migrated to Ambari"); - } - pigudfmigration.updateSequenceno(connectionAmbaridb, maxcountforpigudf, pigInstanceTableId, ambaridatabase); - connectionAmbaridb.commit(); - } - logger.info("Migration completed for user " + username); + String ownerName = dbpojoPigUdf.get(i).getUserName(); + String filePath = dbpojoPigUdf.get(i).getUrl(); + String fileName = dbpojoPigUdf.get(i).getFileName(); + if (usernames[k].equals("all")) { + username = dbpojoPigUdf.get(i).getUserName(); } - migrationresult.setFlag(1); - if(totalQueries==0) { - migrationresult.setNumberOfQueryTransfered(0); - migrationresult.setTotalNoQuery(0); + dirNameForPigUdf = "/user/" + username + "/pig/udf/"; + String ambariNameNodeUri = view.getProperties().get("namenode_URI_Ambari"); + String dirAndFileName = ambariNameNodeUri + dirNameForPigUdf + fileName; + + if (view.getProperties().get("KerberoseEnabled").equals("y")) { + pigudfmigration.createDirPigUdfSecured(dirNameForPigUdf, ambariNameNodeUri, ownerName, view.getProperties().get("PrincipalUserName")); + pigudfmigration.copyFileBetweenHdfsSecured(filePath, dirNameForPigUdf, ambariNameNodeUri, ownerName, view.getProperties().get("PrincipalUserName")); } else { - migrationresult.setNumberOfQueryTransfered(totalQueries); - migrationresult.setTotalNoQuery(totalQueries); - migrationresult.setProgressPercentage(100); + pigudfmigration.createDirPigUdf(dirNameForPigUdf, ambariNameNodeUri, ownerName); + pigudfmigration.copyFileBetweenHdfs(filePath, dirNameForPigUdf, ambariNameNodeUri, ownerName); } - getResourceManager(view).update(migrationresult, jobid); + + pigudfmigration.insertRowForPigUdf(maxcountforpigudf, dirAndFileName, fileName, connectionAmbaridb, pigInstanceTableId, ambaridatabase, ownerName); + logger.info(dbpojoPigUdf.get(i).getFileName() + "Migrated to Ambari"); + + } + pigudfmigration.updateSequenceno(connectionAmbaridb, maxcountforpigudf, pigInstanceTableId, ambaridatabase); + connectionAmbaridb.commit(); + } + logger.info("Migration completed for user " + username); + } + migrationresult.setFlag(1); + if (totalQueries == 0) { + migrationresult.setNumberOfQueryTransfered(0); + migrationresult.setTotalNoQuery(0); + } else { + migrationresult.setNumberOfQueryTransfered(totalQueries); + migrationresult.setTotalNoQuery(totalQueries); + migrationresult.setProgressPercentage(100); + } + getResourceManager(view).update(migrationresult, jobid); + } catch (SQLException e) { + logger.error("Sql exception in ambari database", e); + migrationresult.setError("SQL Exception: " + e.getMessage()); + try { + connectionAmbaridb.rollback(); + logger.info("rollback done"); + } catch (SQLException e1) { + logger.error("Sql exception while doing roll back", e1); + } + } catch (ClassNotFoundException e2) { + logger.error("class not found exception", e2); + migrationresult.setError("Class Not Found Exception: " + e2.getMessage()); + } catch (PropertyVetoException e) { + logger.error("PropertyVetoException: ", e); + migrationresult.setError("Property Veto Exception: " + e.getMessage()); + } catch (URISyntaxException e) { + e.printStackTrace(); + migrationresult.setError("URI Syntax Exception: " + e.getMessage()); + } catch (Exception e) { + logger.error("Generic Exception: ", e); + migrationresult.setError("Exception: " + e.getMessage()); + } finally { + if (null != connectionAmbaridb) + try { + connectionAmbaridb.close(); } catch (SQLException e) { - logger.error("Sql exception in ambari database", e); - try { - connectionAmbaridb.rollback(); - logger.info("rollback done"); - } catch (SQLException e1) { - logger.error("Sql exception while doing roll back", e); - } - } catch (ClassNotFoundException e2) { - logger.error("class not found exception", e2); - - } catch (PropertyVetoException e) { - logger.error("PropertyVetoException: ", e); - } catch (URISyntaxException e) { - e.printStackTrace(); - } finally { - if (null != connectionAmbaridb) - try { - connectionAmbaridb.close(); - } catch (SQLException e) { - logger.error("connection close exception: ", e); - } + logger.error("connection close exception: ", e); + migrationresult.setError("Error in closing connection: " + e.getMessage()); } + getResourceManager(view).update(migrationresult, jobid); + } - long stopTime = System.currentTimeMillis(); - long elapsedTime = stopTime - startTime; + long stopTime = System.currentTimeMillis(); + long elapsedTime = stopTime - startTime; - migrationresult.setJobtype("hivehistoryquerymigration"); - migrationresult.setTotalTimeTaken(String.valueOf(elapsedTime)); - getResourceManager(view).update(migrationresult, jobid); + migrationresult.setJobtype("pigudfmigration"); + migrationresult.setTotalTimeTaken(String.valueOf(elapsedTime)); + getResourceManager(view).update(migrationresult, jobid); - logger.info("----------------------------------"); - logger.info("pig udf Migration ends"); - logger.info("----------------------------------"); + logger.info("----------------------------------"); + logger.info("pig udf Migration ends"); + logger.info("----------------------------------"); - } + } -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/resources/scripts/models/MigrationResponse.java ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/resources/scripts/models/MigrationResponse.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/resources/scripts/models/MigrationResponse.java index 3581149..612f73b 100644 --- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/resources/scripts/models/MigrationResponse.java +++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/resources/scripts/models/MigrationResponse.java @@ -45,6 +45,7 @@ public class MigrationResponse implements Serializable,PersonalResource{ private String jobtype=""; private String isNoQuerySelected=""; private int flag; + private String error; public String getTotalTimeTaken() { return totalTimeTaken; @@ -144,4 +145,9 @@ public class MigrationResponse implements Serializable,PersonalResource{ public int getFlag() { return flag; } public void setFlag(int flag) { this.flag = flag; } + + public String getError() { return error; } + + public void setError(String error) { this.error = error; } + } http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/models/checkprogress.js ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/models/checkprogress.js b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/models/checkprogress.js index a65e367..877be99 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/models/checkprogress.js +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/models/checkprogress.js @@ -27,5 +27,6 @@ export default Model.extend({ totalTimeTaken: DS.attr('string'), jobtype: DS.attr('string'), isNoQuerySelected: DS.attr('string'), - flag: DS.attr('string') + flag: DS.attr('string'), + error: DS.attr('string') }); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-history.js ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-history.js b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-history.js index 52716f2..746049d 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-history.js +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-history.js @@ -97,10 +97,15 @@ export default Ember.Route.extend({ var progressPercentage = progress.get('progressPercentage'); var numberOfQueryTransfered = progress.get('numberOfQueryTransfered'); var flagForCompletion = parseInt(progress.get('flag')); + var error = progress.get('error'); console.log("the progress percentage is="+progressPercentage); console.log("flag status is "+flagForCompletion); + console.log("error is "+error); + if(error) { + control.set('error', error); + control.set('jobstatus', null); - if (flagForCompletion === 1) { + } else if (flagForCompletion === 1) { var totalNoQuery = progress.get('totalNoQuery'); var intanceName = progress.get('intanceName'); var userNameofhue = progress.get('userNameofhue'); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-saved-query.js ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-saved-query.js b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-saved-query.js index ed90469..43653e7 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-saved-query.js +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/hive-saved-query.js @@ -92,9 +92,15 @@ export default Ember.Route.extend({ var progressPercentage = progress.get('progressPercentage'); var numberOfQueryTransfered = progress.get('numberOfQueryTransfered'); var flagForCompletion = parseInt(progress.get('flag')); + var error = progress.get('error'); console.log("the progress percentage is="+progressPercentage); + console.log("flag status is "+flagForCompletion); + console.log("error is "+error); + if(error) { + control.set('error', error); + control.set('jobstatus', null); - if (flagForCompletion === 1) { + } else if (flagForCompletion === 1) { var totalNoQuery = progress.get('totalNoQuery'); var intanceName = progress.get('intanceName'); var userNameofhue = progress.get('userNameofhue'); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-job.js ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-job.js b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-job.js index 225f7ee..a5409da 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-job.js +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-job.js @@ -94,10 +94,15 @@ export default Ember.Route.extend({ var progressPercentage = progress.get('progressPercentage'); var numberOfQueryTransfered = progress.get('numberOfQueryTransfered'); var flagForCompletion = parseInt(progress.get('flag')); + var error = progress.get('error'); console.log("the progress percentage is="+progressPercentage); console.log("flag completion status is "+flagForCompletion); + console.log("error is "+error); + if(error) { + control.set('error', error); + control.set('jobstatus', null); - if (flagForCompletion === 1) { + } else if (flagForCompletion === 1) { var totalNoQuery = progress.get('totalNoQuery'); var intanceName = progress.get('intanceName'); var userNameofhue = progress.get('userNameofhue'); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-script.js ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-script.js b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-script.js index cc6c631..b1fa481 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-script.js +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-script.js @@ -94,9 +94,15 @@ export default Ember.Route.extend({ var progressPercentage = progress.get('progressPercentage'); var numberOfQueryTransfered = progress.get('numberOfQueryTransfered'); var flagForCompletion = parseInt(progress.get('flag')); + var error = progress.get('error'); console.log("the progress percentage is="+progressPercentage); + console.log("flag status is "+flagForCompletion); + console.log("error is "+error); + if(error) { + control.set('error', error); + control.set('jobstatus', null); - if (flagForCompletion === 1) { + } else if (flagForCompletion === 1) { var totalNoQuery = progress.get('totalNoQuery'); var intanceName = progress.get('intanceName'); var userNameofhue = progress.get('userNameofhue'); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-udf.js ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-udf.js b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-udf.js index 83e316f..0894702 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-udf.js +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/routes/home-page/pig-udf.js @@ -90,9 +90,15 @@ export default Ember.Route.extend({ var progressPercentage = progress.get('progressPercentage'); var numberOfQueryTransfered = progress.get('numberOfQueryTransfered'); var flagForCompletion = parseInt(progress.get('flag')); + var error = progress.get('error'); console.log("the progress percentage is="+progressPercentage); + console.log("flag status is "+flagForCompletion); + console.log("error is "+error); + if(error) { + control.set('error', error); + control.set('jobstatus', null); - if (flagForCompletion === 1) { + } else if (flagForCompletion === 1) { var totalNoQuery = progress.get('totalNoQuery'); var intanceName = progress.get('intanceName'); var userNameofhue = progress.get('userNameofhue'); http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-history.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-history.hbs b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-history.hbs index 7a0fd6c..4b63d68 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-history.hbs +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-history.hbs @@ -86,6 +86,14 @@ limitations under the License. </div> <div class="row"> <div class="col-sm-9"> + {{#if error}} + <h3>Error Occured during migration</h3> + <p><span class="alert-danger">{{error}}</span></p> + {{/if}} + </div> + </div> + <div class="row"> + <div class="col-sm-9"> {{#if completionStatus}} <h2>Migration Report </h2> http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-saved-query.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-saved-query.hbs b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-saved-query.hbs index 3b285e7..28963aa 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-saved-query.hbs +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/hive-saved-query.hbs @@ -86,6 +86,14 @@ limitations under the License. </div> <div class="row"> <div class="col-sm-9"> + {{#if error}} + <h3>Error Occured during migration</h3> + <p><span class="alert-danger">{{error}}</span></p> + {{/if}} + </div> + </div> + <div class="row"> + <div class="col-sm-9"> {{#if completionStatus}} <h2>Migration Report </h2> http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-job.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-job.hbs b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-job.hbs index b273995..1f5cce0 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-job.hbs +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-job.hbs @@ -87,6 +87,14 @@ limitations under the License. </div> <div class="row"> <div class="col-sm-9"> + {{#if error}} + <h3>Error Occured during migration</h3> + <p><span class="alert-danger">{{error}}</span></p> + {{/if}} + </div> + </div> + <div class="row"> + <div class="col-sm-9"> {{#if completionStatus}} <h2>Migration Report </h2> http://git-wip-us.apache.org/repos/asf/ambari/blob/4aa0f623/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-script.hbs ---------------------------------------------------------------------- diff --git a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-script.hbs b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-script.hbs index d88ab21..113ad6e 100644 --- a/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-script.hbs +++ b/contrib/views/hueambarimigration/src/main/resources/ui/hueambarimigration-view/app/templates/home-page/pig-script.hbs @@ -87,6 +87,14 @@ limitations under the License. </div> <div class="row"> <div class="col-sm-9"> + {{#if error}} + <h3>Error Occured during migration</h3> + <p><span class="alert-danger">{{error}}</span></p> + {{/if}} + </div> + </div> + <div class="row"> + <div class="col-sm-9"> {{#if completionStatus}} <h2>Migration Report </h2>