You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by jd...@apache.org on 2015/06/23 12:25:01 UTC

[13/51] [abbrv] incubator-lens git commit: LENS-478 : Add counter for DatabaseResourceService load errors (Yash Sharma via amareshwari)

LENS-478 : Add counter for DatabaseResourceService load errors (Yash Sharma via amareshwari)


Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/06e11557
Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/06e11557
Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/06e11557

Branch: refs/heads/current-release-line
Commit: 06e1155732f963c31c16aa4bf6b3278b6f144952
Parents: 70e4b92
Author: Yash Sharma <ya...@gmail.com>
Authored: Wed Jun 3 16:04:39 2015 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Wed Jun 3 16:04:39 2015 +0530

----------------------------------------------------------------------
 .../lens/server/api/metrics/MetricsService.java |  2 +
 .../lens/server/metrics/MetricsServiceImpl.java | 12 +++++
 .../server/session/DatabaseResourceService.java | 51 ++++++++++++++++++--
 3 files changed, 62 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/06e11557/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java b/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java
index ffde912..f7a23ab 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java
@@ -133,6 +133,8 @@ public interface MetricsService {
 
   String ACTIVE_SESSIONS = "active-sessions";
 
+  long getTotalDatabaseResourceLoadErrors();
+
   long getQueuedQueries();
 
   long getRunningQueries();

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/06e11557/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java
index 66beeed..9ae0d66 100644
--- a/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java
+++ b/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java
@@ -42,6 +42,7 @@ import org.apache.lens.server.api.session.SessionEvent;
 import org.apache.lens.server.api.session.SessionExpired;
 import org.apache.lens.server.api.session.SessionOpened;
 import org.apache.lens.server.api.session.SessionService;
+import org.apache.lens.server.session.DatabaseResourceService;
 
 import org.apache.hadoop.hive.conf.HiveConf;
 import org.apache.hive.service.AbstractService;
@@ -114,6 +115,9 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic
   /** The total cancelled queries. */
   private Counter totalCancelledQueries;
 
+  /** The total errors while loading database resources */
+  private Counter totalDatabaseResourceLoadErrors;
+
   /** The opened sessions */
   private Gauge<Integer> activeSessions;
 
@@ -334,6 +338,9 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic
         }
       });
 
+    totalDatabaseResourceLoadErrors = metricRegistry.counter(MetricRegistry.name(DatabaseResourceService.class,
+        DatabaseResourceService.LOAD_RESOURCES_ERRORS));
+
     totalAcceptedQueries = metricRegistry.counter(MetricRegistry.name(QueryExecutionService.class, "total-"
       + ACCEPTED_QUERIES));
 
@@ -486,6 +493,11 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic
   }
 
   @Override
+  public long getTotalDatabaseResourceLoadErrors() {
+    return totalDatabaseResourceLoadErrors.getCount();
+  }
+
+  @Override
   public long getQueuedQueries() {
     return queuedQueries.getValue();
   }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/06e11557/lens-server/src/main/java/org/apache/lens/server/session/DatabaseResourceService.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/session/DatabaseResourceService.java b/lens-server/src/main/java/org/apache/lens/server/session/DatabaseResourceService.java
index 608c679..2a5cce5 100644
--- a/lens-server/src/main/java/org/apache/lens/server/session/DatabaseResourceService.java
+++ b/lens-server/src/main/java/org/apache/lens/server/session/DatabaseResourceService.java
@@ -26,8 +26,10 @@ import java.net.URLClassLoader;
 import java.nio.charset.Charset;
 import java.util.*;
 
+import org.apache.lens.server.LensServices;
 import org.apache.lens.server.api.LensConfConstants;
 import org.apache.lens.server.api.error.LensException;
+import org.apache.lens.server.api.metrics.MetricsService;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -48,6 +50,36 @@ public class DatabaseResourceService extends AbstractService {
   private Map<String, ClassLoader> classLoaderCache;
   private Map<String, List<LensSessionImpl.ResourceEntry>> dbResEntryMap;
 
+  /**
+   * The metrics service.
+   */
+  private MetricsService metricsService;
+
+  /**
+   * The Constant LOAD_RESOURCES_ERRORS.
+   */
+  public static final String LOAD_RESOURCES_ERRORS = "total-load-resources-errors";
+
+  /**
+   * Incr counter.
+   *
+   * @param counter the counter
+   */
+  private void incrCounter(String counter) {
+    getMetrics().incrCounter(DatabaseResourceService.class, counter);
+  }
+
+  /**
+   * Gets counter value.
+   *
+   * @param counter the counter
+   */
+  private long getCounter(String counter) {
+    return getMetrics().getCounter(DatabaseResourceService.class, counter);
+  }
+
+
+
   public DatabaseResourceService(String name) {
     super(name);
   }
@@ -68,7 +100,8 @@ public class DatabaseResourceService extends AbstractService {
       loadDbResourceEntries();
       loadResources();
     } catch (LensException e) {
-      LOG.warn("Failed to load DB resource mapping, resources must be added explicitly to session");
+      incrCounter(LOAD_RESOURCES_ERRORS);
+      LOG.warn("Failed to load DB resource mapping, resources must be added explicitly to session.");
     }
   }
 
@@ -92,6 +125,7 @@ public class DatabaseResourceService extends AbstractService {
       Path resTopDirPath = new Path(resTopDir);
       serverFs = FileSystem.newInstance(resTopDirPath.toUri(), getHiveConf());
       if (!serverFs.exists(resTopDirPath)) {
+        incrCounter(LOAD_RESOURCES_ERRORS);
         LOG.warn("Database resource location does not exist - " + resTopDir + ". Database jars will not be available");
         return;
       }
@@ -190,15 +224,15 @@ public class DatabaseResourceService extends AbstractService {
 
   /**
    * Load DB specific resources
-   * @throws LensException
    */
-  public void loadResources() throws LensException {
+  public void loadResources() {
     for (String db : dbResEntryMap.keySet()) {
       try {
         createClassLoader(db);
         loadDBJars(db, dbResEntryMap.get(db), true);
         LOG.info("Loaded resources for db " + db + " resources: " + dbResEntryMap.get(db));
       } catch (LensException exc) {
+        incrCounter(LOAD_RESOURCES_ERRORS);
         LOG.warn("Failed to load resources for db " + db, exc);
         classLoaderCache.remove(db);
       }
@@ -245,6 +279,7 @@ public class DatabaseResourceService extends AbstractService {
         try {
           newUrls.add(new URL(res.getLocation()));
         } catch (MalformedURLException e) {
+          incrCounter(LOAD_RESOURCES_ERRORS);
           LOG.error("Invalid URL " + res.getLocation() + " adding to db " + database, e);
         }
       }
@@ -292,4 +327,14 @@ public class DatabaseResourceService extends AbstractService {
   public Collection<LensSessionImpl.ResourceEntry> getResourcesForDatabase(String database) {
     return dbResEntryMap.get(database);
   }
+
+  private MetricsService getMetrics() {
+    if (metricsService == null) {
+      metricsService = (MetricsService) LensServices.get().getService(MetricsService.NAME);
+      if (metricsService == null) {
+        throw new NullPointerException("Could not get metrics service");
+      }
+    }
+    return metricsService;
+  }
 }