LENS-479 : Add server state persisting error counter (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/fa83c481
Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/fa83c481
Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/fa83c481

Branch: refs/heads/current-release-line
Commit: fa83c481e5b20dfc798e7487380baa8f77a55b4f
Parents: 85da8c8
Author: Yash Sharma <[email protected]>
Authored: Wed Jun 3 15:46:13 2015 +0530
Committer: Amareshwari Sriramadasu <[email protected]>
Committed: Wed Jun 3 15:46:13 2015 +0530

----------------------------------------------------------------------
 .../lens/server/api/metrics/MetricsService.java |  2 +
 .../org/apache/lens/server/LensServices.java    | 42 ++++++++++++++++++++
 .../lens/server/metrics/MetricsServiceImpl.java | 19 +++++++--
 3 files changed, 59 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/fa83c481/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 9cfb65d..ffde912 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
@@ -149,6 +149,8 @@ public interface MetricsService {
 
   long getTotalFailedQueries();
 
+  long getTotalServerStatePersistenceErrors();
+
   /**
    * Publish report.
    */

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/fa83c481/lens-server/src/main/java/org/apache/lens/server/LensServices.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/LensServices.java 
b/lens-server/src/main/java/org/apache/lens/server/LensServices.java
index ab197ab..c27717f 100644
--- a/lens-server/src/main/java/org/apache/lens/server/LensServices.java
+++ b/lens-server/src/main/java/org/apache/lens/server/LensServices.java
@@ -98,6 +98,16 @@ public class LensServices extends CompositeService 
implements ServiceProvider {
   /** The snap shot interval. */
   private long snapShotInterval;
 
+  /**
+   * The metrics service.
+   */
+  private MetricsService metricsService;
+
+  /**
+   * The Constant SERVER_STATE_PERSISTENCE_ERRORS.
+   */
+  public static final String SERVER_STATE_PERSISTENCE_ERRORS = 
"total-server-state-persistence-errors";
+
   /** The service mode. */
   @Getter
   @Setter
@@ -116,6 +126,24 @@ public class LensServices extends CompositeService 
implements ServiceProvider {
   private final LogSegregationContext logSegregationContext;
 
   /**
+   * Incr counter.
+   *
+   * @param counter the counter
+   */
+  private void incrCounter(String counter) {
+    getMetricService().incrCounter(LensServices.class, counter);
+  }
+
+  /**
+   * Gets counter value.
+   *
+   * @param counter the counter
+   */
+  private long getCounter(String counter) {
+    return getMetricService().getCounter(LensServices.class, counter);
+  }
+
+  /**
    * The Enum SERVICE_MODE.
    */
   public enum SERVICE_MODE {
@@ -257,6 +285,7 @@ public class LensServices extends CompositeService 
implements ServiceProvider {
           persistLensServiceState();
           LOG.info("SnapShot of Lens Services created");
         } catch (IOException e) {
+          incrCounter(SERVER_STATE_PERSISTENCE_ERRORS);
           LOG.warn("Unable to persist lens server state", e);
         }
       }
@@ -326,6 +355,7 @@ public class LensServices extends CompositeService 
implements ServiceProvider {
               }
             }
             if (!persistenceFS.rename(serviceWritePath, servicePath)) {
+              incrCounter(SERVER_STATE_PERSISTENCE_ERRORS);
               LOG.error("Failed to persist " + service.getName() + " to [" + 
servicePath + "]");
             } else {
               LOG.info("Persisted service " + service.getName() + " to [" + 
servicePath + "]");
@@ -372,6 +402,7 @@ public class LensServices extends CompositeService 
implements ServiceProvider {
         persistenceFS.close();
         LOG.info("Persistence File system object close complete");
       } catch (IOException e) {
+        incrCounter(SERVER_STATE_PERSISTENCE_ERRORS);
         LOG.error("Could not persist server state", e);
         throw new IllegalStateException(e);
       } finally {
@@ -419,4 +450,15 @@ public class LensServices extends CompositeService 
implements ServiceProvider {
       throw new RuntimeException("Could not create error collection.", e);
     }
   }
+
+
+  private MetricsService getMetricService() {
+    if (metricsService == null) {
+      metricsService = (MetricsService) 
LensServices.get().getService(MetricsService.NAME);
+      if (metricsService == null) {
+        throw new NullPointerException("Could not get metrics service");
+      }
+    }
+    return metricsService;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/fa83c481/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 6e8b3a6..66beeed 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
@@ -96,6 +96,9 @@ public class MetricsServiceImpl extends AbstractService 
implements MetricsServic
   /** The total expired sessions*/
   private Counter totalExpiredSessions;
 
+  /** The total errors while persisting server state */
+  private Counter totalServerStatePersistenceErrors;
+
   /** The total accepted queries. */
   private Counter totalAcceptedQueries;
 
@@ -355,6 +358,9 @@ public class MetricsServiceImpl extends AbstractService 
implements MetricsServic
     totalExpiredSessions = 
metricRegistry.counter(MetricRegistry.name(QueryExecutionService.class, "total-"
         + EXPIRED_SESSIONS));
 
+    totalServerStatePersistenceErrors = 
metricRegistry.counter(MetricRegistry.name(LensServices.class,
+        LensServices.SERVER_STATE_PERSISTENCE_ERRORS));
+
     metricRegistry.register("gc", new GarbageCollectorMetricSet());
     metricRegistry.register("memory", new MemoryUsageGaugeSet());
     metricRegistry.register("threads", new ThreadStatesGaugeSet());
@@ -534,11 +540,16 @@ public class MetricsServiceImpl extends AbstractService 
implements MetricsServic
     return totalExpiredSessions.getCount();
   }
 
+  @Override
+  public long getTotalServerStatePersistenceErrors() {
+    return totalServerStatePersistenceErrors.getCount();
+  }
+
   /*
-   * (non-Javadoc)
-   *
-   * @see org.apache.lens.server.api.metrics.MetricsService#publishReport()
-   */
+     * (non-Javadoc)
+     *
+     * @see org.apache.lens.server.api.metrics.MetricsService#publishReport()
+     */
   @Override
   public void publishReport() {
     if (reporters != null) {

Reply via email to